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

Versionned dependencies

Packages can currenctly declared dependencies on specific versions of
other packages, with simple relations: <<, <=, =, >= and >>. For
    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.

¹ 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

: /` )   Tanguy Ortolo <xmpp:tanguy@ortolo.eu> <irc://irc.oftc.net/Tanguy>
| `-'    Debian Developer

Reply to: