extras-buildsys/utils/pushscript MultiLib.py,1.19,1.20

Michael Schwendt mschwendt at fedoraproject.org
Fri Nov 14 12:53:37 UTC 2008


Author: mschwendt

Update of /cvs/fedora/extras-buildsys/utils/pushscript
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv31830

Modified Files:
	MultiLib.py 
Log Message:
Modify the multilib selection strategy. For non-arch-specific deps
accept target arch packages. Handle self-requires. Improve the output
during copying/linking of new multilib packages to the target repo.



Index: MultiLib.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/utils/pushscript/MultiLib.py,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- MultiLib.py	12 Nov 2008 17:09:35 -0000	1.19
+++ MultiLib.py	14 Nov 2008 12:53:37 -0000	1.20
@@ -24,6 +24,7 @@
 import yum, yum.Errors
 yumver = yum.__version__
 from yum.packages import YumLocalPackage
+# Note: older Yum doesn't offer yum.__version_info__ for tuple comparison
 if cmp(yumver,'2.9')<0:  # yum < 2.9
     from repomd.packageSack import ListPackageSack
 else:
@@ -67,6 +68,14 @@
     return False # reject by default
 
 
+def pkgtuple(pkg):
+    if cmp(yumver,'2.9.6')<0:  # < 2.9.6
+        (n,a,e,v,r) = pkg.returnPackageTuple()
+    else:
+        (n,a,e,v,r) = pkg.pkgtup
+    return (n,a,e,v,r)
+
+
 def evalPackage(cfg,ts,fname,dist, srpmlocdict):
     # Examine the package, see whether we want it for any of the
     # enabled multilib repositories. Then store the package names
@@ -80,10 +89,7 @@
 
         pkg = YumLocalPackage(ts=ts,filename=fname)
         srcrpm = pkg.tagByName('sourcerpm')
-        if cmp(yumver,'2.9.6')<0:  # < 2.9.6
-            (n,a,e,v,r) = pkg.returnPackageTuple()
-        else:
-            (n,a,e,v,r) = pkg.pkgtup
+        (n,a,e,v,r) = pkgtuple(pkg)
         (sn,sv,sr,se,sa) = rpmUtils.miscutils.splitFilename(srcrpm)
         debugrpm = '%s-debuginfo-%s-%s.%s.rpm' % (sn,sv,sr,a)
 
@@ -192,10 +198,7 @@
         self.needed[pkg.repoid].setdefault('rpms',[])
         self.needed[pkg.repoid].setdefault('debug',[])
         
-        if cmp(yumver,'2.9.6')<0:  # < 2.9.6
-            (n,a,e,v,r) = pkg.returnPackageTuple()
-        else:
-            (n,a,e,v,r) = pkg.pkgtup
+        (n,a,e,v,r) = pkgtuple(pkg)
         file = '%s-%s-%s.%s.rpm' % (n,v,r,a)
         if file not in self.needed[pkg.repoid]['rpms']:
             self.needed[pkg.repoid]['rpms'].append(file)
@@ -230,7 +233,8 @@
             
             results = []
             try:
-                results = [self.returnPackageByDep(dep)]  # best pkg
+                results = self.returnPackagesByDep(dep)
+                results = self.bestPackagesFromList(results,self.targetarch)
             except:
                 pass
             if len(results) < 1:  # unresolved, most likely in Core
@@ -238,11 +242,23 @@
                 continue
 
             self.resolved[dep] = True
+
+            # Prefer self-requires (pkg requires something provided by pkg).
+            insamepkg = False
             for p in results:
-                if isRejectedName(self.pushcfg,self.dist,self.targetarch,p.returnSimple('name')):
-                    continue
-                self.addNeededPkg(p)
-                self.resolveRequires(p)
+                if pkgtuple(p) == pkgtuple(pkg):
+                    insamepkg = True
+                    self.addNeededPkg(pkg)
+                    self.resolveRequires(pkg)
+                    break  # got a provider
+            if insamepkg:
+                continue
+
+            for p in results:
+                if not isRejectedName(self.pushcfg,self.dist,self.targetarch,p.returnSimple('name')):
+                    self.addNeededPkg(p)
+                    self.resolveRequires(p)
+                    break  # got a provider
 
     def log(self, value, msg):
         pass
@@ -318,12 +334,12 @@
         srcfile = os.path.join(src,f)
         destfile = os.path.join(dest,f)
         if not os.path.exists(srcfile):
-            if srcfile.find('-debuginfo-')<0:
-                # Don't warn about missing debuginfo pkgs.
+            if srcfile.find('-debuginfo-')<0: # Don't warn about missing debuginfo pkgs.
                 print 'WARNING: missing', srcfile
             return False
         if not os.path.exists(destfile):  # silent extra-check
-            print '  Adding:', destfile
+            #print '   ', destfile
+            print '   ', os.path.basename(destfile)
             Utils.install_link_or_copy(srcfile,destfile)
             return True
         else:




More information about the fedora-extras-commits mailing list