Просмотр исходного кода

* 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 лет назад: 14
Родитель
Сommit
f1f874bdb8

+ 2 - 2
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;

+ 4 - 0
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
 

+ 44 - 0
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