summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2016-12-29 12:41:23 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2016-12-31 02:29:20 +0100
commitabbe74b2b4690b9138da94d26a7e45ad80a3bf6c (patch)
tree7da19452188d42c6199e5b7453e6a866a31fce36
parent0c646119dea438abb3ee8797994d016ba6834cd2 (diff)
downloadapt-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.cc10
-rwxr-xr-xtest/integration/test-apt-get-build-dep62
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