[paludis-sekrit] [Paludis] #433: DepList should consider multiple matches for a DepSpec if appropriate

Paludis trac at trac.pioto.org
Sun Nov 11 20:58:41 UTC 2007

#433: DepList should consider multiple matches for a DepSpec if appropriate
 Reporter:  dleverton   |       Owner:  ciaranm
     Type:  defect      |      Status:  new    
 Priority:  Sometime    |   Milestone:         
Component:  libpaludis  |     Version:  scm    
 Keywords:              |  
 The current behaviour of DepList is to consider only one match for any
 given DepSpec.  This is fine when installing, but when upgrading it can
 leave "stray" packages that will not be updated by -i world (even with
 --dl-installed-deps-pre), nor flagged for removal by --uninstall-unused
 (since the latter considers every matched package as being used).  The
 following situations can cause this:

 * A dependency, world file, system set, etc contains "cat/pkg", and
 multiple SLOTs of cat/pkg are installed.  The current behaviour is simply
 to consider the highest unmasked version of cat/pkg; better would be to
 look for upgrades in all installed SLOTs, as well as the highest overall
 (the latter is needed to cleanly handle Gentoo's webapp, kernel, JDK/JRE
 and KDE ebuilds, for example).  More concretely:

 cat/pkg-2.0:2 and cat/pkg-3.0:3 are installed; cat/pkg-1.1:1,
 cat/pkg-2.1:2, cat/pkg-3.1:3 and cat/pkg-4.1:4 are available and unmasked.
 The world file contains "cat/pkg".  paludis -i world should install
 cat/pkg-4.1 because it is the highest available version, and cat/pkg-2.1
 and cat-pkg/3.1 because they are the highest in their respective SLOTs.
 It should [i]not[/i] install cat/pkg-1.1, because there are no installed
 versions in SLOT 1.

 * cat/pkg depends on "{{{||}}} ( cat1/pkg1 cat2/pkg2 cat3/pkg3 )" and both
 cat1/pkg1 and cat2/pkg2 are installed.  Both should be considered for
 update, including the SLOTting behaviour described above.  Of course,
 cat3/pkg3 should not be installed if it isn't already.

 * A dependency, world file, system set etc contains "virtual/foo", where
 virtual/foo is an old-style virtual and multiple providers are installed.
 Again, all providers should be considered for update.

Ticket URL: </ticket/433>
Paludis <>
Paludis, the Other Package Mangler

More information about the paludis-dev mailing list