2 # This Source Code Form is subject to the terms of the Mozilla Public
3 # License, v. 2.0. If a copy of the MPL was not distributed with this
4 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 from __future__
import print_function
, unicode_literals
12 # Ensure we are running Python 2.7+. We put this check here so we generate a
13 # user-friendly error message rather than a cryptic stack trace on module
15 if sys
.version_info
[0] == 2 and sys
.version_info
[1] < 7:
16 print('Python 2.7 or above is required to run mach.')
17 print('You are running', platform
.python_version())
20 # TODO Bug 794506 Integrate with the in-tree virtualenv configuration.
34 'testing/mozbase/mozprocess',
35 'testing/mozbase/mozfile',
36 'testing/mozbase/mozinfo',
39 # Individual files providing mach commands.
41 'layout/tools/reftest/mach_commands.py',
42 'python/mozboot/mozboot/mach_commands.py',
43 'python/mozbuild/mozbuild/config.py',
44 'python/mozbuild/mozbuild/mach_commands.py',
45 'testing/mochitest/mach_commands.py',
46 'testing/xpcshell/mach_commands.py',
49 our_dir
= os
.path
.dirname(os
.path
.abspath(__file__
))
54 sys
.path
[0:0] = [os
.path
.join(our_dir
, path
) for path
in SEARCH_PATHS
]
58 # All of the code is in a module because EVERYTHING IS A LIBRARY.
59 mach
= mach
.main
.Mach(our_dir
)
61 for path
in MACH_MODULES
:
62 mach
.load_commands_from_file(os
.path
.join(our_dir
, path
))
64 sys
.exit(mach
.run(sys
.argv
[1:]))