forked from mozilla/gecko-dev
-
Notifications
You must be signed in to change notification settings - Fork 1
/
buildconfig.py
30 lines (25 loc) · 1.09 KB
/
buildconfig.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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/.
import imp
import os
import sys
path = os.path.dirname(sys.executable)
while not os.path.exists(os.path.join(path, 'config.status')):
parent = os.path.normpath(os.path.join(path, os.pardir))
if parent == path:
raise Exception("Can't find config.status")
path = parent
path = os.path.join(path, 'config.status')
config = imp.load_module('_buildconfig', open(path), path, ('', 'r', imp.PY_SOURCE))
# Copy values from the config.status namespace into this module namespace.
# This effectively imports topsrcdir, topobjdir, defines, substs, files,
# headers and non_global_defines
for var in config.__all__:
value = getattr(config, var)
if isinstance(value, list) and value and isinstance(value[0], tuple):
value = dict(value)
setattr(sys.modules[__name__], var, value)
for var in os.environ:
if var != 'SHELL' and var in substs:
substs[var] = os.environ[var]