From a492125465640e6c9dca36b7e70df4a1f3d475a6 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Sat, 18 Jan 2014 16:11:04 -0800 Subject: [PATCH] pym/portage/package/ebuild/fetch.py: Factor out _get_checksum_failure_max_tries The current fetch() function is quite long, which makes it hard to know what I can change without adverse side effects. By pulling this logic out of the main function, we get clearer logic in fetch() and more explicit input for the config extraction. --- pym/portage/package/ebuild/fetch.py | 59 +++++++++++++++++------------ 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/pym/portage/package/ebuild/fetch.py b/pym/portage/package/ebuild/fetch.py index 5316f03fb..6f465728e 100644 --- a/pym/portage/package/ebuild/fetch.py +++ b/pym/portage/package/ebuild/fetch.py @@ -240,6 +240,38 @@ _size_suffix_map = { 'Y' : 80, } + +def _get_checksum_failure_max_tries(settings, default=5): + """ + Get the maximum number of failed download attempts + + Generally, downloading the same file repeatedly from + every single available mirror is a waste of bandwidth + and time, so there needs to be a cap. + """ + v = default + try: + v = int(settings.get("PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS", + default)) + except (ValueError, OverflowError): + writemsg(_("!!! Variable PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS" + " contains non-integer value: '%s'\n") % \ + settings["PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS"], + noiselevel=-1) + writemsg(_("!!! Using PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS " + "default value: %s\n") % default, + noiselevel=-1) + v = default + if v < 1: + writemsg(_("!!! Variable PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS" + " contains value less than 1: '%s'\n") % v, noiselevel=-1) + writemsg(_("!!! Using PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS " + "default value: %s\n") % default, + noiselevel=-1) + v = default + return v + + def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks", use_locks=1, try_mirrors=1, digests=None, allow_missing_digests=True): @@ -263,31 +295,8 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, print(_(">>> \"mirror\" mode desired and \"mirror\" restriction found; skipping fetch.")) return 1 - # Generally, downloading the same file repeatedly from - # every single available mirror is a waste of bandwidth - # and time, so there needs to be a cap. - checksum_failure_max_tries = 5 - v = checksum_failure_max_tries - try: - v = int(mysettings.get("PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS", - checksum_failure_max_tries)) - except (ValueError, OverflowError): - writemsg(_("!!! Variable PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS" - " contains non-integer value: '%s'\n") % \ - mysettings["PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS"], noiselevel=-1) - writemsg(_("!!! Using PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS " - "default value: %s\n") % checksum_failure_max_tries, - noiselevel=-1) - v = checksum_failure_max_tries - if v < 1: - writemsg(_("!!! Variable PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS" - " contains value less than 1: '%s'\n") % v, noiselevel=-1) - writemsg(_("!!! Using PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS " - "default value: %s\n") % checksum_failure_max_tries, - noiselevel=-1) - v = checksum_failure_max_tries - checksum_failure_max_tries = v - del v + checksum_failure_max_tries = _get_checksum_failure_max_tries( + settings=mysettings) fetch_resume_size_default = "350K" fetch_resume_size = mysettings.get("PORTAGE_FETCH_RESUME_MIN_SIZE") -- 2.26.2