From c97ae2a00f41febb9558b5e6ef08019b93dcefac Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 16 Feb 2016 20:32:28 +0100 Subject: support APT::Get::Build-Dep-Automatic again in build-dep In a249b3e6fd798935a02b769149c9791a6fa6ef16 I dropped with the manual first resolver step also the support for installing build-deps as automatic in such a way that it behaved like this option was enabled by default. Restoring support for it means that we go back to mark build- dependencies as manually installed again by default and provide this option to keep them as automatically installed. --- apt-private/private-source.cc | 23 +++++++++++++++++++++++ test/integration/test-bug-720597-build-dep-purge | 24 ++++++++++++++++++++++++ 2 files changed, 47 insertions(+) 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 -- cgit v1.2.3