[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Fedora Extras packages with broken upgrade paths



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()
        

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]