diff options
-rw-r--r-- | apt-private/private-source.cc | 23 | ||||
-rwxr-xr-x | test/integration/test-bug-720597-build-dep-purge | 24 |
2 files changed, 47 insertions, 0 deletions
diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc index 5aaf6f48b..5053c60fc 100644 --- a/apt-private/private-source.cc +++ b/apt-private/private-source.cc @@ -775,8 +775,31 @@ bool DoBuildDep(CommandLine &CmdL) } if (DoAutomaticRemove(Cache) == false) return false; + { pkgDepCache::ActionGroup group(Cache); + if (_config->FindB("APT::Get::Build-Dep-Automatic", false) == false) + { + for (auto const &pkg: removeAgain) + { + auto const instVer = Cache[pkg].InstVerIter(Cache); + if (unlikely(instVer.end() == true)) + continue; + for (auto D = instVer.DependsList(); D.end() != true; ++D) + { + if (D->Type != pkgCache::Dep::Depends || D.IsMultiArchImplicit()) + continue; + APT::VersionList verlist = APT::VersionList::FromDependency(Cache, D, APT::CacheSetHelper::CANDIDATE); + for (auto const &V : verlist) + { + auto const P = V.ParentPkg(); + if (Cache[P].InstallVer != V) + continue; + Cache->MarkAuto(P, false); + } + } + } + } for (auto const &pkg: removeAgain) Cache->MarkDelete(pkg, false, 0, true); } diff --git a/test/integration/test-bug-720597-build-dep-purge b/test/integration/test-bug-720597-build-dep-purge index 5d451f969..c62d54687 100755 --- a/test/integration/test-bug-720597-build-dep-purge +++ b/test/integration/test-bug-720597-build-dep-purge @@ -36,3 +36,27 @@ The following NEW packages will be installed: Purg pkga [1] Inst pkgb (1 stable [amd64]) Conf pkgb (1 stable [amd64])' aptget build-dep pkgc -s --purge + +testsuccessequal 'Reading package lists... +Building dependency tree... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s +testdpkgnotinstalled pkgb +testsuccess apt build-dep pkgc -y -o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgDepCache::Marker=1 +testdpkginstalled pkgb +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s +testsuccess apt purge pkgb pkgc -y +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s +testsuccess apt build-dep pkgc -y -o APT::Get::Build-Dep-Automatic=true +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + pkgb +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +Remv pkgb [1]' apt autoremove -s |