OSDN Git Service

Ensure that package removal requests are correctly scheduled.
authorKeith Marshall <keithmarshall@users.sourceforge.net>
Sun, 15 Apr 2012 20:22:36 +0000 (20:22 +0000)
committerKeith Marshall <keithmarshall@users.sourceforge.net>
Sun, 15 Apr 2012 20:22:36 +0000 (20:22 +0000)
ChangeLog
src/pkgdeps.cpp

index 3353d3a..9bcb471 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2012-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
 
+       Ensure that package removal requests are correctly scheduled.
+
+       * src/pkgdeps.cpp (pkgXmlDocument::Schedule) [ACTION_REMOVE]: Schedule
+       as a distinct case, when the installed version is not the most recent
+       available release; consideration of this distinct case was previously
+       erroneously overlooked.
+
+2012-04-15  Keith Marshall  <keithmarshall@users.sourceforge.net>
+
        Correct scheduling of new prerequisites when upgrading.
 
        * src/pkgdeps.cpp (pkgXmlDocument::ResolveDependencies):
index 49080df..45359c2 100644 (file)
@@ -1028,9 +1028,19 @@ void pkgXmlDocument::Schedule( unsigned long action, const char* name )
            ResolveDependencies( upgrade,
                Schedule( with_download( action ), latest )
              );
-         else
+
+         else if( (action & ACTION_MASK) == ACTION_REMOVE )
          {
-           /* ...but, we decline to proceed with ACTION_INSTALL
+           /* ...while for ACTION_REMOVE, we have little to do,
+            * beyond scheduling the removal; (we don't extend the
+            * scope of a remove request to prerequisite packages,
+            * so there is no need to resolve dependencies)...
+            */
+           latest.SelectPackage( installed );
+           Schedule( action, latest );
+         }
+         else
+         { /* ...but, we decline to proceed with ACTION_INSTALL
             * unless the --reinstall option is enabled...
             */
            if( pkgOptions()->Test( OPTION_REINSTALL ) )