Package a standalone scons-local package.
[scons.git] / src / script / scons.py
index 9929c8f2b66cf61cb4f569fd472dd5ca82e5081c..c66008f378e252f196cdba07e182f2e64ac31bb5 100644 (file)
@@ -2,7 +2,7 @@
 #
 # SCons - a Software Constructor
 #
-# Copyright (c) 2001 Steven Knight
+# Copyright (c) 2001, 2002 Steven Knight
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
 
 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
+__version__ = "__VERSION__"
+
+__build__ = "__BUILD__"
+
+__buildsys__ = "__BUILDSYS__"
+
+__date__ = "__DATE__"
+
+__developer__ = "__DEVELOPER__"
+
 import sys
 import os.path
 import os
@@ -37,19 +47,53 @@ import os
 # followed by generic) so we pick up the right version of the build
 # engine modules if they're in either directory.
 
+script_dir = sys.path[0]
+
+if script_dir in sys.path:
+    sys.path.remove(script_dir)
+
 libs = []
 
 if os.environ.has_key("SCONS_LIB_DIR"):
     libs.append(os.environ["SCONS_LIB_DIR"])
 
+local = 'scons-local-' + __version__
+if script_dir:
+    local = os.path.join(script_dir, local)
+libs.append(local)
+
 if sys.platform == 'win32':
-    libs.extend([ os.path.join(sys.prefix, 'SCons-__VERSION__'),
+    libs.extend([ os.path.join(sys.prefix, 'SCons-%s' % __version__),
                   os.path.join(sys.prefix, 'SCons') ])
 else:
-    libs.extend([ os.path.join(sys.prefix, 'lib', 'scons-__VERSION__'),
-                  os.path.join(sys.prefix, 'lib', 'scons') ])
+    prefs = []
+
+    _bin = os.path.join('', 'bin')
+    _usr = os.path.join('', 'usr')
+    _usr_local = os.path.join('', 'usr', 'local')
+
+    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.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.append(sys.prefix[:-len(_local)])
+        prefs.append(sys.prefix)
+    else:
+        prefs.append(sys.prefix)
+
+    libs.extend(map(lambda x: os.path.join(x, 'lib', 'scons-%s' % __version__), prefs))
+    libs.extend(map(lambda x: os.path.join(x, 'lib', 'scons'), prefs))
 
-sys.path = libs + sys.path[1:]
+sys.path = libs + sys.path
 
 import SCons.Script
 SCons.Script.main()