On 28 September 2013 22:31, Martin Vaeth
<va...@mathematik.uni-wuerzburg.de>wrote:

>
> Note that it would be stupid to depend on e.g.
> =virtual/perl-Term-ANSIColor-4.02
> for several reason:
>
> 1. The virtual does not even exist :)
>

Nope, it does. Its just called =virtual/perl-Term-ANSIColor-4.20.0 ,
because upstreams versioning semantics are grossly different to gentoos, so
we translate upstreams floating point versions to multipart versions so
that version cross-dependency semantics stay the same.


> 2. It would collide with ebuilds depending on other versions.
>

Nope, it would only collide in the case other ebuilds depended on a
specific version, or blocked a specific version.

This is seen as a "feature", because of "foo" needs "<= y-nnn" you don't
want to have to logically tract that fact in every other package that needs
"y"


> 3. This version is only reasonable if perl-5.16 is the
> perl version which the user has installed


And when perl 5.18 hits tree, if you want exactly 4.20 or larger, you'll
need to change your dependency string in your package to incorporate this
fact, instead of saying ">=virtual/perl-Term-ANSIColor-4.20.0" you'll have
to do "|| ( perl-5.18 etc etc )" , which is pushing the dependency
management of all the virtuals into the pacakges that are requring them.

Virtuals are much more convenient here, because if we need to change the
provider of a single version, we change it in *one* place, instead of
having to modify every ebuild in tree that needed it.

( Actually, thats a bug still, because corelist -a says 4.20.0 should be
available in 5.18, but the virtual for 4.20.0 doesn't yet have perl-5.18
listed as a provider, though I'm glad it can be fixed once, there, instead
of having to fix it in every package that depended on 4.20.0 prior to the
arrival of 5.18 in tree )



-- 
Kent

Reply via email to