Sabayon / devkit

5 stars 8 forks source link

Don't install dependencies brought in by virtual packages #5

Closed optiz0r closed 8 years ago

optiz0r commented 8 years ago

When calculating the missing dependencies for an ebuild to be installed by entropy, it's necessary to walk two levels deep minimum to handle meta packages and split ebuilds. This has a nasty side effect for virtual packages since all the potential candidates that could satisfy the virtual are included. This means for anything that has a dependency on virtual/jdk, every possible jdk is installed side-by-side. For anything that depends on virtual/mta, every possible mta is installed one by one (because these conflict and substitute each other, each subsequent install uninstalls the previous package which is a massive waste of time, bandwidth and effort).

This commit walks through the dependency list looking for any virtual packages. For each one, the first-level dependencies of the virtual are collected. Only dependencies of the target package which are not also dependencies of the virtual are installed. This means only one package that satisfies the virtual will end up being installed.