From 1deb322e0b048071129be8ad595892da3c1ecf48 Mon Sep 17 00:00:00 2001 From: Steven Knight Date: Thu, 14 Feb 2002 07:23:47 +0000 Subject: Fix new .sconsign file write-logic portability to Windows NT. --- SConstruct | 2 +- src/engine/SCons/Sig/__init__.py | 9 ++++++++- test/sconsign.py | 4 ---- 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() -- cgit v0.12