Package: release.debian.org Severity: normal Tags: patch User: release.debian....@packages.debian.org Usertags: britney
Hi, As mentioned on IRC, I believe I found a bug in Britney2. As far as I can tell the bug is only triggered in certain "special" cases. The conditions are: * There must be a real package "R" and a package "V" in testing. * "V" must provide "R". * Another package "P" must have an unversioned dependency on "R" and "R" must be unable to satisfy the relation. (e.g. "R" can conflict with "P"). * Britney must attempt to remove "V". The bug happens because Britney (in register_reverse) does not record providing packages in a package's RDEPENDS if there is a real package for that given dependency. In the example above, Britney will think that "V" has no rdepends. This bug can be seen in the test "basic-uninstallable-deep-breaks-rm-virtual" (in t-unsupported) in britney2-tests. Once I have the bug number I will push a minimal test for this case as well. ~Niels
>From 2b00f6c27c7240546487880c8ffdd39b3a92884b Mon Sep 17 00:00:00 2001 From: Niels Thykier <ni...@thykier.net> Date: Sun, 1 Jul 2012 23:52:48 +0200 Subject: [PATCH] Always include providers of virtual packages in rdepends Signed-off-by: Niels Thykier <ni...@thykier.net> --- britney.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/britney.py b/britney.py index 5205f64..c456460 100755 --- a/britney.py +++ b/britney.py @@ -600,8 +600,8 @@ class Britney(object): # register real packages if a[0] in packages and (not check_doubles or pkg not in packages[a[0]][RDEPENDS]): packages[a[0]][RDEPENDS].append(pkg) - # register packages which provide a virtual package - elif a[0] in provides: + # also register packages which provide a virtual package (if any) + if a[0] in provides: for i in provides.get(a[0]): if i not in packages: continue if not check_doubles or pkg not in packages[i][RDEPENDS]: -- 1.7.10