On 4 July 2012 05:56, Ciaran McCreesh <ciaran.mccre...@googlemail.com> wrote:
>
> But whether or not a and b can be installed together sounds an awful
> lot like a property of a and b, not of c.

Its just when C is really something abstract, ( a virtual ) provided
by both possibly a & b, and b doesn't know a even exists till after
the fact, and vice versa, that solving the problem in a & b becomes
messy.

If you solve it in one side ( in my example, perl-core ) you end up
having a lot of weird conditional logic trying to work out src_uri,
dependencies, and whether or not to actually do anything.

If you solve it on the other side ( in my example, dev-lang/perl ) ,
you end up having perl specify what versions of the abstract notion
can and cannot be installed, instead of the abstract notion specifying
what is *needed* and there is a resolution required to provide that.

if a package specifies : " =virtual-Foo-5.0 " , that means "I want the
Foo.pm version 5.0, I don't care how you get it, get it".

Only the virtual can convey *how* to get that.

ie: perhaps =virtual-Foo-5.0  can only be satisfied by installing
dev-lang/perl-5.10  ( its not in any other Perl, or on CPAN )
or perhaps =virtual-Foo-5.0 can be satisfied by installing
perl-core/Foo-5.0 on any perl

And there are dozens of packages that ask for "Foo-5.0" , and the only
other altnative we had before we had the virtual/perl-* family, was to
ignore the dependency entirely   and hope for the best, or depend on a
minimum perl we know had it ( which is a different minimum perl than
what upstream specifies, because upstream assume you can install
things from CPAN , and/or depend on the nearest match that *is*
available via perl-core/* , risking the possibility that it will
install a version from CPAN that is to become outdated by a future
perl release, but you'll keep installed anyway, giving the shadow
effect again.

Essentially, the problem at the bottom of this, is Perl Modules depend
on each other by components in distributions ( the modules ), not the
distributions themselves. Its merely convention that distributions
have a name and version that is the same of a module also contained in
that distribution.

-- 
Kent

perl -e  "print substr( \"edrgmaM  SPA NOcomil.ic\\@tfrken\", \$_ * 3,
3 ) for ( 9,8,0,7,1,6,5,4,3,2 );"

http://kent-fredric.fox.geek.nz

Reply via email to