do actually already do work in dpkg.  You represent them as:

 Build-Depends:
   librust-foo-dev (>= 0.4),
   librust-foo-dev (<< 0.6)
><--snip->
> Provides: librust-foo-dev = 0.4.2-1
>
> then the conjunctive, versioned Depends would be able to figure out how
> to satisfy it.

The problem is that once versioned provides get involved

librust-foo-dev (>= 0.4), librust-foo-dev (<< 0.6)

is not equivalent to

librust-foo-dev (>= 0.4, << 0.6)

Specifically lets say you have three packages.

librust-foo-dev version 0.9.1-1
librust-foo-0.1-dev version 0.1.1-1 provides: librust-foo-dev (= 0.1.1-1)
librust-foo-0.4-dev version 0.4.1-1 provides: librust-foo-dev (= 0.4.1-1)

Installing (or having already installed) librust-foo-dev and
librust-foo-0.1-dev will satisfy "librust-foo-dev (>= 0.4),
librust-foo-dev (<< 0.6)" just fine but it is almost-certainly
not what you as the developer intended.

Reply via email to