Bug#679829: britney: breakage of packages on removal of virtual packages
Package: release.debian.org
Severity: normal
Tags: patch
User: release.debian.org@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 <niels@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 <niels@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
Reply to: