diff options
-rw-r--r-- | cmdline/apt-get.cc | 4 | ||||
-rw-r--r-- | debian/changelog | 4 | ||||
-rwxr-xr-x | test/integration/test-bug-683786-build-dep-on-virtual-packages | 44 |
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 |