Synchronize required hash code in all relevant places.
authorZac Medico <zmedico@gentoo.org>
Wed, 7 Feb 2007 23:40:25 +0000 (23:40 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 7 Feb 2007 23:40:25 +0000 (23:40 -0000)
svn path=/main/trunk/; revision=5924

pym/portage/__init__.py
pym/portage/manifest.py

index 1bcc0fafff23461135271b7bbc5a9b4fbd48b7f8..45914dbe244f2f31b09b4d706a3215f70f23ac54 100644 (file)
@@ -2712,10 +2712,9 @@ def digestgen(myarchives, mysettings, overwrite=1, manifestonly=0, myportdb=None
                # fetches when sufficient digests already exist.  To ease transition
                # while Manifest 1 is being removed, only require hashes that will
                # exist before and after the transition.
-               required_hash_types = set(portage.const.MANIFEST1_HASH_FUNCTIONS
-                       ).intersection(portage.const.MANIFEST2_HASH_FUNCTIONS)
-               required_hash_types.add(portage.const.MANIFEST2_REQUIRED_HASH)
+               required_hash_types = set()
                required_hash_types.add("size")
+               required_hash_types.add(portage.const.MANIFEST2_REQUIRED_HASH)
                dist_hashes = mf.fhashdict.get("DIST", {})
                missing_hashes = set()
                for myfile in distfiles_map:
@@ -3581,8 +3580,11 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
                        # Skip files that we already have digests for.
                        mf = Manifest(mysettings["O"], mysettings["DISTDIR"])
                        mydigests = mf.getTypeDigests("DIST")
+                       required_hash_types = set()
+                       required_hash_types.add("size")
+                       required_hash_types.add(portage.const.MANIFEST2_REQUIRED_HASH)
                        for filename, hashes in mydigests.iteritems():
-                               if len(hashes) == len(mf.hashes):
+                               if not required_hash_types.difference(hashes):
                                        checkme = [i for i in checkme if i != filename]
                                        fetchme = [i for i in fetchme \
                                                if os.path.basename(i) != filename]
index 08ac13932b25ebb53f89ac1e28de6d63a6124315..732d403f8ef92dfd6672ac0ac9742647d47b44e2 100644 (file)
@@ -473,6 +473,9 @@ class Manifest(object):
                        # repoman passes in an empty list, which implies that all distfiles
                        # are required.
                        requiredDistfiles = distlist.copy()
+               required_hash_types = set()
+               required_hash_types.add("size")
+               required_hash_types.add(portage.const.MANIFEST2_REQUIRED_HASH)
                for f in distlist:
                        fname = os.path.join(self.distdir, f)
                        mystat = None
@@ -486,7 +489,7 @@ class Manifest(object):
                                (assumeDistHashesAlways and mystat is not None and \
                                len(distfilehashes[f]) == len(self.hashes) and \
                                distfilehashes[f]["size"] == mystat.st_size)) and \
-                               portage.const.MANIFEST2_REQUIRED_HASH in distfilehashes[f].keys():
+                               not required_hash_types.difference(distfilehashes[f]):
                                self.fhashdict["DIST"][f] = distfilehashes[f]
                        else:
                                try: