--- yum/__init__.py | 148 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 75 insertions(+), 73 deletions(-)
diff --git a/yum/__init__.py b/yum/__init__.py index c04b871..ae61274 100644 --- a/yum/__init__.py +++ b/yum/__init__.py @@ -2267,80 +2267,82 @@ much more problems). self.closeRpmDB() self.doUnlock() - remote_pkgs.sort(mediasort) - # This is kind of a hack and does nothing in non-Fedora versions, - # we'll fix it one way or anther soon. - if (hasattr(urlgrabber.progress, 'text_meter_total_size') and - len(remote_pkgs) > 1): - urlgrabber.progress.text_meter_total_size(remote_size) - beg_download = time.time() - i = 0 - local_size = [0] - done_repos = set() - async = hasattr(urlgrabber.grabber, 'parallel_wait') - for po in remote_pkgs: - i += 1 - - def checkfunc(obj, po=po): - self.verifyPkg(obj, po, 1) - local_size[0] += po.size - if hasattr(urlgrabber.progress, 'text_meter_total_size'): - urlgrabber.progress.text_meter_total_size(remote_size, - local_size[0]) - if po in presto.deltas: - presto.rebuild(po, adderror) - return - if po.repoid not in done_repos: - done_repos.add(po.repoid) - # Check a single package per. repo. ... to give a hint to - # the user on big downloads. - result, errmsg = self.sigCheckPkg(po) - if result != 0: - self.verbose_logger.warn("%s", errmsg) - po.localpath = obj.filename - if po in errors: - del errors[po] - - text = os.path.basename(po.relativepath) - kwargs = {} - if async and po.repo._async: - kwargs['failfunc'] = lambda obj, po=po: adderror(po, exception2msg(obj.exception)) - kwargs['async'] = True - elif not (i == 1 and not local_size[0] and remote_size == po.size): - text = '(%s/%s): %s' % (i, len(remote_pkgs), text) - try: - po.repo.getPackage(po, - checkfunc=checkfunc, - text=text, - cache=po.repo.http_caching != 'none', - **kwargs - ) - except Errors.RepoError, e: - adderror(po, exception2msg(e)) - if async: - urlgrabber.grabber.parallel_wait() - - if hasattr(urlgrabber.progress, 'text_meter_total_size'): - urlgrabber.progress.text_meter_total_size(0) - if callback_total is not None and not errors: - callback_total(remote_pkgs, remote_size, beg_download) - - if downloadonly: + if 1: + remote_pkgs.sort(mediasort) + # This is kind of a hack and does nothing in non-Fedora versions, + # we'll fix it one way or anther soon. + if (hasattr(urlgrabber.progress, 'text_meter_total_size') and + len(remote_pkgs) > 1): + urlgrabber.progress.text_meter_total_size(remote_size) + beg_download = time.time() + i = 0 + local_size = [0] + done_repos = set() + async = hasattr(urlgrabber.grabber, 'parallel_wait') for po in remote_pkgs: - rpmfile = po.localpath.rsplit('.', 2)[0] - if po in errors: - # we may throw away partial file here- but we don't lock, - # so can't rename tempfile to rpmfile safely - misc.unlink_f(po.localpath) - - # Note that for file:// repos. urlgrabber won't "download" - # so we have to check that po.localpath exists. - elif os.path.exists(po.localpath): - # verifyPkg() didn't complain, so (potentially) - # overwriting another copy should not be a problem - os.rename(po.localpath, rpmfile) - po.localpath = rpmfile - else: + i += 1 + + def checkfunc(obj, po=po): + self.verifyPkg(obj, po, 1) + local_size[0] += po.size + if hasattr(urlgrabber.progress, 'text_meter_total_size'): + urlgrabber.progress.text_meter_total_size(remote_size, + local_size[0]) + if po in presto.deltas: + presto.rebuild(po, adderror) + return + if po.repoid not in done_repos: + done_repos.add(po.repoid) + # Check a single package per. repo. ... to give a hint to + # the user on big downloads. + result, errmsg = self.sigCheckPkg(po) + if result != 0: + self.verbose_logger.warn("%s", errmsg) + po.localpath = obj.filename + if po in errors: + del errors[po] + + text = os.path.basename(po.relativepath) + kwargs = {} + if async and po.repo._async: + kwargs['failfunc'] = lambda obj, po=po: adderror(po, exception2msg(obj.exception)) + kwargs['async'] = True + elif not (i == 1 and not local_size[0] and remote_size == po.size): + text = '(%s/%s): %s' % (i, len(remote_pkgs), text) + try: + po.repo.getPackage(po, + checkfunc=checkfunc, + text=text, + cache=po.repo.http_caching != 'none', + **kwargs + ) + except Errors.RepoError, e: + adderror(po, exception2msg(e)) + if async: + urlgrabber.grabber.parallel_wait() + + if hasattr(urlgrabber.progress, 'text_meter_total_size'): + urlgrabber.progress.text_meter_total_size(0) + if callback_total is not None and not errors: + callback_total(remote_pkgs, remote_size, beg_download) + + if downloadonly: + for po in remote_pkgs: + rpmfile = po.localpath.rsplit('.', 2)[0] + if po in errors: + # we may throw away partial file here- but we don't lock, + # so can't rename tempfile to rpmfile safely + misc.unlink_f(po.localpath) + + # Note that for file:// repos. urlgrabber won't "download" + # so we have to check that po.localpath exists. + elif os.path.exists(po.localpath): + # verifyPkg() didn't complain, so (potentially) + # overwriting another copy should not be a problem + os.rename(po.localpath, rpmfile) + po.localpath = rpmfile + + if not downloadonly: # XXX: Run unlocked? Skip this for now.. self.plugins.run('postdownload', pkglist=pkglist, errors=errors) -- 1.7.11.7 _______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel