--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: [britney2] Port to python-apt 0.8 API
- From: Mehdi Dogguy <mehdi@debian.org>
- Date: Tue, 18 Oct 2011 22:05:31 +0200
- Message-id: <20111018200531.8817.96470.reportbug@einsteinium>
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
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 <mehdi@debian.org>
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
--- End Message ---