]> err.no Git - dpkg/commitdiff
Fix some logic errors in dependency-handling code
authorWichert Akkerman <wakkerma@debian.org>
Wed, 13 Oct 1999 16:19:38 +0000 (16:19 +0000)
committerWichert Akkerman <wakkerma@debian.org>
Wed, 13 Oct 1999 16:19:38 +0000 (16:19 +0000)
ChangeLog
main/depcon.c
main/remove.c

index 96e99460f914019dafec58bf44a0ca47856d09b6..e25e02d809b7183c59d0631ee18d74237d8961c8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,8 +2,11 @@ Wed Oct 13 17:51:17 CEST 1999 Wichert Akkerman <wakkerma@debian.org>
 
   * Merge patches from Ben Collins <bcollins@debian.org>:
     + fix windowresizing in dselect
-    + when upgrading check if a file is not also in the new package before removing
-         it, so we don't remove new files due to symlinks confusing us
+    + when upgrading check if a file is not also in the new package before
+         removing it, so we don't remove new files due to symlinks confusing us
+    + fix logic error in checkforremoval: it was breaking cycles in for the
+      wrong package
+    + fix findbreakcycle to remove cycles even for packages we are not changing
 
 Tue Oct 12 17:15:08 CEST 1999 Wichert Akkerman <wakkerma@debian.org>
 
index 06bea47842dfd8be7aae0ca6469569d10fa081c9..d1de502bb5ba1eb32749c5883c6ed0bb9d744486 100644 (file)
@@ -104,10 +104,6 @@ int findbreakcycle(struct pkginfo *pkg, struct cyclesofarlink *sofar) {
   for (dep= pkg->installed.depends; dep; dep= dep->next) {
     if (dep->type != dep_depends && dep->type != dep_predepends) continue;
     for (possi= dep->list; possi; possi= possi->next) {
-      /* We can't have any cycles involving packages we're not trying
-       * to do anything with.
-       */
-      if (possi->ed->clientdata->istobe == itb_normal) continue;
       /* Don't find the same cycles again. */
       if (possi->cyclebreak) continue;
       thislink.possi= possi;
index 166347c28d8699f8290ab1061c92830b401deb1f..e1ad6d36fac1cac0d2354774e555a01016df17cb 100644 (file)
@@ -57,7 +57,7 @@ static void checkforremoval(struct pkginfo *pkgtoremove,
       debug(dbg_depcon,"ignoring depending package `%s'\n",depender->name);
       continue;
     }
-    if (dependtry > 1) { if (findbreakcycle(pkgdepcheck,0)) sincenothing= 0; }
+    if (dependtry > 1) { if (findbreakcycle(pkgtoremove,0)) sincenothing= 0; }
     before= raemsgs->used;
     ok= dependencies_ok(depender,pkgtoremove,raemsgs);
     if (ok == 0 && depender->clientdata->istobe == itb_remove) ok= 1;