summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2012-01-13 09:16:50 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2012-01-13 09:16:50 +0100
commit6bfb4a2b25b576220e0c8bad1ba9479637667e19 (patch)
tree7f73eb0849a74e8217051d956d47780d70eca9dd /apt-pkg
parentd2fd8c8ff72f82db473d4431213032249eee41c3 (diff)
parent88a52816d7626326f94c17a3a8fcde08817b7f2b (diff)
merged from lp:~donkult/apt/experimental
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/depcache.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index 0dbedf323..0f4715fad 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -374,11 +374,17 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res)
PkgIterator Pkg = Dep.ParentPkg();
for (; P.end() != true; ++P)
{
- /* Provides may never be applied against the same package (or group)
- if it is a conflicts. See the comment above. */
- if (P.OwnerPkg()->Group == Pkg->Group && Dep.IsNegative() == true)
- continue;
-
+ if (Dep.IsNegative() == true)
+ {
+ /* Provides may never be applied against the same package (or group)
+ if it is a conflicts. See the comment above. */
+ if (P.OwnerPkg()->Group == Pkg->Group)
+ continue;
+ // Implicit group-conflicts should not be applied on providers of other groups
+ if (Pkg->Group == Dep.TargetPkg()->Group && P.OwnerPkg()->Group != Pkg->Group)
+ continue;
+ }
+
// Check if the provides is a hit
if (Type == NowVersion)
{