diff options
| author | Julian Andres Klode <jak@debian.org> | 2021-04-29 08:28:08 +0000 |
|---|---|---|
| committer | Julian Andres Klode <jak@debian.org> | 2021-04-29 08:28:08 +0000 |
| commit | a6cb741a2cd1fa132705f8f5644872fc9708fb68 (patch) | |
| tree | 9fa69d08cffef40cbf69e783ff3be4e52ff6f759 /apt-private/private-source.cc | |
| parent | 5d81ec308275b625a20b889fa3daa43815ddc80d (diff) | |
| parent | f90b892e6acc0ca725811ef0dd9be3fed66c444f (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.cc | 15 |
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; } |
