summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmdline/apt-get.cc4
-rw-r--r--debian/changelog4
-rwxr-xr-xtest/integration/test-bug-683786-build-dep-on-virtual-packages44
3 files changed, 50 insertions, 2 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index d4c7f420..b433a791 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -3004,7 +3004,7 @@ bool DoBuildDep(CommandLine &CmdL)
else
Pkg = Cache->FindPkg(D->Package);
- if (Pkg.end() == true)
+ if (Pkg.end() == true || Pkg->VersionList == 0)
{
if (_config->FindB("Debug::BuildDeps",false) == true)
cout << " (not found)" << (*D).Package << endl;
@@ -3087,7 +3087,7 @@ bool DoBuildDep(CommandLine &CmdL)
}
}
- if (TryToInstallBuildDep(Pkg,Cache,Fix,false,false) == true)
+ if (TryToInstallBuildDep(Pkg,Cache,Fix,false,false,false) == true)
{
// We successfully installed something; skip remaining alternatives
skipAlternatives = hasAlternatives;
diff --git a/debian/changelog b/debian/changelog
index 5218ff0c..18b7c6a2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -16,6 +16,10 @@ apt (0.9.7.4) UNRELEASED; urgency=low
* apt-pkg/contrib/fileutl.cc:
- remove _POSIX_SYNCHRONIZED_IO guard in FileFd::Sync() around fsync
as this guard is only needed for fdatasync and not defined on hurd
+ * cmdline/apt-get.cc:
+ - error out on (unsatisfiable) build-deps on purly virtual packages
+ instead of ignoring these dependencies; thanks to Johannes Schauer
+ for the detailed report! (Closes: #683786)
-- David Kalnischkies <kalnischkies@gmail.com> Wed, 18 Jul 2012 11:45:57 +0200
diff --git a/test/integration/test-bug-683786-build-dep-on-virtual-packages b/test/integration/test-bug-683786-build-dep-on-virtual-packages
new file mode 100755
index 00000000..83d184a4
--- /dev/null
+++ b/test/integration/test-bug-683786-build-dep-on-virtual-packages
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'amd64' 'armel'
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'po-debconf' 'all' '1'
+insertsource 'unstable' 'dash' 'any' '1' 'Build-Depends: po-debconf'
+insertpackage 'unstable' 'make-po-debconf-pure-virtual' 'armel' '1' 'Depends: po-debconf'
+
+insertpackage 'unstable' 'po-debconf' 'amd64' '1'
+insertsource 'unstable' 'diffutils' 'any' '1' 'Build-Depends: texi2html'
+
+setupaptarchive
+
+testequal 'Package: po-debconf:armel
+Versions:
+
+Reverse Depends:
+ make-po-debconf-pure-virtual:armel,po-debconf:armel
+Dependencies:
+Provides:
+Reverse Provides: ' aptcache showpkg po-debconf:armel
+testequal 'N: Unable to locate package texi2html' aptcache showpkg texi2html:armel -q=0
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ po-debconf
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst po-debconf (1 unstable, unstable [all])
+Conf po-debconf (1 unstable, unstable [all])' aptget build-dep dash -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+E: Build-Depends dependency for dash cannot be satisfied because the package po-debconf cannot be found' aptget build-dep -aarmel dash -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+E: Build-Depends dependency for diffutils cannot be satisfied because the package texi2html cannot be found' aptget build-dep -aarmel diffutils -s