summaryrefslogtreecommitdiff
path: root/dselect/pkgdepcon.cc
diff options
context:
space:
mode:
authorRaphaël Hertzog <hertzog@debian.org>2011-02-21 12:23:19 +0100
committerGuillem Jover <guillem@debian.org>2011-10-30 06:50:08 +0100
commitae61affca427ed53e33eff589af0356b6e951a21 (patch)
treeea261f2e505943bf2f1430db6d53cc252ef864e6 /dselect/pkgdepcon.cc
parent5631564609ec8855cdcab384139ca2e81c2519ce (diff)
downloaddpkg-ae61affca427ed53e33eff589af0356b6e951a21.tar.gz
dpkg: Ignore conflict with one's own virtual package within a package set
It's common for packages to “Provides: foo” and “Conflicts: foo” when taking over another package. This self-conflict is explicitly ignored by dpkg. Now if multiple instances of a “Multi-Arch: same” package do this, it should still be allowed. Update the checks accordingly both in dpkg and in dselect. Sponsored-by: Linaro Limited Signed-off-by: Guillem Jover <guillem@debian.org>
Diffstat (limited to 'dselect/pkgdepcon.cc')
-rw-r--r--dselect/pkgdepcon.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/dselect/pkgdepcon.cc b/dselect/pkgdepcon.cc
index 7262d1916..3408c4924 100644
--- a/dselect/pkgdepcon.cc
+++ b/dselect/pkgdepcon.cc
@@ -404,6 +404,8 @@ packagelist::deppossatisfied(deppossi *possi, perpackagestate **fixbyupgrade)
provider;
provider = provider->rev_next) {
if (provider->up->type == dep_provides &&
+ ((possi->up->type != dep_conflicts && possi->up->type != dep_breaks) ||
+ provider->up->up->set != possi->up->up->set) &&
provider->up->up->clientdata &&
!useavailable(provider->up->up) &&
would_like_to_install(provider->up->up->clientdata->selected,
@@ -414,6 +416,8 @@ packagelist::deppossatisfied(deppossi *possi, perpackagestate **fixbyupgrade)
provider;
provider = provider->rev_next) {
if (provider->up->type != dep_provides ||
+ ((possi->up->type == dep_conflicts || possi->up->type == dep_breaks) &&
+ provider->up->up->set == possi->up->up->set) ||
!provider->up->up->clientdata ||
!would_like_to_install(provider->up->up->clientdata->selected,
provider->up->up))