2022-01-04 21:07:32 +00:00
|
|
|
#!/usr/bin/env python3
|
2013-04-04 10:42:28 -04:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
2019-08-27 03:08:08 +00:00
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
2013-04-04 10:42:28 -04:00
|
|
|
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
2019-08-27 03:08:08 +00:00
|
|
|
|
2021-09-03 20:46:21 +00:00
|
|
|
def load_mach(dir_path, mach_path):
|
|
|
|
import importlib.util
|
2021-09-03 20:46:22 +00:00
|
|
|
spec = importlib.util.spec_from_file_location('mach_initialize', mach_path)
|
|
|
|
mach_initialize = importlib.util.module_from_spec(spec)
|
|
|
|
spec.loader.exec_module(mach_initialize)
|
|
|
|
return mach_initialize.initialize(dir_path)
|
2013-04-04 10:42:28 -04:00
|
|
|
|
2014-07-03 07:15:31 +09:00
|
|
|
|
2015-04-24 15:12:50 -04:00
|
|
|
def check_and_get_mach(dir_path):
|
2021-09-03 20:46:22 +00:00
|
|
|
initialize_paths = (
|
2021-11-29 18:34:58 +00:00
|
|
|
# Run Thunderbird's mach_initialize.py if it exists
|
|
|
|
'comm/build/mach_initialize.py',
|
2021-09-03 20:46:22 +00:00
|
|
|
'build/mach_initialize.py',
|
|
|
|
# test package initialize
|
|
|
|
'tools/mach_initialize.py',
|
2015-05-01 12:20:55 -04:00
|
|
|
)
|
2021-09-03 20:46:22 +00:00
|
|
|
for initialize_path in initialize_paths:
|
|
|
|
mach_path = os.path.join(dir_path, initialize_path)
|
2015-05-01 12:20:55 -04:00
|
|
|
if os.path.isfile(mach_path):
|
|
|
|
return load_mach(dir_path, mach_path)
|
2015-04-24 15:12:50 -04:00
|
|
|
return None
|
2014-07-03 07:15:31 +09:00
|
|
|
|
2015-05-01 12:20:55 -04:00
|
|
|
|
2015-04-24 15:12:50 -04:00
|
|
|
def main(args):
|
2021-01-20 16:27:09 +00:00
|
|
|
# XCode python sets __PYVENV_LAUNCHER__, which overrides the executable
|
|
|
|
# used when a python subprocess is created. This is an issue when we want
|
|
|
|
# to run using our virtualenv python executables.
|
|
|
|
# In future Python relases, __PYVENV_LAUNCHER__ will be cleared before
|
|
|
|
# application code (mach) is started.
|
|
|
|
# https://github.com/python/cpython/pull/9516
|
|
|
|
os.environ.pop("__PYVENV_LAUNCHER__", None)
|
|
|
|
|
2021-01-21 01:39:56 +00:00
|
|
|
mach = check_and_get_mach(os.path.dirname(os.path.realpath(__file__)))
|
2015-04-24 15:12:50 -04:00
|
|
|
if not mach:
|
|
|
|
print('Could not run mach: No mach source directory found.')
|
|
|
|
sys.exit(1)
|
|
|
|
sys.exit(mach.run(args))
|
2013-10-11 12:44:15 -07:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2014-07-03 07:15:31 +09:00
|
|
|
main(sys.argv[1:])
|