extras-buildsys/utils/pushscript MultiLib.py,1.12,1.13
Michael Schwendt (mschwendt)
fedora-extras-commits at redhat.com
Thu Sep 6 12:33:16 UTC 2007
- Previous message (by thread): rpms/gcc/F-7 gcc41-builtin-chk-anticipated.patch, NONE, 1.1 gcc41-builtin-throw.patch, NONE, 1.1 gcc41-builtin-va-arg-pack.patch, NONE, 1.1 gcc41.spec, 1.162, 1.163
- Next message (by thread): rpms/libselinux/devel libselinux-rhat.patch, 1.125, 1.126 libselinux.spec, 1.282, 1.283
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: mschwendt
Update of /cvs/fedora/extras-buildsys/utils/pushscript
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8175
Modified Files:
MultiLib.py
Log Message:
- multi-lib resolver needs to work in testing repos and be
able to copy new multi-lib deps from stable in order to avoid
broken deps
Index: MultiLib.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/utils/pushscript/MultiLib.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- MultiLib.py 8 Mar 2007 12:02:18 -0000 1.12
+++ MultiLib.py 6 Sep 2007 12:33:13 -0000 1.13
@@ -108,12 +108,12 @@
hdr = rpmUtils.miscutils.hdrFromPackage(ts,srpmloc)
excludearch = hdr['excludearch']
except rpmUtils.RpmUtilsError, e: # source rpm not there or bad
- print 'ERROR: %s' % e
+ print 'ERROR: %s' % ''.join(e)
print srpmloc
print 'referenced by: %s' % fname
# TODO: We don't want such builds! Do something about it.
- # Is this case possible at all? Or only during dep resolving
- # and when running into old pkgs?
+ # This is normal for multi-lib, where a test update pulls in
+ # deps from stable as long as it stays in updates-testing.
srcrpm = None
excludearch = []
@@ -172,8 +172,6 @@
self.resolved = {}
self.seenbefore = []
self.needed = {}
- self.needed['rpms'] = []
- self.needed['debug'] = []
def readMetadata(self):
self.doRepoSetup()
@@ -182,18 +180,22 @@
self.repos.populateSack(which=[repo.id], with='filelists')
def addNeededPkg(self,pkg):
+ self.needed.setdefault(pkg.repoid,{})
+ self.needed[pkg.repoid].setdefault('rpms',[])
+ self.needed[pkg.repoid].setdefault('debug',[])
+
(n,a,e,v,r) = pkg.returnPackageTuple()
file = '%s-%s-%s.%s.rpm' % (n,v,r,a)
- if file not in self.needed['rpms']:
- self.needed['rpms'].append(file)
+ if file not in self.needed[pkg.repoid]['rpms']:
+ self.needed[pkg.repoid]['rpms'].append(file)
print ' +', file
binarch = a
srcrpm = pkg.returnSimple('sourcerpm')
(n,v,r,e,a) = rpmUtils.miscutils.splitFilename(srcrpm)
debugrpm = '%s-debuginfo-%s-%s.%s.rpm' % (n,v,r,binarch)
- if debugrpm not in self.needed['debug']:
- self.needed['debug'].append(debugrpm)
+ if debugrpm not in self.needed[pkg.repoid]['debug']:
+ self.needed[pkg.repoid]['debug'].append(debugrpm)
print ' +', debugrpm
def resolveRequires(self,pkg):
@@ -240,15 +242,22 @@
return False
missingdict[targetarch].setdefault('rpms',[])
missingdict[targetarch].setdefault('debug',[])
-
+
+ dotesting = dist.startswith('testing/')
+ testdist = dist
+ if dotesting:
+ dist = dist.replace('testing/','')
+
rs = RepoSupport.RepoSupport(cfg)
conf = rs.GenerateConfig([dist])
repoids = []
srcarch = rpmUtils.arch.getBaseArch( rpmUtils.arch.multilibArches[targetarch][0] )
- # Only look at basearch repo.
a = srcarch
- for r in rs.ReleaseRepoList(dist):
+ repolist = rs.ReleaseRepoList(dist)
+ if dotesting:
+ repolist += rs.TestRepoList(dist)
+ for r in repolist:
if r.find(cfg.project) < 0: # only look at our project's repos
continue
repoids.append(rs.RepoId(r,dist,a))
@@ -256,7 +265,7 @@
# Only look at multicompat packages.
my = Resolver(arch = srcarch, config = conf,
- pushcfg=cfg, dist=dist, targetarch=targetarch)
+ pushcfg=cfg, dist=testdist, targetarch=targetarch)
os.remove(conf)
for repo in my.repos.repos.values():
if repo.id not in repoids:
@@ -278,7 +287,7 @@
Utils.fix_mdcache_access(cfg.rundir,cfg.cachedir)
ts = rpmUtils.transaction.initReadOnlyTransaction()
- compatrepodir = os.path.join(cfg.treedir,dist,srcarch)
+ compatrepodir = os.path.join(cfg.treedir,testdist,srcarch)
for f in missingdict[targetarch]['rpms']:
print f
fpath = os.path.join(compatrepodir,f)
@@ -287,19 +296,41 @@
changed = False
print 'Installing needed packages for %s:' % targetarch
- for f in my.needed['rpms']+missingdict[targetarch]['rpms']:
- srcfile = os.path.join(cfg.treedir,dist,srcarch,f)
- destfile = os.path.join(cfg.treedir,dist,targetarch,f)
+
+ def addrpm(f,src,dest):
+ srcfile = os.path.join(src,f)
+ destfile = os.path.join(dest,f)
+ if not os.path.exists(srcfile):
+ print 'WARNING: missing', srcfile
+ return False
if not os.path.exists(destfile): # silent extra-check
+ print 'Adding:', destfile
Utils.install_link_or_copy(srcfile,destfile)
+ return True
+ else:
+ return False
+
+ destreporoot = os.path.join(cfg.treedir,testdist,targetarch)
+ srcreporoot = os.path.join(cfg.treedir,testdist,srcarch)
+ for f in missingdict[targetarch]['rpms']:
+ if addrpm(f,srcreporoot,destreporoot):
changed = True
- for f in my.needed['debug']:
- srcfile = os.path.join(cfg.treedir,dist,srcarch,'debug',f)
- destfile = os.path.join(cfg.treedir,dist,targetarch,'debug',f)
- if os.path.exists(srcfile):
- if not os.path.exists(destfile): # silent extra-check
- Utils.install_link_or_copy(srcfile,destfile)
+
+ for repoid in my.needed.keys():
+ if repoid.find('testing')<0:
+ # Make available new multi-lib deps from non-testing repo.
+ srcreporoot = os.path.join(cfg.treedir,dist,srcarch)
+ else:
+ srcreporoot = os.path.join(cfg.treedir,testdist,srcarch)
+ for f in my.needed[repoid]['rpms']:
+ if addrpm(f,srcreporoot,destreporoot):
+ changed = True
+ destdebugreporoot = os.path.join(destreporoot,'debug')
+ srcdebugreporoot = os.path.join(srcreporoot,'debug')
+ for f in my.needed[repoid]['debug']:
+ if addrpm(f,srcdebugreporoot,destdebugreporoot):
changed = True
+
print 'done.'
return changed
- Previous message (by thread): rpms/gcc/F-7 gcc41-builtin-chk-anticipated.patch, NONE, 1.1 gcc41-builtin-throw.patch, NONE, 1.1 gcc41-builtin-va-arg-pack.patch, NONE, 1.1 gcc41.spec, 1.162, 1.163
- Next message (by thread): rpms/libselinux/devel libselinux-rhat.patch, 1.125, 1.126 libselinux.spec, 1.282, 1.283
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list