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.pitt@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
Attachment:
signature.asc
Description: PGP signature