diff options
Diffstat (limited to 'src/engine/SCons/Sig/__init__.py')
-rw-r--r-- | src/engine/SCons/Sig/__init__.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/engine/SCons/Sig/__init__.py b/src/engine/SCons/Sig/__init__.py index cf7a86f..1832e89 100644 --- a/src/engine/SCons/Sig/__init__.py +++ b/src/engine/SCons/Sig/__init__.py @@ -47,7 +47,7 @@ except ImportError: default_max_drift = 2*24*60*60 #XXX Get rid of the global array so this becomes re-entrant. -sig_files = [] +sig_files = {} # 1 means use build signature for derived source files # 0 means use content signature for derived source files @@ -55,9 +55,18 @@ build_signature = 1 def write(): global sig_files - for sig_file in sig_files: + for sig_file in sig_files.values(): sig_file.write() + +def SConsignFileFactory( dir, module=None): + try: + return sig_files[dir.path] + except KeyError: + sig_files[dir.path] = SConsignFile(dir, module) + return sig_files[dir.path] + + class SConsignEntry: """Objects of this type are pickled to the .sconsign file, so it @@ -110,9 +119,6 @@ class SConsignFile: SCons.Warnings.warn(SCons.Warnings.CorruptSConsignWarning, "Ignoring corrupt .sconsign file: %s"%self.sconsign) - global sig_files - sig_files.append(self) - def get(self, filename): """ Get the .sconsign entry for a file @@ -279,7 +285,7 @@ class Calculator: bsig = cache.get_bsig() if bsig is not None: return bsig - + sigs = map(lambda n, c=self: n.calc_signature(c), children) if node.has_builder(): sigs.append(self.module.signature(node.get_executor())) |