I've fixed up the boogers in the versioned provides code in the current dpkg CVS. You can now do things like:
Package: foo
Depends: pkg1 (>= 1.0)
Package: bar
Provides: pkg1 (= 1.1)
Note, you can only use the equality in versioned provides. There are
several reasons, not the least of which is sane code (in addition to a
sane mind). Here's a copy of the comments I added to main/packages.c
explaining:
/* For versioned depends, we only check providers with
* dvr_exact. It doesn't make sense to check ones without a
* version since we have nothing to verify it. Also, it is
* way too complex to allow anything but exact in a provided
* version. A few examples below to deter you from
* trying:
*
* - foo depends on pkg1 (>= 0.6), bar provides pkg1 (<= 1.0).
* Should pass (easy enough)
*
* - foo depends on pkg1 (>= 0.7) and (<= 1.1), bar
* provides pkg1 (>= 1.2). Should fail (little harder)
*
* - foo depends on pkg1 (>= 0.4), bar provides pkg1 (<= 1.0)
* and (>= 0.5), IOW, inclusive of only those versions.
* This would require backchecking the other provided
* versions in the possi, which would make things sickly
* complex and overly time consuming. Should fail (very hard)
*
* There's probably some miracle formula to do this, but I
* don't see it, and there's little to gain, IMNHO. Also,
* packages can get around most of these by providing
* multiple dvr_exact versions. -- Ben
*/
A few cavaets:
* If a dependency is versioned, it will only look at versioned provides
to satisfy it. That should make sense to anyone who thinks about it.
* Versioned provides can satisfy unversioned depends.
* If a versioned provides is anything but (= x.x.x), it will ignore it
completely. Dpkg-deb warns about improperly versioned provides when
creating a .deb, lintian should aswell.
* Packages that have versioned provides should call:
dpkg --assert-versioned-provides
In their preinst script to avoid allowing it to incorrectly satisfy
versioned deps with older dpkg's.
PS: Wichert, happy now? :)
--
-----------=======-=-======-=========-----------=====------------=-=------
/ Ben Collins -- ...on that fantastic voyage... -- Debian GNU/Linux \
` [EMAIL PROTECTED] -- [EMAIL PROTECTED] -- [EMAIL PROTECTED] '
`---=========------=======-------------=-=-----=-===-======-------=--=---'
pgpjx3dzKmRQ3.pgp
Description: PGP signature

