diff options
author | David Kalnischkies <david@kalnischkies.de> | 2016-12-29 12:41:23 +0100 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2016-12-31 02:29:20 +0100 |
commit | abbe74b2b4690b9138da94d26a7e45ad80a3bf6c (patch) | |
tree | 7da19452188d42c6199e5b7453e6a866a31fce36 | |
parent | 0c646119dea438abb3ee8797994d016ba6834cd2 (diff) | |
download | apt-abbe74b2b4690b9138da94d26a7e45ad80a3bf6c.tar.gz |
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
-rw-r--r-- | apt-private/private-source.cc | 10 | ||||
-rwxr-xr-x | 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<pkgSrcRecords::Parser::BuildDepRec> 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' @@ -56,6 +57,67 @@ 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... +The following packages will be REMOVED: build-conflicts build-conflicts-arch The following NEW packages will be installed: build-depends build-depends-arch build-essential |