Ticket #433 (closed defect: fixed)

Opened 11 years ago

Last modified 9 years ago

DepList should consider multiple matches for a DepSpec if appropriate

Reported by: dleverton Owned by: ciaranm
Priority: Sometime Milestone:
Component: core/paludis Version: scm
Keywords: Cc:
Blocked By: Blocking:
Distribution: Gentoo

Description

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]noti 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.

Change History

comment:1 Changed 9 years ago by ciaranm

  • Status changed from new to closed
  • Distribution set to Gentoo
  • Resolution set to fixed
Note: See TracTickets for help on using tickets.