Changes are local to the last 'po' loop.  ERR path is elliminated
with the 'errorfunc' argument to getPackage().  OK path is merged to
checkfunc.
---
 yum/__init__.py |   47 +++++++++++++++++++++++------------------------
 1 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/yum/__init__.py b/yum/__init__.py
index 994a840..dd6bd09 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -90,6 +90,8 @@ import StringIO
 from weakref import proxy as weakref
 
 from urlgrabber.grabber import default_grabber
+try: from urlgrabber.grabber import parallel_wait
+except ImportError: parallel_wait = lambda *x, **y: None
 
 __version__ = '3.4.3'
 __version_info__ = tuple([ int(num) for num in __version__.split('.')])
@@ -2154,14 +2156,14 @@ class YumBase(depsolve.Depsolve):
             len(remote_pkgs) > 1):
             urlgrabber.progress.text_meter_total_size(remote_size)
         beg_download = time.time()
-        i = 0
         local_size = 0
+
+        # check function
         done_repos = set()
         for po in remote_pkgs:
             #  Recheck if the file is there, works around a couple of weird
             # edge cases.
             local = po.localPkg()
-            i += 1
             if os.path.exists(local):
                 if self.verifyPkg(local, po, False):
                     self.verbose_logger.debug(_("using local copy of %s") 
%(po,))
@@ -2173,37 +2175,34 @@ class YumBase(depsolve.Depsolve):
                 if os.path.getsize(local) >= po.size:
                     os.unlink(local)
 
-            checkfunc = (self.verifyPkg, (po, 1), {})
-            try:
-                if i == 1 and not local_size and remote_size == po.size:
-                    text = os.path.basename(po.relativepath)
-                else:
-                    text = '(%s/%s): %s' % (i, len(remote_pkgs),
-                                            os.path.basename(po.relativepath))
-                mylocal = po.repo.getPackage(po,
-                                   checkfunc=checkfunc,
-                                   text=text,
-                                   cache=po.repo.http_caching != 'none',
-                                   )
-                local_size += po.size
-                if hasattr(urlgrabber.progress, 'text_meter_total_size'):
-                    urlgrabber.progress.text_meter_total_size(remote_size,
-                                                              local_size)
+            text = os.path.basename(po.relativepath)
+            cache = po.repo.http_caching != 'none',
+
+            def checkfunc(obj, po=po):
+                self.verifyPkg(obj, po, 1)
                 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)
-                done_repos.add(po.repoid)
-
-            except Errors.RepoError, e:
-                adderror(po, exception2msg(e))
-            else:
-                po.localpath = mylocal
                 if po in errors:
                     del errors[po]
 
+            def errorfunc(msg, po=po):
+                adderror(po, msg)
+
+            po.localpath = po.repo.getPackage(
+                po, text=text, cache=cache,
+                checkfunc=checkfunc,
+                errorfunc=errorfunc,
+            )
+            local_size += po.size
+            if hasattr(urlgrabber.progress, 'text_meter_total_size'):
+                urlgrabber.progress.text_meter_total_size(remote_size, 
local_size)
+        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:
-- 
1.7.4.4

_______________________________________________
Yum-devel mailing list
[email protected]
http://lists.baseurl.org/mailman/listinfo/yum-devel

Reply via email to