[yum-git] yumdownloader.py

Tim Lauridsen timlau at linux.duke.edu
Wed Mar 12 19:26:11 UTC 2008


 yumdownloader.py |   30 +++++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)

New commits:
commit e76f4edb541b0f0e3500849242ac50499f0aa20f
Author: Tim Lauridsen <tim at naboo.local>
Date:   Wed Mar 12 20:26:00 2008 +0100

    make yumdownloader wine\* download all packages starting with wine (rhbz #435096)

diff --git a/yumdownloader.py b/yumdownloader.py
index fc1ee76..8141b48 100755
--- a/yumdownloader.py
+++ b/yumdownloader.py
@@ -156,16 +156,18 @@ class YumDownloader(YumUtilBase):
                     toActOn.extend(src)
                 else:
                     toActOn.append(newpkg)
-    
             if toActOn:
-                if opts.source:
-                    toDownload.extend(self.bestPackagesFromList(toActOn, 'src'))
-                elif opts.archlist:
-                    for arch in opts.archlist.split(','):
-                        toDownload.extend(self.bestPackagesFromList(toActOn, arch))
-                else:
-                    toDownload.extend(self.bestPackagesFromList(toActOn))
-                    
+                pkgGroups = self._groupPackages(toActOn)
+                for group in pkgGroups:
+                    pkgs = pkgGroups[group]
+                    if opts.source:
+                        toDownload.extend(self.bestPackagesFromList(pkgs, 'src'))
+                    elif opts.archlist:
+                        for arch in opts.archlist.split(','):
+                            toDownload.extend(self.bestPackagesFromList(pkgs, arch))
+                    else:
+                        toDownload.extend(self.bestPackagesFromList(pkgs))
+                            
         # If the user supplies to --resolve flag, resolve dependencies for
         # all packages
         # note this might require root access because the headers need to be
@@ -221,6 +223,16 @@ class YumDownloader(YumUtilBase):
                                    size=os.stat(path).st_size)
                     shutil.copy2(path, local)
                     progress.end(progress.size) 
+                    
+    def _groupPackages(self,pkglist):
+        pkgGroups = {}
+        for po in pkglist:
+            na = '%s.%s' % (po.name,po.arch)
+            if not na in pkgGroups:
+                pkgGroups[na] = [po]
+            else:
+                pkgGroups[na].append(po)
+        return pkgGroups
             
     # sligly modified from the one in YumUtilBase    
     def doUtilYumSetup(self,opts):



More information about the Yum-cvs-commits mailing list