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 <jrnie...@gmail.com>  Wed, 04 Mar 2009 14:17:58 
-0600
testcase-1.0/debian/control:
        Source: testcase
        Section: misc
        Priority: optional
        Maintainer: Jonathan Nieder <jrnie...@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 <jrnie...@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 <jrnie...@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



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to