Below is a listing of packages currently in FE where an earlier distro version contains a newer package version than in some newer distro versions. The ugly script and its config used to generate this list are attached, and can be run like "./upgradecheck.py -c fe-sources.conf". The script examines source packages only, and reports problems from the first found problem spot onwards (ie. revisions for old distros that don't have this upgrade problem are not listed). See also https://www.redhat.com/archives/fedora-extras-list/2006-May/msg00083.html which includes instructions how to fix problems in earlier distro versions only without having to rebuild all newer ones. banshee: 5: 0:0.10.9-1..fc5 6: 0:0.10.8-1 cacti: 4: 0:0.8.6h-6.fc4 5: 0:0.8.6h-6 6: 0:0.8.6h-6 fish: 4: 0:1.14.0-1.fc4 5: 0:1.12.0-1.fc5 6: 0:1.12.0-1.fc5 fuse-encfs: 5: 0:1.3.1-1.fc5 6: 0:1.3.0-1.fc6 gcfilms: 5: 0:6.2-1.fc5 6: 0:6.1-2.fc5 gcl: 3: 0:2.6.7-5.fc3 4: 0:2.6.7-4.fc4 5: 0:2.6.7-11.fc5 6: 0:2.6.7-11.fc6 gnome-yum: 5: 0:0.1.3-1.fc5 6: 0:0.1.3-1 gtkglarea2: 3: 0:1.99.0-2.fc3 4: 0:1.99.0-2 5: 0:1.99.0-6.fc5 6: 0:1.99.0-6.fc5 iozone: 3: 0:3-1.fc3 4: 0:3-1 5: 0:3-2.fc5 6: 0:3-2.fc5 istanbul: 5: 0:0.1.1-9.fc5 6: 0:0.1.1-9 kdemultimedia-extras: 5: 6:3.5.2-5.fc5 6: 6:3.5.1-8.fc6 libtranslate: 3: 0:0.99-6.fc3 4: 0:0.99-5.fc4 5: 0:0.99-6.fc5 6: 0:0.99-6.fc6 libxml++: 5: 0:2.14.0-1.fc5 6: 0:2.12.0-2.1.fc5 lilypond: 5: 0:2.8.3-2.fc5 6: 0:2.8.3-1.fc6 mhonarc: 3: 0:2.6.12-1.fc3 4: 0:2.6.11-1.fc4 5: 0:2.6.15-4.fc5 6: 0:2.6.15-4.fc5 multitail: 5: 0:4.0.4-1.fc5 6: 0:4.0.3-1.fc6 nail: 5: 0:12.0-2.fc5 6: 0:12.0-1.fc6 nsd: 3: 0:2.3.4-5.fc3 4: 0:2.3.4-4.fc4 5: 0:2.3.4-4.fc5 6: 0:2.3.4-3.fc6 otrs: 5: 0:2.0.4-3.fc5 6: 0:2.0.4-3 perl-SOAP-Lite: 4: 0:0.67-2.1.fc4 5: 0:0.67-2.fc5 6: 0:0.67-2.fc6 pygame: 5: 0:1.7.1-7.fc5 6: 0:1.7.1-6.fc6 pylint: 5: 0:0.11.0-1.fc5 6: 0:0.10.0-1.fc5 python-astng: 5: 0:0.16.0-0.fc5 6: 0:0.15.1-1.fc5 python-myghty: 5: 0:1.0.1-2.fc5 6: 0:1.0.1-1.fc5 rssowl: 5: 0:1.2.1-2.fc5 6: 0:1.2-12.fc6 scim-qtimm: 3: 0:0.9.4-0.1.fc3 4: 0:0.9.4-0.fc4 5: (missing) 6: (missing) scponly: 5: 0:4.6-3.fc5 6: 0:4.6-1.fc5 stratagus: 5: 0:2.1-6.fc5 6: 0:2.1-5.fc6 utrac: 3: 0:0.3.0-7.fc3 4: 0:0.3.0-6.fc4 5: 0:0.3.0-6.fc5 6: 0:0.3.0-6.fc6 wine-docs: 3: 0:0.9.13-1.fc3 4: 0:0.9.13-0.1.fc4 5: 0:0.9.13-1.fc5 6: 0:0.9.13-1.fc6 xbase: 4: 0:2.0.0-4.fc4 5: 0:2.0.0-3.fc5 6: 0:2.0.0-3.fc5 xbsql: 3: 0:0.11-6.fc3 4: 0:0.11-5.fc4 5: 0:0.11-5.fc5 6: 0:0.11-5.fc5 xfce4-taskmanager: 3: 0:0.3.1-3.fc3 4: 0:0.3.1-2.fc4 5: 0:0.3.1-3.fc5 6: 0:0.3.1-3.fc5 xfce4-weather-plugin: 3: 0:0.4.9-5.fc3 4: 0:0.4.9-4.fc4 5: 0:0.4.9-5.fc5 6: 0:0.4.9-5.fc5
Attachment:
fe-sources.conf
Description: application/cisco-vpn-settings
#!/usr/bin/python -t # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import os import sys import yum import yum.Errors from yum.misc import getCacheDir from optparse import OptionParser from rpmUtils.miscutils import compareEVR def parseArgs(): usage = "usage: %s [-c <config file>] [-a <arch>] [-r <repoid>] [-r <repoid2>]" % sys.argv[0] parser = OptionParser(usage=usage) parser.add_option("-c", "--config", default='/etc/yum.conf', help='config file to use (defaults to /etc/yum.conf)') parser.add_option("-t", "--tempcache", default=False, action="store_true", help="Use a temp dir for storing/accessing yum-cache") parser.add_option("-d", "--cachedir", default='', help="specify a custom directory for storing/accessing yum-cache") parser.add_option("-q", "--quiet", default=0, action="store_true", help="quiet (no output to stderr)") (opts, args) = parser.parse_args() return (opts, args) class MySolver(yum.YumBase): def __init__(self, arch = None, config = "/etc/yum.conf"): yum.YumBase.__init__(self) self.arch = arch self.doConfigSetup(fn = config) if hasattr(self.repos, 'sqlite'): self.repos.sqlite = False self.repos._selectSackType() def readMetadata(self): self.doRepoSetup() self.doSackSetup(("src", )) for repo in self.repos.listEnabled(): self.repos.populateSack(which=[repo.id], with='filelists') def log(self, value, msg): pass def evrstr(evr): return evr and "%s:%s-%s" % evr or "(missing)" def main(): (opts, cruft) = parseArgs() dists = ('3', '4', '5', '6') solvers = {} for dist in dists: solver = MySolver(config = opts.config) for repo in solver.repos.repos.values(): if repo.id not in ("extras-%s-source" % dist, ): repo.disable() else: repo.enable() solvers[dist] = solver if os.geteuid() != 0 or opts.tempcache or opts.cachedir != '': if opts.cachedir != '': cachedir = opts.cachedir else: cachedir = getCacheDir() if cachedir is None: print "Error: Could not make cachedir, exiting" sys.exit(50) for repo in solvers.values(): repo.repos.setCacheDir(cachedir) if not opts.quiet: print 'Reading in repository metadata - please wait....' try: for repo in solvers.values(): repo.readMetadata() except yum.Errors.RepoError, e: print 'Filelists not available for repo: %s' % repo print 'Some dependencies may not be complete for this repository' print 'Run as root to get all dependencies or use -t to enable a user temp cache' pkgdict = {'3':{}, '4':{}, '5':{}, '6':{}, } allnames = [] for dist in dists: for l in solvers[dist].pkgSack.returnNewestByName(): for pkg in l: allnames.append(pkg.name) pkgdict[dist][pkg.name] = (pkg.epoch, pkg.version, pkg.release) allnames = sorted(set(allnames)) for name in allnames: evrs = map(lambda x: pkgdict[x].get(name), dists) last = None # last seen EVR bork = None # index of first repo w/ problem ix = 0 for evr in evrs: if not evr: # missing pass # TODO: detect holes in continuum elif last is None: # first one seen last = evr elif compareEVR(last, evr) > 0: # versioning problem bork = ix - 1 break ix = ix + 1 if bork is not None: ix = bork print name + ":" for evr in evrs[ix:]: # onwards from the problem spot print " %s: %s" % (dists[ix], evrstr(evr)) ix = ix + 1 print if __name__ == "__main__": main()
-- fedora-extras-list mailing list fedora-extras-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/fedora-extras-list