diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-07-12 12:48:49 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-07-12 12:48:49 -0700 |
commit | 63e25313d785f40abff3197fe0f3a3eeaa617f7d (patch) | |
tree | 95e5a3ca49c944b905b48bff7234a92b6fe9db40 /pym/portage/package/ebuild/fetch.py | |
parent | 48497bca12ac8b52740681a7a10200f0a58345ea (diff) | |
download | portage-63e25313d785f40abff3197fe0f3a3eeaa617f7d.tar.gz portage-63e25313d785f40abff3197fe0f3a3eeaa617f7d.tar.bz2 portage-63e25313d785f40abff3197fe0f3a3eeaa617f7d.zip |
Skip whirlpool digest check when unaccelerated.
If multiple digests are available and whirlpool is unaccelerated, then
skip it. This allows extreme performance problems like bug #425046 to
be avoided whenever practical, especially for cases like stage builds
where acceleration may not be available for some hashes due to
minimization of dependencies.
Diffstat (limited to 'pym/portage/package/ebuild/fetch.py')
-rw-r--r-- | pym/portage/package/ebuild/fetch.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/pym/portage/package/ebuild/fetch.py b/pym/portage/package/ebuild/fetch.py index b795b2826..60ed04da2 100644 --- a/pym/portage/package/ebuild/fetch.py +++ b/pym/portage/package/ebuild/fetch.py @@ -25,7 +25,8 @@ portage.proxy.lazyimport.lazyimport(globals(), from portage import OrderedDict, os, selinux, shutil, _encodings, \ _shell_quote, _unicode_encode -from portage.checksum import hashfunc_map, perform_md5, verify_all +from portage.checksum import (hashfunc_map, perform_md5, verify_all, + _filter_unaccelarated_hashes) from portage.const import BASH_BINARY, CUSTOM_MIRRORS_FILE, \ GLOBAL_CONFIG_PATH from portage.data import portage_gid, portage_uid, secpass, userpriv_groups @@ -210,6 +211,7 @@ def _check_distfile(filename, digests, eout, show_errors=1): # Zero-byte distfiles are always invalid. return (False, st) else: + digests = _filter_unaccelarated_hashes(digests) if _check_digests(filename, digests, show_errors=show_errors): eout.ebegin("%s %s ;-)" % (os.path.basename(filename), " ".join(sorted(digests)))) @@ -793,8 +795,8 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, eout.eend(0) continue else: - verified_ok, reason = verify_all( - myfile_path, mydigests[myfile]) + digests = _filter_unaccelarated_hashes(mydigests[myfile]) + verified_ok, reason = verify_all(myfile_path, digests) if not verified_ok: writemsg(_("!!! Previously fetched" " file: '%s'\n") % myfile, noiselevel=-1) @@ -816,7 +818,6 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, eout = EOutput() eout.quiet = \ mysettings.get("PORTAGE_QUIET", None) == "1" - digests = mydigests.get(myfile) if digests: digests = list(digests) digests.sort() @@ -1051,7 +1052,8 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, # file NOW, for those users who don't have a stable/continuous # net connection. This way we have a chance to try to download # from another mirror... - verified_ok,reason = verify_all(mysettings["DISTDIR"]+"/"+myfile, mydigests[myfile]) + digests = _filter_unaccelarated_hashes(mydigests[myfile]) + verified_ok, reason = verify_all(myfile_path, digests) if not verified_ok: writemsg(_("!!! Fetched file: %s VERIFY FAILED!\n") % myfile, noiselevel=-1) @@ -1085,7 +1087,6 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, else: eout = EOutput() eout.quiet = mysettings.get("PORTAGE_QUIET", None) == "1" - digests = mydigests.get(myfile) if digests: eout.ebegin("%s %s ;-)" % \ (myfile, " ".join(sorted(digests)))) |