summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-07-31 15:39:37 +0000
committerZac Medico <zmedico@gentoo.org>2006-07-31 15:39:37 +0000
commit7024d936a18a74abf716bc5b0debaa26d3b2dba3 (patch)
tree4df5a461da8734669bd436fec8f76771de1fb8f2
parent63cd6283981b21a9944c84acee5b839c8741c0ed (diff)
downloadportage-7024d936a18a74abf716bc5b0debaa26d3b2dba3.tar.gz
portage-7024d936a18a74abf716bc5b0debaa26d3b2dba3.tar.bz2
portage-7024d936a18a74abf716bc5b0debaa26d3b2dba3.zip
When assume-digests is enabled, for digest generation if the number of parsed digests does not match the number of digest types that are supported for bug #138911. This patch is from trunk r3771:3773.
svn path=/main/branches/2.1/; revision=4058
-rw-r--r--pym/portage.py16
-rw-r--r--pym/portage_manifest.py1
2 files changed, 10 insertions, 7 deletions
diff --git a/pym/portage.py b/pym/portage.py
index dad2583bc..a98fc883d 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -2925,13 +2925,15 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
fetchme = alluris[:]
checkme = aalist[:]
# Skip files that we already have digests for.
- mydigests = Manifest(
- mysettings["O"], mysettings["DISTDIR"]).getTypeDigests("DIST")
- for x in mydigests:
- while x in checkme:
- i = checkme.index(x)
- del fetchme[i]
- del checkme[i]
+ mf = Manifest(mysettings["O"], mysettings["DISTDIR"])
+ mydigests = mf.getTypeDigests("DIST")
+ for filename, hashes in mydigests.iteritems():
+ if len(hashes) == len(mf.hashes):
+ while filename in checkme:
+ i = checkme.index(filename)
+ del fetchme[i]
+ del checkme[i]
+ del filename, hashes
else:
fetchme=newuris[:]
checkme=alist[:]
diff --git a/pym/portage_manifest.py b/pym/portage_manifest.py
index 13c6932d2..ee9b4b833 100644
--- a/pym/portage_manifest.py
+++ b/pym/portage_manifest.py
@@ -459,6 +459,7 @@ class Manifest(object):
((assumeDistHashesSometimes and mystat is None) or \
(assumeDistHashesAlways and mystat is None) or \
(assumeDistHashesAlways and mystat is not None and \
+ len(distfilehashes[f]) == len(self.hashes) and \
distfilehashes[f]["size"] == mystat.st_size)):
self.fhashdict["DIST"][f] = distfilehashes[f]
else: