Project

Profile

Help

Issue #5063

closed

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

Added by dalley over 3 years ago. Updated over 2 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
High
Assignee:
Sprint/Milestone:
-
Start date:
Due date:
Estimated time:
(Total: 0:00 h)
Severity:
3. High
Version:
Platform Release:
2.21.0
OS:
Triaged:
Yes
Groomed:
No
Sprint Candidate:
No
Tags:
Pulp 2
Sprint:
Sprint 58
Quarter:

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 1 (0 open1 closed)

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 addedCLOSED - DUPLICATEActions
Blocked by RPM Support - Refactor #5068: Refactor depsolving codeCLOSED - CURRENTRELEASEdalley

Actions
Actions #1

Updated by dalley over 3 years ago

  • Description updated (diff)
Actions #2

Updated by dalley over 3 years ago

  • Status changed from NEW to ASSIGNED
  • Assignee set to dalley
Actions #3

Updated by dalley over 3 years 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
Actions #4

Updated by bherring over 3 years ago

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

Updated by dalley over 3 years ago

Actions #7

Updated by ttereshc over 3 years ago

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

Updated by dalley over 3 years ago

  • Triaged changed from No to Yes
Actions #9

Updated by dalley over 3 years ago

Actions #10

Updated by dalley over 3 years ago

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

Actions #11

Updated by dalley over 3 years ago

Actions #12

Updated by dalley over 3 years ago

  • Sprint set to Sprint 56
Actions #13

Updated by rchan over 3 years ago

  • Sprint changed from Sprint 56 to Sprint 57
Actions #14

Updated by dalley over 3 years ago

  • Platform Release set to 2.21.0
Actions #15

Updated by rchan over 3 years ago

  • Sprint changed from Sprint 57 to Sprint 58
Actions #16

Updated by dalley about 3 years 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

Actions #17

Updated by dalley about 3 years ago

  • Status changed from MODIFIED to CLOSED - CURRENTRELEASE

Also available in: Atom PDF