return Fix.Resolve();
}
/*}}}*/
-// AllUpgrade - Upgrade as many packages as possible /*{{{*/
-// ---------------------------------------------------------------------
-/* Right now the system must be consistent before this can be called.
- It also will not change packages marked for install, it only tries
- to install packages not marked for install */
-bool pkgAllUpgrade(pkgDepCache &Cache)
+// AllUpgradeNoNewPackages - Upgrade but no removals or new pkgs /*{{{*/
+bool pkgAllUpgradeNoNewPackages(pkgDepCache &Cache)
{
std::string const solver = _config->Find("APT::Solver", "internal");
if (solver != "internal") {
return Fix.ResolveByKeep();
}
/*}}}*/
-// AllUpgradeNoDelete - Upgrade without removing packages /*{{{*/
+// AllUpgradeWithNewInstalls - Upgrade + install new packages as needed /*{{{*/
// ---------------------------------------------------------------------
/* Right now the system must be consistent before this can be called.
* Upgrade as much as possible without deleting anything (useful for
* stable systems)
*/
-bool pkgAllUpgradeNoDelete(pkgDepCache &Cache)
+bool pkgAllUpgradeWithNewPackages(pkgDepCache &Cache)
{
pkgDepCache::ActionGroup group(Cache);
return Fix.ResolveByKeep();
}
/*}}}*/
+// AllUpgrade - Upgrade as many packages as possible /*{{{*/
+// ---------------------------------------------------------------------
+/* Right now the system must be consistent before this can be called.
+ It also will not change packages marked for install, it only tries
+ to install packages not marked for install */
+bool pkgAllUpgrade(pkgDepCache &Cache)
+{
+ return pkgAllUpgradeNoNewPackages(Cache);
+}
+ /*}}}*/
// MinimizeUpgrade - Minimizes the set of packages to be upgraded /*{{{*/
// ---------------------------------------------------------------------
/* This simply goes over the entire set of packages and tries to keep
return true;
}
/*}}}*/
+// APT::Upgrade::Upgrade - Upgrade using a specific strategy /*{{{*/
+bool APT::Upgrade::Upgrade(pkgDepCache &Cache, APT::Upgrade::UpgradeMode mode)
+{
+ switch(mode) {
+ case APT::Upgrade::NO_INSTALL_OR_REMOVE:
+ return pkgAllUpgradeNoNewPackages(Cache);
+ case APT::Upgrade::ALLOW_NEW_INSTALLS:
+ return pkgAllUpgradeWithNewPackages(Cache);
+ case APT::Upgrade::ALLOW_REMOVAL_AND_NEW_INSTALLS:
+ return pkgDistUpgrade(Cache);
+ default:
+ _error->Error("pkgAllUpgrade called with unknwon mode %i", mode);
+ }
+ return false;
+}
+ /*}}}*/
// ProblemResolver::pkgProblemResolver - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
class pkgAcquireStatus;
+namespace APT {
+ namespace Upgrade {
+ enum UpgradeMode {NO_INSTALL_OR_REMOVE,
+ ALLOW_NEW_INSTALLS,
+ ALLOW_REMOVAL_AND_NEW_INSTALLS};
+ bool Upgrade(pkgDepCache &Cache, UpgradeMode mode);
+ }
+}
+
class pkgSimulate : public pkgPackageManager /*{{{*/
{
protected:
/*}}}*/
class pkgProblemResolver /*{{{*/
{
+ private:
/** \brief dpointer placeholder (for later in case we need it) */
void *d;
bool pkgAllUpgrade(pkgDepCache &Cache);
-bool pkgAllUpgradeNoDelete(pkgDepCache &Cache);
-
bool pkgMinimizeUpgrade(pkgDepCache &Cache);
void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List);