]> git.saurik.com Git - apt.git/blob - apt-private/private-upgrade.cc
Merge branch 'debian/sid' into debian/experimental
[apt.git] / apt-private / private-upgrade.cc
1 // Includes /*{{{*/
2 #include <config.h>
3
4 #include <apt-pkg/upgrade.h>
5 #include <apt-pkg/configuration.h>
6 #include <apt-pkg/error.h>
7
8 #include <apt-private/private-install.h>
9 #include <apt-private/private-cachefile.h>
10 #include <apt-private/private-upgrade.h>
11 #include <apt-private/private-output.h>
12
13 #include <iostream>
14
15 #include <apti18n.h>
16 /*}}}*/
17
18 // this is actually performing the various upgrade operations
19 static bool UpgradeHelper(CommandLine &CmdL, int UpgradeFlags)
20 {
21 CacheFile Cache;
22 if (Cache.OpenForInstall() == false || Cache.CheckDeps() == false)
23 return false;
24
25 c0out << _("Calculating upgrade... ") << std::flush;
26 if(!DoCacheManipulationFromCommandLine(CmdL, Cache, UpgradeFlags))
27 return false;
28 c0out << _("Done") << std::endl;
29
30 return InstallPackages(Cache,true);
31 }
32
33 // DoDistUpgrade - Automatic smart upgrader /*{{{*/
34 // ---------------------------------------------------------------------
35 /* Intelligent upgrader that will install and remove packages at will */
36 bool DoDistUpgrade(CommandLine &CmdL)
37 {
38 return UpgradeHelper(CmdL, 0);
39 }
40 /*}}}*/
41 bool DoUpgrade(CommandLine &CmdL) /*{{{*/
42 {
43 if (_config->FindB("APT::Get::Upgrade-Allow-New", false) == true)
44 return DoUpgradeWithAllowNewPackages(CmdL);
45 else
46 return DoUpgradeNoNewPackages(CmdL);
47 }
48 /*}}}*/
49 // DoUpgradeNoNewPackages - Upgrade all packages /*{{{*/
50 // ---------------------------------------------------------------------
51 /* Upgrade all packages without installing new packages or erasing old
52 packages */
53 bool DoUpgradeNoNewPackages(CommandLine &CmdL)
54 {
55 // Do the upgrade
56 return UpgradeHelper(CmdL,
57 APT::Upgrade::FORBID_REMOVE_PACKAGES|
58 APT::Upgrade::FORBID_INSTALL_NEW_PACKAGES);
59 }
60 /*}}}*/
61 // DoSafeUpgrade - Upgrade all packages with install but not remove /*{{{*/
62 bool DoUpgradeWithAllowNewPackages(CommandLine &CmdL)
63 {
64 return UpgradeHelper(CmdL, APT::Upgrade::FORBID_REMOVE_PACKAGES);
65 }
66 /*}}}*/