Ticket #460 (closed enhancement: wontfix)

Opened 5 years ago

Last modified 3 years ago

Trying harder to find an installable combination when confronted with weird maskings

Reported by: robryk Owned by: ciaranm
Priority: Sometime Milestone:
Component: core/paludis Version: 0.26.0_alpha4
Keywords: masking, dependencies, install Cc:
Blocked By: Blocking:
Distribution: Gentoo

Description

Suppose we have two packeges, A and B in following versions and follwing dependencies:

A-1 depends on >=B-1 A-2 depends on >=B-2 B-1 and B-2 depend on nothing

B-1, A-1 and A-2 are considered not masked, but B-2 is.

As far as I could tell (I believe this is the situation with eselect and eselect-news if I accept keyword ~x86 for eselect-news, but not eselect) `paludis --dl-upgrade as-needed --install A' would then try to install A-2, find B-2 masked and fail.

I understand that such a situation is considered a bug in repository, but it can arise due to setting accepted keywords individually/ unmasking individual packages. For example, I want to use eselect-news, so I accepted ~x86 for it, but I still want to have eselect with x86 keyword.

I think that this problem may be solved by making the dependency resolver, having found that installing the newest version of a package is impossible, try to install subsequent older versions, until it reaches one that violates the input atom (ie. is too old).

I would propose to add a per-package option that would change this behaviour, so that one might set it when one unmasks a package or adds an accepted keyword for it.

I am aware that the algorithm I've given will be as straightforward to implement only if the dependency resolver is DFS-esque, but I think that it may be adapted to BFS-esque resolvers also.

Please excuse my possible mistaking the component to which this request pertains.

Change History

comment:1 Changed 5 years ago by robryk

  • Type changed from defect to enhancement

comment:2 Changed 5 years ago by ciaranm

I've got a new resolver locally that does things a bit differently -- it builds up the set of necessary packages first, before doing ordering, so it should handle this kind of thing more elegantly.

comment:3 Changed 5 years ago by dleverton

This should be done carefully if at all... you don't want paludis to silently refuse to upgrade a core system package just because the new version has a dependency¹ on a package that you've masked. A warning might be sufficient.

[1] Possibly conditional, but enabled by a globally-enabled flag; otherwise, you'd just have to live with the new dep.

comment:4 Changed 3 years ago by ciaranm

  • Status changed from new to closed
  • Distribution set to Gentoo
  • Resolution set to wontfix

The new resolver handles this kind of thing sanely. It won't ever be supported with the legacy resolver.

Note: See TracTickets for help on using tickets.