Versionned dependencies
Packages can currenctly declared dependencies on specific versions of
other packages, with simple relations: <<, <=, =, >= and >>. For
instance:
Package: xul-ext-adblock-plus
Depends: iceweasel (>= 3.6.13) | iceape (>= 2.1) | …
While this is sufficient for most cases, it does not cover one
interesting case: a dependencies on a range of versions. For instance:
Package: xul-ext-adblock-plus
Depends: iceweasel (>= 3.6.13, << 12.0~a1+) | iceape (>= 2.1, << 2.9~a1+) | …
Because this kind of conceptual dependency cannot be expressed¹, what is
currently done is:
Package: xul-ext-adblock-plus
Depends: iceweasel (>= 3.6.13) | iceape (>= 2.1) | …
Breaks: iceweasel (>= 12.0~a1+), iceweasel (<< 3.6.13),
iceape (>= 2.9~a1+), iceape (<< 2.1)
which is not accurate and has unwanted since it declares conflicts whith
other package versions that do not really conflict but only do not
satisfy the real dependency.
In practice, this causes problems such as #653302: installing
xul-ext-adblock-plus removes iceape just because the current packaged
version of iceape cannot take advantage of adblock-plus.
I would like to hear your opinions on that subject. Independently of the
Mozilla extension context, I think that double-versionned dependency
make as much sense as simple versionned ones. Or, in other words, if a
piece of software can depend on some other one's versions superior to X,
or inferior to Y, it could very well depend on versions superior to X
and inferior to Y, and I do not see a reason why we should not be able
to represent that.
Note:
¹ Technically, it could be expressed by expanding it according to de
Morgan's laws, but the result would be a huge and complicated
dependency list, which would probably give a hard time to dependency
solvers.
--
,--.
: /` ) Tanguy Ortolo <xmpp:tanguy@ortolo.eu> <irc://irc.oftc.net/Tanguy>
| `-' Debian Developer
\_
Reply to: