* cmdline/apt-get.cc:
authorDavid Kalnischkies <kalnischkies@gmail.com>
Sat, 4 Aug 2012 09:04:52 +0000 (11:04 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Sat, 4 Aug 2012 09:04:52 +0000 (11:04 +0200)
  - 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)

cmdline/apt-get.cc
debian/changelog
test/integration/test-bug-683786-build-dep-on-virtual-packages [new file with mode: 0755]

index d4c7f42..b433a79 100644 (file)
@@ -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;
index 5218ff0..18b7c6a 100644 (file)
@@ -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 (executable)
index 0000000..83d184a
--- /dev/null
@@ -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