* move upgrade releated code into upgrade.{cc,h}
[ntk/apt.git] / apt-private / private-upgrade.cc
1 // Includes /*{{{*/
2 #include <apt-pkg/algorithms.h>
3 #include <apt-pkg/upgrade.h>
4 #include <iostream>
5 #include "private-install.h"
6 #include "private-cachefile.h"
7 #include "private-upgrade.h"
8 #include "private-output.h"
9 /*}}}*/
10
11 // this is actually performing the various upgrade operations
12 static bool UpgradeHelper(CommandLine &CmdL, int UpgradeFlags)
13 {
14 CacheFile Cache;
15 if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
16 return false;
17
18 c0out << _("Calculating upgrade... ") << std::flush;
19 if (APT::Upgrade::Upgrade(Cache, UpgradeFlags) == false)
20 {
21 c0out << _("Failed") << std::endl;
22 ShowBroken(c1out,Cache,false);
23 return _error->Error(_("Internal error, Upgrade broke stuff"));
24 }
25 c0out << _("Done") << std::endl;
26
27 // parse additional cmdline pkg manipulation switches
28 if(!DoCacheManipulationFromCommandLine(CmdL, Cache))
29 return false;
30
31 return InstallPackages(Cache,true);
32 }
33
34 // DoDistUpgrade - Automatic smart upgrader /*{{{*/
35 // ---------------------------------------------------------------------
36 /* Intelligent upgrader that will install and remove packages at will */
37 bool DoDistUpgrade(CommandLine &CmdL)
38 {
39 return UpgradeHelper(CmdL, 0);
40 }
41 /*}}}*/
42 // DoUpgradeNoNewPackages - Upgrade all packages /*{{{*/
43 // ---------------------------------------------------------------------
44 /* Upgrade all packages without installing new packages or erasing old
45 packages */
46 bool DoUpgradeNoNewPackages(CommandLine &CmdL)
47 {
48 // Do the upgrade
49 return UpgradeHelper(CmdL,
50 APT::Upgrade::FORBID_REMOVE_PACKAGES|
51 APT::Upgrade::FORBID_NEW_INSTALL_PACKAGES);
52 }
53 /*}}}*/
54 // DoSafeUpgrade - Upgrade all packages with install but not remove /*{{{*/
55 bool DoUpgradeWithAllowNewPackages(CommandLine &CmdL)
56 {
57 return UpgradeHelper(CmdL, APT::Upgrade::FORBID_REMOVE_PACKAGES);
58 }
59 /*}}}*/