Make Alias work with -U, -u, and -D (Anthony Roach)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 24 Apr 2002 16:11:40 +0000 (16:11 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 24 Apr 2002 16:11:40 +0000 (16:11 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@346 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Node/Alias.py
test/option--D.py
test/option--U.py
test/option-u.py

index 41b58992bc108a92c008455bd25c4b8e7e3972fc..ce1051144b45ac452feeebdbe20b030aeb0d633a 100644 (file)
@@ -122,6 +122,8 @@ RELEASE 0.07 -
   - Fixed use of sys.path so Python modules can be imported from
     the SConscript directory.
 
+  - Fix for using Aliases with the -u, -U and -D options.
+
   From Moshe Zadka:
   
   - Changes for official Debian packaging.
index 31f0a9bc8b844557d188becde41db5908e629a23..c6159da96980063e5545c94d7dc15cced22b281f 100644 (file)
@@ -87,6 +87,12 @@ class Alias(SCons.Node.Node):
     def sconsign(self):
         """An Alias is not recorded in .sconsign files"""
         pass
+
+    def is_under(self, dir):
+       # Make Alias nodes get built regardless of 
+       # what directory scons was run from. Alias nodes
+       # are outside the filesystem:
+       return 1
         
 default_ans = AliasNameSpace()
 
index 572cd6582898e4ff21ad5bef4ebce58e6ffbdd78..b1d06b00f4791899c83bf6184b714d89fba78dbc 100644 (file)
@@ -26,6 +26,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
 
 import sys
 import TestSCons
+import os
 
 python = sys.executable
 
@@ -42,8 +43,9 @@ file.close()
 """)
 
 test.write('SConstruct', """
+import SCons.Defaults
 B = Builder(name='B', action='%s build.py $TARGET $SOURCES')
-env = Environment(BUILDERS = [B])
+env = Environment(BUILDERS = [B, SCons.Defaults.Alias])
 env.B(target = 'sub1/foo.out', source = 'sub1/foo.in')
 Export('env')
 SConscript('sub1/SConscript')
@@ -60,8 +62,9 @@ test.write(['sub1', 'foo.in'], "sub1/foo.in")
 
 test.write(['sub2', 'SConscript'], """
 Import('env')
-env.B(target = 'bar.out', source = 'bar.in')
+env.Alias('bar', env.B(target = 'bar.out', source = 'bar.in'))
 Default('.')
+
 """)
 
 test.write(['sub2', 'bar.in'], "sub2/bar.in")
@@ -71,5 +74,15 @@ test.run(arguments = '-D', chdir = 'sub1')
 test.fail_test(test.read(['sub1', 'foo.out']) != "sub1/foo.in")
 test.fail_test(test.read(['sub2', 'bar.out']) != "sub2/bar.in")
 
+test.unlink(['sub1', 'foo.out'])
+test.unlink(['sub2', 'bar.out'])
+
+test.run(arguments = '-D bar', chdir = 'sub1')
+
+test.fail_test(os.path.exists(test.workpath('sub1', 'foo.out')))
+test.fail_test(not os.path.exists(test.workpath('sub2', 'bar.out')))
+
+
+
 test.pass_test()
 
index 128e6c10c96dbd3587f49800eee2a3b3911ed183..7f3e3f2427a2419ca3b080e64ff0bd8e931fe014 100644 (file)
@@ -44,8 +44,9 @@ file.close()
 """)
 
 test.write('SConstruct', """
+import SCons.Defaults
 B = Builder(name='B', action='%s build.py $TARGET $SOURCES')
-env = Environment(BUILDERS = [B])
+env = Environment(BUILDERS = [B, SCons.Defaults.Alias])
 Default(env.B(target = 'sub1/foo.out', source = 'sub1/foo.in'))
 Export('env')
 SConscript('sub2/SConscript')
@@ -57,7 +58,9 @@ Default(env.B(target = 'sub2/xxx.out', source = 'xxx.in'))
 
 test.write(['sub2', 'SConscript'], """
 Import('env')
-Default(env.B(target = 'bar.out', source = 'bar.in'))
+bar = env.B(target = 'bar.out', source = 'bar.in')
+Default(bar)
+env.Alias('bar', bar)
 Default(env.B(target = '../bar.out', source = 'bar.in'))
 """)
 
@@ -106,5 +109,17 @@ test.fail_test(not os.path.exists(test.workpath('sub3', 'baz.out')))
 test.fail_test(os.path.exists(test.workpath('bar.out')))
 test.fail_test(not os.path.exists(test.workpath('sub2/xxx.out')))
 
+test.unlink(['sub1', 'foo.out'])
+test.unlink(['sub3', 'baz.out'])
+test.unlink(['sub2', 'xxx.out'])
+
+test.run(chdir = 'sub3', arguments='-U bar')
+test.fail_test(os.path.exists(test.workpath('sub1', 'foo.out')))
+test.fail_test(not os.path.exists(test.workpath('sub2', 'bar.out')))
+test.fail_test(not os.path.exists(test.workpath('sub2b', 'bar.out')))
+test.fail_test(os.path.exists(test.workpath('sub3', 'baz.out')))
+test.fail_test(os.path.exists(test.workpath('bar.out')))
+test.fail_test(os.path.exists(test.workpath('sub2/xxx.out')))
+
 
 test.pass_test()
index dbeec6ac13f734fda5a6fc6edab1cab036d40b4a..8f23746d17d07e0a3fde1f51d763a2fa70a223d4 100644 (file)
@@ -44,13 +44,14 @@ file.close()
 """)
 
 test.write('SConstruct', """
+import SCons.Defaults
 B = Builder(name='B', action='%s build.py $TARGET $SOURCES')
-env = Environment(BUILDERS = [B])
+env = Environment(BUILDERS = [B, SCons.Defaults.Alias])
 env.B(target = 'sub1/foo.out', source = 'sub1/foo.in')
 Default('.')
 Export('env')
 SConscript('sub2/SConscript')
-env.B(target = 'sub3/baz.out', source = 'sub3/baz.in')
+env.Alias('baz', env.B(target = 'sub3/baz.out', source = 'sub3/baz.in'))
 """ % python)
 
 test.write(['sub2', 'SConscript'], """
@@ -73,5 +74,8 @@ test.run(chdir = 'sub2', arguments = '-u')
 test.fail_test(test.read(['sub2', 'bar.out']) != "sub2/bar.in")
 test.fail_test(os.path.exists(test.workpath('sub3', 'baz.out')))
 
+test.run(chdir = 'sub2', arguments = '-u baz')
+test.fail_test(test.read(['sub3', 'baz.out']) != "sub3/baz.in")
+
 test.pass_test()