pulp / pulp_rpm

RPM support for Pulp Platform
https://pulpproject.org/pulp_rpm/
GNU General Public License v2.0
48 stars 124 forks source link

[EPIC] Ursine RPM Copy dependencies on modular RPMS from Default Modules needs to be added #2217

Open pulpbot opened 2 years ago

pulpbot commented 2 years ago

Author: bherring (bherring)

Redmine Issue: 5055, https://pulp.plan.io/issues/5055


History

There is currently a 'policy decision' that modules in the base repo (of rhel) don't rely on modular rpms, but that it's not an engineering limitation, and that fedora and rhel will likely do so at some point in the future. This is already a consideration for fedora and fedora-updates repos.

At least in Fedora, you can expect that there will be content in the updates-testing repo depending on content in updates-modular and/or fedora-modular.

This means Pulp will eventually need to support multiple source repos for copy.

Problem

As pulp is delivered today, Ursine RPM deps on modular RPMs are NOT covered by test.

Normal, non-modular (ursine) [0] RPMs can depend on module packages.

As an example, the postgres language RPMs depend on the default stream of the postgresql module.

When this is the case, the default module and all artifacts related to that module and the URSINE RPM are ALL copied to the target repo.

At this time, to account for this scenario, a hybrid repo containing URSINE and MODULAR RPMs with modules will be required.

Example

Recursive

Before


default module: module-FOO: [foo-1.0.rpm, bar-1.0.rpm, baz-1.0.rpm]

repo A
  |
  |---- chicken-1.1.rpm
  |---- zebra-1.0.rpm
  |----module-FOO
  |----foo-1.0.rpm
  |----bar-1.0.rpm
  |----baz-1.0.rpm

repo B
  |
  |----bar-0.7.rpm

After Copy

Result of copying ursine RPM zebra-1.0.rpm from repo A to repo B:

repo B
 |
 |---- zebra-1.0.rpm
 |----module-FOO
 |----foo-1.0.rpm
 |----bar-1.0.rpm
 |----baz-1.0.rpm
 |----bar-0.7.rpm

All available artifacts are copied, always. There is no way to copy just module on its own,
if any of its artifacts are present in a source repo (repo A).

Solution

Note:

References

[0] - https://docs.fedoraproject.org/en-US/modularity/architecture/consuming/dnf-behavior/
[1] - https://docs.pulpproject.org/plugins/pulp_rpm/user-guide/features.html?highlight=modularity

pulpbot commented 2 years ago

From: bherring (bherring) Date: 2019-07-10T18:09:43Z


Update

14:06 <dalley> in this case I'm talking about, no ursine RPMs are involved at all -- if 
               you're doing a direct Pulp copy of a module and that module has a default, 
               the default should be automatically copied