]> git.saurik.com Git - apt.git/blobdiff - apt-private/private-upgrade.cc
rename FORBID_NEW_INSTALL_PACKAGES to FORBID_INSTALL_NEW_PACKAGES
[apt.git] / apt-private / private-upgrade.cc
index eb546e3e3dd6d45268081a2c519e5c1d96e100d0..e76b5d7fc0efd6e29d255050db3db7108c51aa20 100644 (file)
@@ -1,53 +1,59 @@
-
+// Includes                                                            /*{{{*/
 #include <apt-pkg/algorithms.h>
-
+#include <apt-pkg/upgrade.h>
+#include <iostream>
 #include "private-install.h"
 #include "private-cachefile.h"
 #include "private-upgrade.h"
 #include "private-output.h"
+                                                                       /*}}}*/
 
-
-// DoUpgradeNoNewPackages - Upgrade all packages                       /*{{{*/
-// ---------------------------------------------------------------------
-/* Upgrade all packages without installing new packages or erasing old
-   packages */
-bool DoUpgradeNoNewPackages(CommandLine &CmdL)
+// this is actually performing the various upgrade operations 
+static bool UpgradeHelper(CommandLine &CmdL, int UpgradeFlags)
 {
-   if (CmdL.FileSize() != 1)
-      return _error->Error(_("The upgrade command takes no arguments"));
-
    CacheFile Cache;
    if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
       return false;
 
-   // Do the upgrade
-   if (pkgAllUpgrade(Cache) == false)
+   c0out << _("Calculating upgrade... ") << std::flush;
+   if (APT::Upgrade::Upgrade(Cache, UpgradeFlags) == false)
    {
+      c0out << _("Failed") << std::endl;
       ShowBroken(c1out,Cache,false);
-      return _error->Error(_("Internal error, AllUpgrade broke stuff"));
+      return _error->Error(_("Internal error, Upgrade broke stuff"));
    }
+   c0out << _("Done") << std::endl;
+
+   // parse additional cmdline pkg manipulation switches
+   if(!DoCacheManipulationFromCommandLine(CmdL, Cache))
+      return false;
    
    return InstallPackages(Cache,true);
 }
-                                                                       /*}}}*/
 
+// DoDistUpgrade - Automatic smart upgrader                            /*{{{*/
+// ---------------------------------------------------------------------
+/* Intelligent upgrader that will install and remove packages at will */
+bool DoDistUpgrade(CommandLine &CmdL)
+{
+   return UpgradeHelper(CmdL, 0);
+}
+                                                                       /*}}}*/
+// DoUpgradeNoNewPackages - Upgrade all packages                       /*{{{*/
+// ---------------------------------------------------------------------
+/* Upgrade all packages without installing new packages or erasing old
+   packages */
+bool DoUpgradeNoNewPackages(CommandLine &CmdL)
+{
+   // Do the upgrade
+   return UpgradeHelper(CmdL, 
+                        APT::Upgrade::FORBID_REMOVE_PACKAGES|
+                        APT::Upgrade::FORBID_INSTALL_NEW_PACKAGES);
+}
+                                                                       /*}}}*/
 // DoSafeUpgrade - Upgrade all packages with install but not remove    /*{{{*/
 bool DoUpgradeWithAllowNewPackages(CommandLine &CmdL)
 {
-   if (CmdL.FileSize() != 1)
-      return _error->Error(_("The upgrade command takes no arguments"));
-
-   CacheFile Cache;
-   if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
-      return false;
-
-   // Do the upgrade
-   if (pkgAllUpgradeNoDelete(Cache) == false)
-   {
-      ShowBroken(c1out,Cache,false);
-      return _error->Error(_("Internal error, AllUpgrade broke stuff"));
-   }
-   
-   return InstallPackages(Cache,true);
+   return UpgradeHelper(CmdL, APT::Upgrade::FORBID_REMOVE_PACKAGES);
 }
                                                                        /*}}}*/