diff options
Diffstat (limited to 'src/engine/SCons/Sig')
-rw-r--r-- | src/engine/SCons/Sig/SigTests.py | 36 | ||||
-rw-r--r-- | src/engine/SCons/Sig/__init__.py | 36 |
2 files changed, 15 insertions, 57 deletions
diff --git a/src/engine/SCons/Sig/SigTests.py b/src/engine/SCons/Sig/SigTests.py index f297464..c82d2c5 100644 --- a/src/engine/SCons/Sig/SigTests.py +++ b/src/engine/SCons/Sig/SigTests.py @@ -490,41 +490,6 @@ class SConsignDirFileTestCase(unittest.TestCase): assert f.get('foo') == (3, 1, 2) assert f.get_implicit('foo') == ['bar'] -class SConsignFileTestCase(unittest.TestCase): - - def runTest(self): - test = TestCmd.TestCmd(workdir = '') - file = test.workpath('sconsign_file') - - assert SCons.Sig.SConsign_db is None, SCons.Sig.SConsign_db - - SCons.Sig.SConsignFile(file) - - assert not SCons.Sig.SConsign_db is None, SCons.Sig.SConsign_db - - class Fake_DBM: - def open(self, name, mode): - self.name = name - self.mode = mode - return self - - fake_dbm = Fake_DBM() - - SCons.Sig.SConsignFile(file, fake_dbm) - - assert not SCons.Sig.SConsign_db is None, SCons.Sig.SConsign_db - assert not hasattr(fake_dbm, 'name'), fake_dbm - assert not hasattr(fake_dbm, 'mode'), fake_dbm - - SCons.Sig.SConsign_db = None - - SCons.Sig.SConsignFile(file, fake_dbm) - - assert not SCons.Sig.SConsign_db is None, SCons.Sig.SConsign_db - assert fake_dbm.name == file, fake_dbm.name - assert fake_dbm.mode == "c", fake_dbm.mode - - def suite(): suite = unittest.TestSuite() @@ -535,7 +500,6 @@ def suite(): suite.addTest(_SConsignTestCase()) suite.addTest(SConsignDBTestCase()) suite.addTest(SConsignDirFileTestCase()) - suite.addTest(SConsignFileTestCase()) return suite if __name__ == "__main__": diff --git a/src/engine/SCons/Sig/__init__.py b/src/engine/SCons/Sig/__init__.py index a2ebd5c..298db66 100644 --- a/src/engine/SCons/Sig/__init__.py +++ b/src/engine/SCons/Sig/__init__.py @@ -51,6 +51,10 @@ sig_files = [] SConsign_db = None +# 1 means use build signature for derived source files +# 0 means use content signature for derived source files +build_signature = 1 + def write(): global sig_files for sig_file in sig_files: @@ -117,7 +121,7 @@ class _SConsign: """ try: return self.entries[filename] - except (KeyError, AttributeError): + except: return SConsignEntry() def set_entry(self, filename, entry): @@ -198,8 +202,6 @@ class SConsignDB(_SConsign): if type(self.entries) is not type({}): self.entries = {} raise TypeError - except KeyboardInterrupt: - raise except: SCons.Warnings.warn(SCons.Warnings.CorruptSConsignWarning, "Ignoring corrupt sconsign entry : %s"%self.dir.path) @@ -211,11 +213,7 @@ class SConsignDB(_SConsign): if self.dirty: global SConsign_db SConsign_db[self.dir.path] = cPickle.dumps(self.entries, 1) - try: - SConsign_db.sync() - except AttributeError: - # Not all anydbm modules have sync() methods. - pass + SConsign_db.sync() class SConsignDir(_SConsign): def __init__(self, fp=None, module=None): @@ -246,13 +244,11 @@ class SConsignDirFile(SConsignDir): try: fp = open(self.sconsign, 'rb') - except IOError: + except: fp = None try: SConsignDir.__init__(self, fp, module) - except KeyboardInterrupt: - raise except: SCons.Warnings.warn(SCons.Warnings.CorruptSConsignWarning, "Ignoring corrupt .sconsign file: %s"%self.sconsign) @@ -278,11 +274,11 @@ class SConsignDirFile(SConsignDir): try: file = open(temp, 'wb') fname = temp - except IOError: + except: try: file = open(self.sconsign, 'wb') fname = self.sconsign - except IOError: + except: return cPickle.dump(self.entries, file, 1) file.close() @@ -291,31 +287,29 @@ class SConsignDirFile(SConsignDir): mode = os.stat(self.sconsign)[0] os.chmod(self.sconsign, 0666) os.unlink(self.sconsign) - except OSError: + except: pass try: os.rename(fname, self.sconsign) - except OSError: + except: open(self.sconsign, 'wb').write(open(fname, 'rb').read()) os.chmod(self.sconsign, mode) try: os.unlink(temp) - except OSError: + except: pass SConsignForDirectory = SConsignDirFile -def SConsignFile(name, dbm_module=None): +def SConsignFile(name): """ Arrange for all signatures to be stored in a global .sconsign.dbm file. """ global SConsign_db if SConsign_db is None: - if dbm_module is None: - import anydbm - dbm_module = anydbm - SConsign_db = dbm_module.open(name, "c") + import anydbm + SConsign_db = anydbm.open(name, "c") global SConsignForDirectory SConsignForDirectory = SConsignDB |