Fix incorrect time stamp for linked files (Bug 589288) (Anthony Roach)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 5 Aug 2002 03:11:59 +0000 (03:11 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 5 Aug 2002 03:11:59 +0000 (03:11 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@426 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/Node/FS.py
test/BuildDir.py

index dfea21b6e50751f36d54852977d1dfc56f853832..8bdfeb65b23ffb031fb9a80a1e1a1a382a1f19f7 100644 (file)
@@ -49,7 +49,7 @@ except AttributeError:
     import shutil
     import stat
     def file_link(src, dest):
-        shutil.copyfile(src, dest)
+        shutil.copy2(src, dest)
         st=os.stat(src)
         os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
 
index a283ac73251cc53d3bc8a2c6f60ef86a33c1dded..79f0eb02af8356d893615b33431bc202643960bd 100644 (file)
@@ -195,6 +195,22 @@ if f77:
     test.run(program = bar51, stdout = " b1.for\n")
     test.run(program = bar52, stdout = " b2.for\n")
 
+
+import os
+import stat
+def equal_stats(x,y):
+    x = os.stat(x)
+    y = os.stat(y)
+    return (stat.S_IMODE(x[stat.ST_MODE]) == stat.S_IMODE(y[stat.ST_MODE]) and
+            x[stat.ST_ATIME] ==  y[stat.ST_ATIME] and
+            x[stat.ST_MTIME] ==  y[stat.ST_MTIME])
+
+# Make sure we did duplicate the source files in build/var2, and that their stats are the same:
+test.fail_test(not os.path.exists(test.workpath('test', 'build', 'var2', 'f1.c')))
+test.fail_test(not os.path.exists(test.workpath('test', 'build', 'var2', 'f2.in')))
+test.fail_test(not equal_stats(test.workpath('test', 'build', 'var2', 'f1.c'), test.workpath('test', 'src', 'f1.c')))
+test.fail_test(not equal_stats(test.workpath('test', 'build', 'var2', 'f2.in'), test.workpath('test', 'src', 'f2.in')))
+
 # Make sure we didn't duplicate the source files in build/var3.
 test.fail_test(os.path.exists(test.workpath('test', 'build', 'var3', 'f1.c')))
 test.fail_test(os.path.exists(test.workpath('test', 'build', 'var3', 'f2.in')))