summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-02-14 07:23:47 (GMT)
committerSteven Knight <knight@baldmt.com>2002-02-14 07:23:47 (GMT)
commit1deb322e0b048071129be8ad595892da3c1ecf48 (patch)
tree03686408f931d9c55d68e1235d8b3c8a14cdf787
parent8358209e2ccdf0f0a86c20e33401e8e26869f6c9 (diff)
downloadSCons-1deb322e0b048071129be8ad595892da3c1ecf48.zip
SCons-1deb322e0b048071129be8ad595892da3c1ecf48.tar.gz
SCons-1deb322e0b048071129be8ad595892da3c1ecf48.tar.bz2
Fix new .sconsign file write-logic portability to Windows NT.
-rw-r--r--SConstruct2
-rw-r--r--src/engine/SCons/Sig/__init__.py9
-rw-r--r--test/sconsign.py4
3 files changed, 9 insertions, 6 deletions
diff --git a/SConstruct b/SConstruct
index b47bca6..b8dd4be 100644
--- a/SConstruct
+++ b/SConstruct
@@ -599,7 +599,7 @@ if change:
"rm -rf %s" % b_psv,
"cp -rp %s %s" % (b_ps, b_psv),
"find %s -name .consign -exec rm {} \\;" % b_psv,
- "tar zcf $TARGET -C build %s" % psv,
+ "tar czh -f $TARGET -C build %s" % psv,
]
env.Command(os.path.join('build',
'dist',
diff --git a/src/engine/SCons/Sig/__init__.py b/src/engine/SCons/Sig/__init__.py
index a85019a..cedeb94 100644
--- a/src/engine/SCons/Sig/__init__.py
+++ b/src/engine/SCons/Sig/__init__.py
@@ -137,12 +137,19 @@ class SConsignFile:
keys.sort()
for name in keys:
file.write("%s: %s\n" % (name, self.entries[name]))
- file.close
+ file.close()
if fname != self.sconsign:
try:
+ mode = os.stat(self.sconsign)[0]
+ os.chmod(self.sconsign, 0666)
+ os.unlink(self.sconsign)
+ except:
+ pass
+ try:
os.rename(fname, self.sconsign)
except:
open(self.sconsign, 'wb').write(open(fname, 'rb').read())
+ os.chmod(self.sconsign, mode)
try:
os.unlink(temp)
except:
diff --git a/test/sconsign.py b/test/sconsign.py
index ac6bf2f..396c399 100644
--- a/test/sconsign.py
+++ b/test/sconsign.py
@@ -59,10 +59,7 @@ sub2__sconsign = test.workpath('sub2', '.sconsign')
test.write(sub1__sconsign, "")
test.write(sub2__sconsign, "")
-# For *NIX systems, make .sconsign not writable.
-# For Win32 systems, open it to lock it.
os.chmod(sub1__sconsign, 0444)
-f = open(sub1__sconsign, 'r')
test.run(arguments = '.')
@@ -70,6 +67,5 @@ test.fail_test(test.read(sub1__sconsign) == "")
test.fail_test(test.read(sub2__sconsign) == "")
os.chmod(sub1__sconsign, 0666)
-f.close()
test.pass_test()