[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: