summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/CHANGES.txt3
-rw-r--r--src/script/scons.py25
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))