Print an error message if a file can't be unlinked before being built, rather than...
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 5 Jun 2002 04:24:06 +0000 (04:24 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 5 Jun 2002 04:24:06 +0000 (04:24 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@382 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Script/__init__.py
test/Install.py

index 0d8e4750beef555c5f07564d421e89f3d492491b..fbe895b1242648d32d917da40f286c1ccfb388d3 100644 (file)
@@ -24,6 +24,10 @@ RELEASE 0.08 -
   - Updated README instructions and setup.py code to catch an
     installation failure from not having distutils installed.
 
+  From Jeff Petkau:
+
+  - Fix --implicit-cache if the scanner returns an empty list.
+
   From Anthony Roach:
 
   - Add a "multi" keyword argument to Builder creation that specifies
@@ -54,9 +58,8 @@ RELEASE 0.08 -
 
   - Added a --debug=time option to print SCons execution times.
 
-  From Jeff Petkau:
-
-  - Fix --implicit-cache if the scanner returns an empty list.
+  - Print an error message if a file can't be unlinked before being
+    built, rather than just silently terminating the build.
 
   From Zed Shaw:
 
index e58d2d02aa377380853ddef4d56681da5951f469..c42a700de55d6465a5b2baad5ae016585bba3fce 100644 (file)
@@ -92,6 +92,9 @@ class BuildTask(SCons.Taskmaster.Task):
                     traceback.print_exception(e.args[0], e.args[1],
                                               e.args[2])
                 raise
+           except:
+               sys.stderr.write("scons: *** %s\n" % sys.exc_value)
+               raise
 
     def executed(self):
         SCons.Taskmaster.Task.executed(self)
index d80be1103f10efb20fd829e54da17eaf754d8747..3a3c2bc59095daea2ddc139af839394c76a0312e 100644 (file)
@@ -31,8 +31,10 @@ import TestSCons
 
 if sys.platform == 'win32':
     _exe = '.exe'
+    _obj = '.obj'
 else:
     _exe = ''
+    _obj = '.o'
 
 test = TestSCons.TestSCons()
 
@@ -93,4 +95,20 @@ test.run(arguments = '.')
 test.fail_test(oldtime1 == os.path.getmtime(foo1))
 test.fail_test(oldtime2 != os.path.getmtime(foo2))
 
+# Verify that scons prints an error message if a target can not be unlinked before
+# building it:
+test.write('f1.c', r"""
+#include <stdio.h>
+
+int main(void)
+{
+   printf("f1.c again again\n");
+   return 0;
+}
+""")
+
+os.chmod(test.workpath('.'), 0555)
+
+test.run(arguments = foo1, stderr="scons: *** [Errno 13] Permission denied: 'f1%s'\n"%_obj, status=2)
+
 test.pass_test()