This bug tracks the implementation of the EAPI 3 feature mentioned in the summary.
I was going to file a bug proposing something that sounds like this. I'm not -sure- slot operator deps are what I was imagining or not, there's no linked documentation, description, or even reference to a central EAPI 3 document.
Subject: Modify slot information to include dependency slotting information
A series of recent problems has led me to propose this solution.
A) Perl 5.10 is not yet in gentoo due to 'dual life' problems with support packages.
B) Upgrading xorg to 1.6 caused evdev to break since it was linking against xorg 1.5, thus my keyboard and mouse no longer worked without repair from SSH (or somehow getting to consolemode... difficult for someone LACKING ssh access given that they can't get out of X anymore!).
C) I am -sure- that others have similar issues with other packages.
My proposal is a modification to the slotting system gentoo currently uses. Instead of just telling us what API/ABI a package provides, an additional part that is automatically generated at install time will be added that specifies the ABI/API of packages it links against. A package that is 'unslotted' would instead have some default slot, like 'gentoo' as it's slot, and would still retain the dependency information.
A package with a default slot...
nvidia-drivers:gentoo -> nvidia-drivers:gentoo:virtual-linux=2.6.30
A package with multiple slots and multiple-installed versions.
An application could depend on perl-plugin:(how to mark empty?):5.10 to specify that it requires a given plugin installed with perl 5.10. Specifying perl>=5.10 and perl-plugin as dependencies might also work; however then it would require a second pass or more memory to generate/retain combinations.
Have a look at =app-doc/pms-99999999.
An operator slot dependency consists of a colon followed by one of the following operators:
* Indicates that any slot value is acceptable. In addition, for runtime dependencies, indicates that the package will not break if the matched package is uninstalled and replaced by a different matching package in a different slot.
= Indicates that any slot value is acceptable. In addition, for runtime dependencies, indicates that the package will break unless a matching package with slot equal to the slot of the best installed version at the time the package was installed is available.
To implement the equals slot operator, the package manager will need to store the slot of the best installed version of the matching package. The package manager may do this by appending the appropriate slot after the equals sign when saving the package’s dependencies. This syntax is only for package manager use and must not be used by ebuilds.
I am not sure if, currently, this is being covered by specifying concrete subslots in depends :/
Marking as fixed since the slot operator has been implemented since EAPI 4.
(In reply to Pacho Ramos from comment #4)
> I am not sure if, currently, this is being covered by specifying concrete
> subslots in depends :/
Originally, the spec didn't include subslots. The subslots were added in order to account for packages that we don't want to slot (like dev-lang/perl for example). I'm not sure if that answers your question.
Yeah, thanks :)