Make SCons version-switching hack more robust
[senf.git] / site_scons / site_init.py
1 import os.path, SCons
2
3 # SCons is at     #/scons/scons-<v>/engine/SCons/__init__.py
4 # site_init is at #/site_scons/site_init.py
5
6 sconsbase = os.path.join(os.path.dirname(os.path.dirname(__file__)),"scons")
7 sconsbase = os.path.abspath(os.path.join(sconsbase, sorted(os.listdir(sconsbase))[-1]))
8 sconsengine = os.path.join(sconsbase, 'engine')
9 sconsscript = os.path.join(os.path.join(sconsbase, 'script'),'scons')
10
11 if os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(SCons.__file__)))) != sconsbase:
12     import os, sys, SCons.Util
13     SCons.Util.display("scons: Switching version")
14     frame = sys._getframe()
15     marker = []
16     target_top = marker
17     while frame and target_top is marker:
18         target_top = frame.f_locals.get('target_top',marker)
19         frame = frame.f_back
20     if target_top is marker:
21         SCons.Util.display("scons: WARNING: scons -u will fail")
22     elif target_top is not None:
23         os.chdir(target_top)
24     os.environ['SCONS_LIB_DIR'] = sconsengine
25     os.execv(sconsscript, sys.argv)