summaryrefslogtreecommitdiff
path: root/apt-private/private-source.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2021-04-29 08:28:08 +0000
committerJulian Andres Klode <jak@debian.org>2021-04-29 08:28:08 +0000
commita6cb741a2cd1fa132705f8f5644872fc9708fb68 (patch)
tree9fa69d08cffef40cbf69e783ff3be4e52ff6f759 /apt-private/private-source.cc
parent5d81ec308275b625a20b889fa3daa43815ddc80d (diff)
parentf90b892e6acc0ca725811ef0dd9be3fed66c444f (diff)
Merge branch 'pu/upgradecounter' into 'main'
Count uninstallable packages in "not upgraded" See merge request apt-team/apt!169
Diffstat (limited to 'apt-private/private-source.cc')
-rw-r--r--apt-private/private-source.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc
index 5d1db5a50..def24bd27 100644
--- a/apt-private/private-source.cc
+++ b/apt-private/private-source.cc
@@ -819,6 +819,7 @@ bool DoBuildDep(CommandLine &CmdL)
return false;
pkgProblemResolver Fix(Cache.GetDepCache());
+ APT::PackageSet UpgradablePackages;
APT::PackageVector removeAgain;
{
TryToInstall InstallAction(Cache, &Fix, false);
@@ -843,6 +844,11 @@ bool DoBuildDep(CommandLine &CmdL)
InstallAction(Cache[Pkg].CandidateVerIter(Cache));
removeAgain.push_back(Pkg);
}
+
+ {
+ APT::CacheSetHelper helper;
+ helper.PackageFrom(APT::CacheSetHelper::PATTERN, &UpgradablePackages, Cache, "?upgradable");
+ }
InstallAction.doAutoInstall();
OpTextProgress Progress(*_config);
@@ -882,8 +888,15 @@ bool DoBuildDep(CommandLine &CmdL)
Cache->MarkDelete(pkg, false, 0, true);
}
+ APT::PackageVector HeldBackPackages;
+ SortedPackageUniverse Universe(Cache);
+ for (auto const &Pkg: Universe)
+ if (Pkg->CurrentVer != 0 && not Cache[Pkg].Upgrade() && not Cache[Pkg].Delete() &&
+ UpgradablePackages.find(Pkg) != UpgradablePackages.end())
+ HeldBackPackages.push_back(Pkg);
+
pseudoPkgs.clear();
- if (_error->PendingError() || InstallPackages(Cache, false, true) == false)
+ if (_error->PendingError() || not InstallPackages(Cache, HeldBackPackages, false, true))
return _error->Error(_("Failed to process build dependencies"));
return true;
}