Просмотр исходного кода

* apt-pkg/depcache.cc:
- handle "circular" conflicts for "all" packages correctly

David Kalnischkies лет назад: 16
Родитель
Сommit
d3814b27a7
2 измененных файлов с 12 добавлено и 4 удалено
  1. 4 4
      apt-pkg/depcache.cc
  2. 8 0
      debian/changelog

+ 4 - 4
apt-pkg/depcache.cc

@@ -338,7 +338,7 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res)
    /* Check simple depends. A depends -should- never self match but 
       we allow it anyhow because dpkg does. Technically it is a packaging
       bug. Conflicts may never self match */
-   if (Dep.TargetPkg() != Dep.ParentPkg() || 
+   if (Dep.TargetPkg()->Group != Dep.ParentPkg()->Group ||
        (Dep->Type != Dep::Conflicts && Dep->Type != Dep::DpkgBreaks && Dep->Type != Dep::Obsoletes))
    {
       PkgIterator Pkg = Dep.TargetPkg();
@@ -367,9 +367,9 @@ 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 if it is
-         a conflicts. See the comment above. */
-      if (P.OwnerPkg() == Pkg &&
+      /* 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->Type == Dep::Conflicts || Dep->Type == Dep::DpkgBreaks))
 	 continue;
       

+ 8 - 0
debian/changelog

@@ -1,3 +1,11 @@
+apt (0.7.26~exp11) experimental; urgency=low
+
+  [ David Kalnischkies ]
+  * apt-pkg/depcache.cc:
+    - handle "circular" conflicts for "all" packages correctly
+
+ -- David Kalnischkies <kalnischkies@gmail.com>  Wed, 14 Jul 2010 22:58:08 +0200
+
 apt (0.7.26~exp10) experimental; urgency=low
 
   [ David Kalnischkies ]