diff options
author | Steven Knight <knight@baldmt.com> | 2002-02-14 07:23:47 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-02-14 07:23:47 (GMT) |
commit | 1deb322e0b048071129be8ad595892da3c1ecf48 (patch) | |
tree | 03686408f931d9c55d68e1235d8b3c8a14cdf787 | |
parent | 8358209e2ccdf0f0a86c20e33401e8e26869f6c9 (diff) | |
download | SCons-1deb322e0b048071129be8ad595892da3c1ecf48.zip SCons-1deb322e0b048071129be8ad595892da3c1ecf48.tar.gz SCons-1deb322e0b048071129be8ad595892da3c1ecf48.tar.bz2 |
Fix new .sconsign file write-logic portability to Windows NT.
-rw-r--r-- | SConstruct | 2 | ||||
-rw-r--r-- | src/engine/SCons/Sig/__init__.py | 9 | ||||
-rw-r--r-- | test/sconsign.py | 4 |
3 files changed, 9 insertions, 6 deletions
@@ -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() |