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