Package: release.debian.org Severity: normal User: [email protected] Usertags: britney
Hi. To be able to run britney2 in wheezy/sid, one has to make it work with python-apt 0.8. Attached a patch that ports britney2 to use python-apt 0.8 new API. This patch has been tested with python2.7. P.S.: This needs patch sent in #622152 in order to run with python2.6+. Kind regards, -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 3.0.0-1-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash
>From 80b12e85cb7ff240fa0c31ebcd8bdb12bceb4c5b Mon Sep 17 00:00:00 2001 From: Mehdi Dogguy <[email protected]> Date: Tue, 18 Oct 2011 22:00:56 +0200 Subject: [PATCH] Port britney2 to pythn-apt 0.8 API --- britney.py | 44 ++++++++++++++++++++++---------------------- 1 files changed, 22 insertions(+), 22 deletions(-) diff --git a/britney.py b/britney.py index 804460d..6565d92 100755 --- a/britney.py +++ b/britney.py @@ -421,7 +421,7 @@ class Britney: get_field = Packages.section.get step = Packages.step except AttributeError, e: - Packages = apt_pkg.ParseTagFile(open(filename)) + Packages = apt_pkg.TagFile(open(filename)) get_field = Packages.Section.get step = Packages.Step while step(): @@ -431,7 +431,7 @@ class Britney: # (in unstable) if some architectures have out-of-date # binaries. We only ever consider the source with the # largest version for migration. - if pkg in sources and apt_pkg.VersionCompare(sources[pkg][0], ver) > 0: + if pkg in sources and apt_pkg.version_compare(sources[pkg][0], ver) > 0: continue sources[pkg] = [ver, get_field('Section'), @@ -455,7 +455,7 @@ class Britney: and saved in the `rdepends' keys, and the `Provides' field is used to populate the virtual packages list. - The dependencies are parsed with the apt.pkg.ParseDepends method, + The dependencies are parsed with the apt.pkg.parse_depends method, and they are stored both as the format of its return value and text. @@ -477,7 +477,7 @@ class Britney: get_field = Packages.section.get step = Packages.step except AttributeError, e: - Packages = apt_pkg.ParseTagFile(open(filename)) + Packages = apt_pkg.TagFile(open(filename)) get_field = Packages.Section.get step = Packages.Step while step(): @@ -488,7 +488,7 @@ class Britney: # (in unstable) if some architectures have out-of-date # binaries. We only ever consider the package with the # largest version for migration. - if pkg in packages and apt_pkg.VersionCompare(packages[pkg][0], version) > 0: + if pkg in packages and apt_pkg.version_compare(packages[pkg][0], version) > 0: continue final_conflicts_list = [] @@ -546,7 +546,7 @@ class Britney: # return a tuple with the list of real and virtual packages return (packages, provides) - def register_reverses(self, pkg, packages, provides, check_doubles=True, parse_depends=apt_pkg.ParseDepends): + def register_reverses(self, pkg, packages, provides, check_doubles=True, parse_depends=apt_pkg.parse_depends): """Register reverse dependencies and conflicts for the specified package This method registers the reverse dependencies and conflicts for @@ -642,7 +642,7 @@ class Britney: for arch in self.options.architectures: if pkg not in self.binaries[dist][arch][0]: continue pkgv = self.binaries[dist][arch][0][pkg][VERSION] - if maxver == None or apt_pkg.VersionCompare(pkgv, maxver) > 0: + if maxver == None or apt_pkg.version_compare(pkgv, maxver) > 0: maxver = pkgv return maxver @@ -744,12 +744,12 @@ class Britney: # if the package exists in testing and it is more recent, do nothing tsrcv = self.sources['testing'].get(l[0], None) - if tsrcv and apt_pkg.VersionCompare(tsrcv[VERSION], l[1]) >= 0: + if tsrcv and apt_pkg.version_compare(tsrcv[VERSION], l[1]) >= 0: continue # if the package doesn't exist in unstable or it is older, do nothing usrcv = self.sources['unstable'].get(l[0], None) - if not usrcv or apt_pkg.VersionCompare(usrcv[VERSION], l[1]) < 0: + if not usrcv or apt_pkg.version_compare(usrcv[VERSION], l[1]) < 0: continue # update the urgency for the package @@ -810,7 +810,7 @@ class Britney: for a, b in hints[x]: if z.has_key(a) and z[a] != b: if x in ['unblock', 'unblock-udeb']: - if apt_pkg.VersionCompare(z[a][0], b[0]) < 0: + if apt_pkg.version_compare(z[a][0], b[0]) < 0: # This hint is for a newer version, so discard the old one self.__log("Overriding %s[%s] = %s with %s" % (x, a, z[a], b), type="W") else: @@ -962,7 +962,7 @@ class Britney: """Find the packages which satisfy a dependency block This method returns the list of packages which satisfy a dependency - block (as returned by apt_pkg.ParseDepends) for the given architecture + block (as returned by apt_pkg.parse_depends) for the given architecture and distribution. It returns a tuple with two items: the first is a boolean which is @@ -981,7 +981,7 @@ class Britney: if name not in excluded and name in binaries[0]: package = binaries[0][name] # check the versioned dependency (if present) - if op == '' and version == '' or apt_pkg.CheckDep(package[VERSION], op, version): + if op == '' and version == '' or apt_pkg.check_dep(package[VERSION], op, version): packages.append(name) # look for the package in the virtual packages list and loop on them @@ -993,7 +993,7 @@ class Britney: # TODO: this is forbidden by the debian policy, which says that versioned # dependencies on virtual packages are never satisfied. The old britney # does it and we have to go with it, but at least a warning should be raised. - if op == '' and version == '' or not strict and apt_pkg.CheckDep(package[VERSION], op, version): + if op == '' and version == '' or not strict and apt_pkg.check_dep(package[VERSION], op, version): packages.append(prov) return (len(packages) > 0, packages) @@ -1013,7 +1013,7 @@ class Britney: binary_u = self.binaries[suite][arch][0][pkg] # local copies for better performances - parse_depends = apt_pkg.ParseDepends + parse_depends = apt_pkg.parse_depends get_dependency_solvers = self.get_dependency_solvers strict = True # not self.options.compatible @@ -1164,7 +1164,7 @@ class Britney: # at this point, the binary package is present in testing, so we can compare # the versions of the packages ... - vcompare = apt_pkg.VersionCompare(binary_t[VERSION], binary_u[VERSION]) + vcompare = apt_pkg.version_compare(binary_t[VERSION], binary_u[VERSION]) # ... if updating would mean downgrading, then stop here: there is something wrong if vcompare > 0: @@ -1223,7 +1223,7 @@ class Britney: if src in self.sources['testing']: source_t = self.sources['testing'][src] # if testing and unstable have the same version, then this is a candidate for binary-NMUs only - if apt_pkg.VersionCompare(source_t[VERSION], source_u[VERSION]) == 0: + if apt_pkg.version_compare(source_t[VERSION], source_u[VERSION]) == 0: return False else: source_t = None @@ -1239,7 +1239,7 @@ class Britney: update_candidate = True # if the version in unstable is older, then stop here with a warning in the excuse and return False - if source_t and apt_pkg.VersionCompare(source_u[VERSION], source_t[VERSION]) < 0: + if source_t and apt_pkg.version_compare(source_u[VERSION], source_t[VERSION]) < 0: excuse.addhtml("ALERT: %s is newer in testing (%s %s)" % (src, source_t[VERSION], source_u[VERSION])) self.excuses.append(excuse) return False @@ -1791,7 +1791,7 @@ class Britney: binary_u = self.binaries[suite][arch][0][pkg] # local copies for better performances - parse_depends = apt_pkg.ParseDepends + parse_depends = apt_pkg.parse_depends get_dependency_solvers = self.get_dependency_solvers # analyze the dependency fields (if present) @@ -1829,8 +1829,8 @@ class Britney: # local copies for better performances binaries = self.binaries['testing'][arch] - parse_depends = apt_pkg.ParseDepends - check_depends = apt_pkg.CheckDep + parse_depends = apt_pkg.parse_depends + check_depends = apt_pkg.check_dep # unregister conflicts, local method to remove conflicts # registered from a given package. @@ -2773,14 +2773,14 @@ class Britney: elif pkg.endswith("_tpu") or pkg.endswith("_pu"): pkg, suite = pkg.rsplit("_") if pkg not in self.sources[suite]: continue - if apt_pkg.VersionCompare(self.sources[suite][pkg][VERSION], v) != 0: + if apt_pkg.version_compare(self.sources[suite][pkg][VERSION], v) != 0: self.output_write(" Version mismatch, %s %s != %s\n" % (pkg, v, self.sources[suite][pkg][VERSION])) ok = False # does the package exist in unstable? elif pkg not in self.sources['unstable']: self.output_write(" Source %s has no version in unstable\n" % pkg) ok = False - elif apt_pkg.VersionCompare(self.sources['unstable'][pkg][VERSION], v) != 0: + elif apt_pkg.version_compare(self.sources['unstable'][pkg][VERSION], v) != 0: self.output_write(" Version mismatch, %s %s != %s\n" % (pkg, v, self.sources['unstable'][pkg][VERSION])) ok = False if not ok: -- 1.7.6.3

