Project

Profile

Help

Issue #5063

Module defaults need to be considered and copied automatically during recursive dependency solving

Added by dalley 5 months ago. Updated 3 months ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
High
Assignee:
Category:
-
Sprint/Milestone:
-
Start date:
Due date:
Severity:
3. High
Version:
Platform Release:
2.21.0
Blocks Release:
OS:
Backwards Incompatible:
No
Triaged:
Yes
Groomed:
No
Sprint Candidate:
No
Tags:
Pulp 2
QA Contact:
Complexity:
Smash Test:
Verified:
No
Verification Required:
No
Sprint:
Sprint 58

Description

If a module stream is marked as a module default, then nonmodular RPMs are allowed to depend on it. [0]

Not only are they allowed to depend on it, but any version provided by a default module is to be preferred over a nonmodular package if one exists. Even if that nonmodular package has a higher version. [0]

That is to say that if a repo contains a nonmodular RPM that provides foo version 1.8 and also a default module whose artifacts provide foo version 1.5, DNF and other clients will always pick the module. [1]

So default modules are "special", but their specialness comes from a logically separate piece of metadata that Pulp stores separately.

We need to make sure the depsolver does 2 things:

  • During depsolving, all default modules must be considered and preferred if available
  • If a default module is ever copied, we must also copy it's module-default metadata

The second point is critical. If we copy the module without copying the module-default metadata, clients will not understand that it is special, and they will not be able to use them to satisfy their dependencies (the repo will be effectively broken), and the packages they provide will not be able to be installed normally through DNF as intended.

[0] As per discussion with Stephen Gallagher and Igor Gnatenko

[1] For instance, the "ninja-build" package is provided both by a nonmodular RPM in the fedora base repo and as a default module. If I try to install ninja-build, it will not install the nonmodular RPM, it will automatically enable the ninja module and install it from there. I've been told that the only reason it's provided as both is that they haven't updated the build tooling to allow modules in buildroot.


Subtasks

Story #5071: As a user, a default module stream is copied together with its module_defaultsCLOSED - CURRENTRELEASEdalley

Actions

Related issues

Related to RPM Support - Test #5055: [EPIC] Ursine RPM Copy dependencies on modular RPMS from Default Modules needs to be added ASSIGNED Actions
Blocked by RPM Support - Refactor #5068: Refactor depsolving code CLOSED - CURRENTRELEASE Actions

History

#1 Updated by dalley 5 months ago

  • Description updated (diff)

#2 Updated by dalley 5 months ago

  • Status changed from NEW to ASSIGNED
  • Assignee set to dalley

#3 Updated by dalley 5 months ago

  • Subject changed from Module defaults need to be considered and copied during recursive dependency solving to Module defaults need to be considered and copied automatically during recursive dependency solving

#4 Updated by bherring 5 months ago

  • Related to Test #5055: [EPIC] Ursine RPM Copy dependencies on modular RPMS from Default Modules needs to be added added

#6 Updated by dalley 5 months ago

#7 Updated by ttereshc 5 months ago

  • Related to Story #5071: As a user, a default module stream is copied together with its module_defaults added

#8 Updated by dalley 5 months ago

  • Triaged changed from No to Yes

#9 Updated by dalley 5 months ago

#10 Updated by dalley 5 months ago

Making this issue an "epic" so to speak, assigning subtasks

#11 Updated by dalley 5 months ago

#12 Updated by dalley 5 months ago

  • Sprint set to Sprint 56

#13 Updated by rchan 4 months ago

  • Sprint changed from Sprint 56 to Sprint 57

#14 Updated by dalley 4 months ago

  • Platform Release set to 2.21.0

#15 Updated by rchan 4 months ago

  • Sprint changed from Sprint 57 to Sprint 58

#16 Updated by dalley 3 months ago

  • Status changed from ASSIGNED to MODIFIED

This issue was narrowly solved by https://github.com/pulp/pulp_rpm/pull/1400

The specific details about non-default modules not being considered was not addressed. That will be tracked here: https://pulp.plan.io/issues/4962

#17 Updated by dalley 3 months ago

  • Status changed from MODIFIED to CLOSED - CURRENTRELEASE

Please register to edit this issue

Also available in: Atom PDF