Make EXTRAS work for relative directories.
authorSteve Reinhardt <stever@gmail.com>
Sat, 17 Nov 2007 04:10:33 +0000 (20:10 -0800)
committerSteve Reinhardt <stever@gmail.com>
Sat, 17 Nov 2007 04:10:33 +0000 (20:10 -0800)
Also print a little feedback when processing EXTRAS.

--HG--
extra : convert_revision : 9cb324b0d5bc60a3c98af6495f16415b529e4af2

SConstruct
src/SConscript

index c87ac50f56fb86357b9be893c093e0bc03a7a145..38fbe8d4cedbac782a172c3920ce311564d9ae20 100644 (file)
@@ -68,6 +68,8 @@ import os
 
 from os.path import isdir, join as joinpath
 
+import SCons
+
 # Check for recent-enough Python and SCons versions.  If your system's
 # default installation of Python is not recent enough, you can use a
 # non-default installation of the Python interpreter by either (1)
@@ -472,14 +474,19 @@ all_isa_list.sort()
 all_cpu_list.sort()
 default_cpus.sort()
 
-def ExtraPathValidator(key, val, env):
+def PathListMakeAbsolute(val):
+    if not val:
+        return val
+    f = lambda p: os.path.abspath(os.path.expanduser(p))
+    return ':'.join(map(f, val.split(':')))
+
+def PathListAllExist(key, val, env):
     if not val:
         return
     paths = val.split(':')
     for path in paths:
-        path = os.path.expanduser(path)
         if not isdir(path):
-            raise AttributeError, "Invalid path: '%s'" % path
+            raise SCons.Errors.UserError("Path does not exist: '%s'" % path)
 
 sticky_opts.AddOptions(
     EnumOption('TARGET_ISA', 'Target ISA', 'alpha', all_isa_list),
@@ -509,7 +516,7 @@ sticky_opts.AddOptions(
      'Override the default PYTHONHOME for this system (use with caution)',
      '%s:%s' % (sys.prefix, sys.exec_prefix)),
     ('EXTRAS', 'Add Extra directories to the compilation', '',
-     ExtraPathValidator)
+     PathListAllExist, PathListMakeAbsolute)
     )
 
 nonsticky_opts.AddOptions(
index e66a725d39a78c5f3bc09960d4ca24ca7551c2f9..8e6e1b45e7b3c7ab9c1130ead2a65dc2e8ad7da7 100644 (file)
@@ -198,12 +198,12 @@ for root, dirs, files in os.walk(srcdir, topdown=True):
 extra_string = env['EXTRAS']
 if extra_string and extra_string != '' and not extra_string.isspace():
     for extra in extra_string.split(':'):
-        extra = os.path.expanduser(extra)
-        extra = os.path.normpath(extra)
+        print 'Adding', extra, 'to source directory list'
         env.Append(CPPPATH=[Dir(extra)])
         for root, dirs, files in os.walk(extra, topdown=True):
             if 'SConscript' in files:
                 subdir = root[len(os.path.dirname(extra))+1:]
+                print '  Found SConscript in', subdir
                 build_dir = joinpath(env['BUILDDIR'], subdir)
                 SConscript(joinpath(root, 'SConscript'), build_dir=build_dir)