Bug#489911: Bug #489911: Analysis, testcase
found 489911 0.7.21~exp1
thanks
In apt-cmdline/apt-get.cc line 2424 (added in tausq's 2003-02-01
commit "fix some build-dep bugs; update changelog"), I found:
* TODO: this means that if there's a build-dep on A|B and B is
* installed, we'll still try to install A; more importantly,
* if A is currently broken, we cannot go back and try B. To fix
* this would require we do a Resolve cycle for each package we
* add to the install list. Ugh
I think it would be worthwhile to fix this anyway: without looking
into it more deeply, I imagine that checking for installed packages
should not take very long. At worst, if we do not already, we might
need to keep a cache of installed virtual packages. Fixing this bug
would help mitigate other problems that arise from not investigating B
when A is an uninstalled virtual package --- the user is likely to
take matters into his own hands upon failure, and we should help him.
A testcase for another manifestation of the same problem follows. I
ran into the problem while trying to get build-dependencies for
haskell-opengl and for freeglut (both build-depend on xlibmesa-gl-dev
| ... | libgl-dev, and libgl-dev is a virtual package I already had).
testcase-1.0/debian/changelog:
testcase (1.0) experimental; urgency=low
* Initial version.
-- Jonathan Nieder <jrnieder@gmail.com> Wed, 04 Mar 2009 14:17:58 -0600
testcase-1.0/debian/control:
Source: testcase
Section: misc
Priority: optional
Maintainer: Jonathan Nieder <jrnieder@gmail.com>
Build-Depends: debhelper (>= 7), testcase-obsolete | testcase-virtual
Standards-Version: 3.8.0
Package: testcase
Architecture: any
Depends: ${misc:Depends}
Description: Dummy package I hope never to build
There is no reason to install this.
testcase-provider-1.0/debian/changelog:
testcase-provider (1.0) experimental; urgency=low
* Initial version.
-- Jonathan Nieder <jrnieder@gmail.com> Wed, 04 Mar 2009 14:57:16 -0600
testcase-provider-1.0/debian/control:
Source: testcase-provider
Section: misc
Priority: optional
Maintainer: Jonathan Nieder <jrnieder@tick.local>
Build-Depends: debhelper (>> 7)
Standards-Version: 3.8.0
Package: testcase-provider
Architecture: all
Depends: ${misc:Depends}
Provides: testcase-virtual
Suggests: testcase-obsolete
Description: Dummy package providing a dependency for another
The Suggests: puts testcase-obselete in the package database.
both/debian/compat:
7
both/debian/copyright:
Public domain.
both/debian/rules:
#!/usr/bin/make -f
%:
dh $@
with result:
$ dpkg -l | { grep -q '^ii testcase-provider' && echo yes; }
yes
$ LANG=C sudo apt-get build-dep testcase
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package testcase-obsolete is not available, but is referred to by
another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
E: Package testcase-obsolete has no installation candidate
This testcase could also be fixed by skipping obsolete virtual
packages. Please let me know if I should file it separately.
Hope that helps,
Jonathan
Reply to: