summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorGary Oberbrunner <garyo@oberbrunner.com>2010-07-04 17:47:05 (GMT)
committerGary Oberbrunner <garyo@oberbrunner.com>2010-07-04 17:47:05 (GMT)
commit18d1302e8531ac99b30fa16615b270d5e751745b (patch)
treeb684687c1e666f7e506cb0227277dcd5bcaa66e5 /src/engine
parent4e1e98a120c8679d5492d308b7061a71dd47408d (diff)
downloadSCons-18d1302e8531ac99b30fa16615b270d5e751745b.zip
SCons-18d1302e8531ac99b30fa16615b270d5e751745b.tar.gz
SCons-18d1302e8531ac99b30fa16615b270d5e751745b.tar.bz2
Set module metadata for site_scons/site_init.py files. From Arve Knudsen; closes issue 2520.
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/Script/Main.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py
index eed782e..b4ebb09 100644
--- a/src/engine/SCons/Script/Main.py
+++ b/src/engine/SCons/Script/Main.py
@@ -688,7 +688,7 @@ def _load_site_scons_dir(topdir, site_dir_name=None):
site_init_file = os.path.join(site_dir, site_init_filename)
site_tools_dir = os.path.join(site_dir, site_tools_dirname)
if os.path.exists(site_init_file):
- import imp
+ import imp, re
# TODO(2.4): turn this into try:-except:-finally:
try:
try:
@@ -707,14 +707,26 @@ def _load_site_scons_dir(topdir, site_dir_name=None):
fmt = 'cannot import site_init.py: missing SCons.Script module %s'
raise SCons.Errors.InternalError(fmt % repr(e))
try:
+ sfx = description[0]
+ modname = os.path.basename(pathname)[:-len(sfx)]
+ site_m = {"__file__": pathname, "__name__": modname, "__doc__": None}
+ re_special = re.compile("__[^_]+__")
+ for k in m.__dict__.keys():
+ if not re_special.match(k):
+ site_m[k] = m.__dict__[k]
+
# This is the magic.
- exec fp in m.__dict__
+ exec fp in site_m
except KeyboardInterrupt:
raise
except Exception, e:
fmt = '*** Error loading site_init file %s:\n'
sys.stderr.write(fmt % repr(site_init_file))
raise
+ else:
+ for k in site_m:
+ if not re_special.match(k):
+ m.__dict__[k] = site_m[k]
except KeyboardInterrupt:
raise
except ImportError, e: