diff options
-rw-r--r-- | src/CHANGES.txt | 3 | ||||
-rw-r--r-- | src/script/scons.py | 25 |
2 files changed, 24 insertions, 4 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index f567a7a..b0f9fee 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -67,6 +67,9 @@ RELEASE 0.04 - - Only compute a build signature once for each node. + - Changes to our sys.path[] manipulation to support installation into + an arbitrary --prefix value. + From Steve Leblanc: - Add var=value command-line arguments. diff --git a/src/script/scons.py b/src/script/scons.py index c339d00..3490873 100644 --- a/src/script/scons.py +++ b/src/script/scons.py @@ -46,15 +46,32 @@ if sys.platform == 'win32': libs.extend([ os.path.join(sys.prefix, 'SCons-__VERSION__'), os.path.join(sys.prefix, 'SCons') ]) else: + prefs = [] + + _bin = os.path.join('', 'bin') _usr = os.path.join('', 'usr') _usr_local = os.path.join('', 'usr', 'local') + + script_dir = sys.path[0] + + if script_dir == 'bin': + prefs.append(os.getcwd()) + else: + if script_dir == '.' or script_dir == '': + script_dir = os.getcwd() + if script_dir[-len(_bin):] == _bin: + prefs.append(script_dir[:-len(_bin)]) + if sys.prefix[-len(_usr):] == _usr: - prefs = [sys.prefix, os.path.join(sys.prefix, "local")] - elif sys.prefix[-len(_usr_local)] == _usr_local: + prefs.append(sys.prefix) + prefs.append(os.path.join(sys.prefix, "local")) + elif sys.prefix[-len(_usr_local):] == _usr_local: _local = os.path.join('', 'local') - prefs = [sys.prefix[:-len(_local)], sys.prefix] + prefs.append(sys.prefix[:-len(_local)]) + prefs.append(sys.prefix) else: - prefs = [sys.prefix] + prefs.append(sys.prefix) + libs.extend(map(lambda x: os.path.join(x, 'lib', 'scons-__VERSION__'), prefs)) libs.extend(map(lambda x: os.path.join(x, 'lib', 'scons'), prefs)) |