X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=site_scons%2Fsite_init.py;h=9c2baacb39458cf91592f5fb31b47a65e35acd3b;hb=5d7f7add811bc8fa87b91653811583f9593aeea2;hp=07ffa2501435b3db9d96343c3c48fbea7c246d24;hpb=84bd150c667e693c7ba6c31819b3f155f53e514a;p=senf.git diff --git a/site_scons/site_init.py b/site_scons/site_init.py index 07ffa25..9c2baac 100644 --- a/site_scons/site_init.py +++ b/site_scons/site_init.py @@ -1,9 +1,11 @@ import os.path, SCons +import inspect # SCons is at #/tools/scons-/engine/SCons/__init__.py # site_init is at #/site_scons/site_init.py -sconsbase = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),"tools") +sconsbase = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath( + inspect.currentframe().f_code.co_filename))),"tools") sconsbase = os.path.join( sconsbase,sorted((f for f in os.listdir(sconsbase) if f.startswith("scons-")))[-1]) sconsengine = os.path.join(sconsbase, 'engine') @@ -29,14 +31,21 @@ if os.path.dirname(os.path.dirname(os.path.abspath(SCons.__file__))) != sconseng frame = sys._getframe() target_top = marker = [] while frame and target_top is marker: - target_top = frame.f_locals.get('target_top',marker) frame = frame.f_back + if frame : target_top = frame.f_locals.get('target_top',marker) if target_top is marker: SCons.Util.display("scons: WARNING: scons -u will probably fail") if not target_top: target_top = '.' + if frame: + cdir = frame.f_locals.get('cdir', '.') # END HACK - + os.chdir(target_top) + cdir = os.path.normpath(cdir) + if cdir.startswith('../'): + SCons.Util.display("scons: WARNING: failed to undo -C option") + elif cdir != '.' and not cdir.startswith('/'): + os.chdir('/'.join(('..' for _ in cdir.split('/')))) os.environ['SCONS_LIB_DIR'] = sconsengine os.execv(sconsscript, sys.argv)