From abbe74b2b4690b9138da94d26a7e45ad80a3bf6c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 29 Dec 2016 12:41:23 +0100 Subject: allow default build-essentials to be overridden The config list APT::Build-Essential gets a similar treatment to other lists now by having the value of the option itself be an override for the list allowing to disable build-essentials entirely as well as adding/overriding as usual by now in other lists. Reported-By: Johannes 'josch' Schauer on IRC --- apt-private/private-source.cc | 10 ++---- test/integration/test-apt-get-build-dep | 62 +++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 7 deletions(-) diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc index 5cd0a6628..96344d7ab 100644 --- a/apt-private/private-source.cc +++ b/apt-private/private-source.cc @@ -668,16 +668,12 @@ bool DoBuildDep(CommandLine &CmdL) // deal with the build essentials first { std::vector BuildDeps; - Configuration::Item const *Opts = _config->Tree("APT::Build-Essential"); - if (Opts) - Opts = Opts->Child; - for (; Opts; Opts = Opts->Next) + for (auto && opt: _config->FindVector("APT::Build-Essential")) { - if (Opts->Value.empty() == true) + if (opt.empty()) continue; - pkgSrcRecords::Parser::BuildDepRec rec; - rec.Package = Opts->Value; + rec.Package = std::move(opt); rec.Type = pkgSrcRecords::Parser::BuildDependIndep; rec.Op = 0; BuildDeps.push_back(rec); diff --git a/test/integration/test-apt-get-build-dep b/test/integration/test-apt-get-build-dep index 4fa77961b..403de8f35 100755 --- a/test/integration/test-apt-get-build-dep +++ b/test/integration/test-apt-get-build-dep @@ -8,6 +8,7 @@ setupenvironment configarchitecture 'i386' insertpackage 'stable' 'build-essential' 'i386' '1' +insertpackage 'stable' 'build-essential2' 'i386' '1' insertpackage 'stable' 'build-depends' 'i386' '1' insertpackage 'stable' 'build-depends-arch' 'i386' '1' insertpackage 'stable' 'build-depends-indep' 'i386' '1' @@ -52,6 +53,67 @@ Conf build-depends-arch (1 stable [i386]) Conf build-depends-indep (1 stable [i386]) Conf build-essential (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc +testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies +Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + build-conflicts build-conflicts-arch build-conflicts-indep +The following NEW packages will be installed: + build-depends build-depends-arch build-depends-indep build-essential2 +0 upgraded, 4 newly installed, 3 to remove and 0 not upgraded. +Remv build-conflicts [1] +Remv build-conflicts-arch [1] +Remv build-conflicts-indep [1] +Inst build-depends (1 stable [i386]) +Inst build-depends-arch (1 stable [i386]) +Inst build-depends-indep (1 stable [i386]) +Inst build-essential2 (1 stable [i386]) +Conf build-depends (1 stable [i386]) +Conf build-depends-arch (1 stable [i386]) +Conf build-depends-indep (1 stable [i386]) +Conf build-essential2 (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential="build-essential2" + +testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies +Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + build-conflicts build-conflicts-arch build-conflicts-indep +The following NEW packages will be installed: + build-depends build-depends-arch build-depends-indep +0 upgraded, 3 newly installed, 3 to remove and 0 not upgraded. +Remv build-conflicts [1] +Remv build-conflicts-arch [1] +Remv build-conflicts-indep [1] +Inst build-depends (1 stable [i386]) +Inst build-depends-arch (1 stable [i386]) +Inst build-depends-indep (1 stable [i386]) +Conf build-depends (1 stable [i386]) +Conf build-depends-arch (1 stable [i386]) +Conf build-depends-indep (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential="," + +testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies +Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + build-conflicts build-conflicts-arch build-conflicts-indep +The following NEW packages will be installed: + build-depends build-depends-arch build-depends-indep build-essential + build-essential2 +0 upgraded, 5 newly installed, 3 to remove and 0 not upgraded. +Remv build-conflicts [1] +Remv build-conflicts-arch [1] +Remv build-conflicts-indep [1] +Inst build-depends (1 stable [i386]) +Inst build-depends-arch (1 stable [i386]) +Inst build-depends-indep (1 stable [i386]) +Inst build-essential (1 stable [i386]) +Inst build-essential2 (1 stable [i386]) +Conf build-depends (1 stable [i386]) +Conf build-depends-arch (1 stable [i386]) +Conf build-depends-indep (1 stable [i386]) +Conf build-essential (1 stable [i386]) +Conf build-essential2 (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential::="build-essential2" + testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies Reading package lists... Building dependency tree... -- cgit v1.2.3