Control: tag -1 confirmed -moreinfo Hello Niels,
Niels Thykier [2016-01-16 14:34 +0000]: > Does this issue still apply to Britney at the current master branch? We > have removed register_reverses in favour of a different approach for > unrelated reasons. Yes, it does still apply. I rebased Ubuntu's britney onto current master, and the test_multiarch_dep() test fails. So I reopened the bug. Current britney uses apt_pkg.parse_depends() which already has an option to strip off multi-arch qualifiers. It just needs to be enabled. Patch attached. Thanks, Martin [1] https://git.launchpad.net/~ubuntu-release/+git/britney2-ubuntu/tree/tests/test_autopkgtest.py#n1233 -- Martin Pitt | http://www.piware.de Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)
From 25871d158f65be94e11d0be564f2547e03f2b113 Mon Sep 17 00:00:00 2001 From: Martin Pitt <martin.p...@ubuntu.com> Date: Tue, 12 Jul 2016 09:21:15 +0200 Subject: [PATCH] Consider packages with M-A qualifiers for reverse dependencies Strip of Multi-Arch qualifiers like ":any" or ":native" when building the dependency fields, as they are not part of the package name. This will fix cases like Package: ipython3 Depends: python3:any (>= 3) and include ipython3 in python3's reverse dependencies. Closes: #794194 --- britney.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/britney.py b/britney.py index e62219a..02f1835 100755 --- a/britney.py +++ b/britney.py @@ -683,10 +683,10 @@ class Britney(object): # We do not differentiate between depends and pre-depends if pkgdata.depends: - depends.extend(apt_pkg.parse_depends(pkgdata.depends, False)) + depends.extend(apt_pkg.parse_depends(pkgdata.depends, True)) if pkgdata.conflicts: - conflicts = apt_pkg.parse_depends(pkgdata.conflicts, False) + conflicts = apt_pkg.parse_depends(pkgdata.conflicts, True) with builder.relation_builder(pkg_id) as relations: @@ -806,7 +806,7 @@ class Britney(object): return sources def _parse_provides(self, pkg_id, provides_raw): - parts = apt_pkg.parse_depends(provides_raw, False) + parts = apt_pkg.parse_depends(provides_raw, True) nprov = [] for or_clause in parts: if len(or_clause) != 1: @@ -1149,7 +1149,7 @@ class Britney(object): is_all_ok = True # for every dependency block (formed as conjunction of disjunction) - for block, block_txt in zip(parse_depends(deps, False), deps.split(',')): + for block, block_txt in zip(parse_depends(deps, True), deps.split(',')): # if the block is satisfied in testing, then skip the block packages = get_dependency_solvers(block, package_t_a) if packages: -- 2.8.1
signature.asc
Description: PGP signature