summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Util.py
diff options
context:
space:
mode:
authorLudwig Hähne <pankrat@tigris.org>2008-09-28 13:04:03 (GMT)
committerLudwig Hähne <pankrat@tigris.org>2008-09-28 13:04:03 (GMT)
commit6d6e305945b5eec98de19aa5d2c22102951bf6c0 (patch)
tree306318b9af6080b3362ed9dc4b07c0f65704214a /src/engine/SCons/Util.py
parent951c698a7252b2382f126cd2e9eb9c95195f6633 (diff)
downloadSCons-6d6e305945b5eec98de19aa5d2c22102951bf6c0.zip
SCons-6d6e305945b5eec98de19aa5d2c22102951bf6c0.tar.gz
SCons-6d6e305945b5eec98de19aa5d2c22102951bf6c0.tar.bz2
Issue 1646: Block-wise signature computation for large files
Diffstat (limited to 'src/engine/SCons/Util.py')
-rw-r--r--src/engine/SCons/Util.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py
index 3fdc14c..7ea3673 100644
--- a/src/engine/SCons/Util.py
+++ b/src/engine/SCons/Util.py
@@ -1496,6 +1496,12 @@ md5 = False
def MD5signature(s):
return str(s)
+def MD5filesignature(fname, chunksize=65536):
+ f = open(fname, "rb")
+ result = f.read()
+ f.close()
+ return result
+
try:
import hashlib
except ImportError:
@@ -1508,6 +1514,17 @@ else:
m.update(str(s))
return m.hexdigest()
+ def MD5filesignature(fname, chunksize=65536):
+ m = hashlib.md5()
+ f = open(fname, "rb")
+ while 1:
+ blck = f.read(chunksize)
+ if not blck:
+ break
+ m.update(str(blck))
+ f.close()
+ return m.hexdigest()
+
def MD5collect(signatures):
"""
Collects a list of signatures into an aggregate signature.