diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2012-01-11 18:05:15 +0100 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2012-01-11 18:05:15 +0100 |
commit | 88a52816d7626326f94c17a3a8fcde08817b7f2b (patch) | |
tree | 48be3d95bf4d726efd9cabcbc98dcd7572114d3f /apt-pkg/depcache.cc | |
parent | f23a94d53e451448b80b6aa5b52b5ba418e508a9 (diff) |
* apt-pkg/depcache.cc:
- implicit conflicts (for multiarch) are supposed to conflict
only with real packages, not with virtual providers
Diffstat (limited to 'apt-pkg/depcache.cc')
-rw-r--r-- | apt-pkg/depcache.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 031fca5c0..3c6dc4325 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) { |