Make duplicate build dir specifications be an error. (Anthony Roach)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 12 Nov 2003 15:14:47 +0000 (15:14 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 12 Nov 2003 15:14:47 +0000 (15:14 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@846 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Node/FS.py
test/BuildDir-errors.py

index f48c58767878107f36d72e74479a884e37152b34..d4fb53239cf1814c39da33311d89179d8b9e9310 100644 (file)
@@ -1,4 +1,4 @@
-# __COPYRIGHT__
+r __COPYRIGHT__
 # __FILE__ __REVISION__ __DATE__ __DEVELOPER__
 
 
@@ -37,6 +37,11 @@ RELEASE 0.95 - XXX
   - Allow the LIBS construction variable to be a single string or File
     node, not a list, when only one library is needed.
 
+  From Anthony Roach:
+
+  - Supply an error message if the user tries to configure a BuildDir
+    for a directory that already has one.
+
 
 
 RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600
index e7ab14a339a0b7afb8c0349542c01b1406a483c9..9a4fb9760c887f767f3e3aef864def7d72082997 100644 (file)
@@ -792,6 +792,8 @@ class FS:
             raise SCons.Errors.UserError, "Source directory must be under top of build tree."
         if src_dir.is_under(build_dir):
             raise SCons.Errors.UserError, "Source directory cannot be under build directory."
+        if build_dir.srcdir:
+            raise SCons.Errors.UserError, "'%s' already has a source directory: '%s'."%(build_dir, build_dir.srcdir)
         build_dir.link(src_dir, duplicate)
 
     def Repository(self, *dirs):
index ead5056962052e16ffb54b8cc600cdef186cfff6..4941a645d2dca2083f5fdd403f8d162db5dce0b3 100644 (file)
@@ -151,5 +151,22 @@ scons: internal stack trace:
 
 f.close()
 
-#
+# ensure that specifying multiple source directories for one
+# build directory results in an error message, rather
+# than just silently failing.
+test.subdir('duplicate', ['duplicate', 'src1'], ['duplicate', 'src2'])
+test.write(['duplicate', 'SConstruct'], """\
+BuildDir('build', 'src1')
+BuildDir('build', 'src2')
+""")
+
+test.run(chdir = 'duplicate',
+         arguments = ".",
+         status = 2,
+         stderr = None)
+test.fail_test(test.stderr() != """
+scons: *** 'build' already has a source directory: 'src1'.
+File \"SConstruct\", line 2, in ?
+""")
+
 test.pass_test()