]> err.no Git - dpkg/commitdiff
Implement 'Breaks' properly in dselect
authorIan Jackson <ian@davenant.greenend.org.uk>
Thu, 1 Nov 2007 20:00:04 +0000 (20:00 +0000)
committerGuillem Jover <guillem@debian.org>
Sun, 9 Mar 2008 06:39:35 +0000 (08:39 +0200)
It works just like Conflicts. This is correct since dselect only deals
with packages being installed, removed or placed on hold.

ChangeLog
debian/changelog
dselect/pkgdepcon.cc

index 927e2e6ec7d0fc1f37c23957c6a9cb60fbfb9ca6..279b6483b57e941d78e77f6032bd4f9d3db61172 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-03-09  Ian Jackson  <ian@davenant.greenend.org.uk>
+
+       * dselect/pkgdepcon.cc (packagelist::resolvedepcon): Move dep_breaks
+       case after dep_conflicts so that it falls through.
+       (packagelist::deppossatisfied): Handle dep_breaks in the same way as
+       dep_conflicts.
+
 2008-03-09  Ian Jackson  <ian@davenant.greenend.org.uk>
 
        * dselect/pkgdepcon.cc (packagelist::deppossatisfied): The new rule
index 49262d24618bc332037fde475553cb5be11eeaa8..7cf926312bf0c385e4e7fd901c4c539b7ae08c33 100644 (file)
@@ -21,6 +21,8 @@ dpkg (1.14.17) UNRELEASED; urgency=low
     Thanks to Sean Finney.
   * Correct broken dselect logic for self-conflicting packages.
     Thanks to Ian Jackson.
+  * Implement 'Breaks' properly in dselect. Closes: #448946
+    Thanks to Ian Jackson.
 
   [ Raphael Hertzog ]
   * Add a warning displayed by dpkg-genchanges if the current version is
index 72232bd8c6c8dfee691c2fb922266503acf661d1..b0d7a3340410f65a78c679cea9ba5eab0dfa709c 100644 (file)
@@ -221,7 +221,6 @@ int packagelist::resolvedepcon(dependency *depends) {
 
   case dep_provides:
   case dep_replaces:
-  case dep_breaks: /* FIXME: implement Breaks */
     return 0;
 
   case dep_enhances:
@@ -312,6 +311,7 @@ int packagelist::resolvedepcon(dependency *depends) {
     return r ? 2 : 0;
     
   case dep_conflicts:
+  case dep_breaks:
 
     if (depdebug && debug)
       fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): conflict\n",
@@ -365,7 +365,7 @@ int packagelist::deppossatisfied(deppossi *possi, perpackagestate **fixbyupgrade
     would= 0;
   }
   
-  if (possi->up->type == dep_conflicts
+  if ((possi->up->type == dep_conflicts || possi->up->type == dep_breaks)
       ? possi->up->up != possi->ed && would != 0
       : would > 0) {
     // If it's to be installed or left installed, then either it's of