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