Project

Profile

Help

Issue #3339

closed

Missing docs on how to import RPM package which has rich dependencies in Requires

Added by ttereshc about 6 years ago. Updated about 5 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Assignee:
Sprint/Milestone:
-
Start date:
Due date:
Estimated time:
Severity:
2. Medium
Version:
Platform Release:
2.15.3
OS:
Triaged:
No
Groomed:
Yes
Sprint Candidate:
Yes
Tags:
Pulp 2
Sprint:
Sprint 33
Quarter:

Description

Rich dependencies are also called boolean dependencies.
Docs to get familiar with the syntax: http://rpm.org/user_doc/boolean_dependencies.html

At the moment Pulp supports only strong dependencies (aka Requires), weak dependencies are not supported yet.

For testing purposes create at least one rpm with rich dependencies and a repo. Consider contributing to the pulp-fixtures to create a repo.
Example of creating a simple RPM: https://www.redhat.com/archives/rpm-list/2006-April/msg00015.html

Make sure sync, upload, publish of such package works, information about rich dependencies is listed correctly as other simple dependencies, depsolving for simple dependencies works as before and rich dependencies are just ignored in that case (depsolving for rich dependencies will be implemented later in a separate RFE).

Use rpm module to read all the dependencies. There is no need to parse them or process somehow for this RFE.


Files

pulp_admin.log (92.7 KB) pulp_admin.log milan, 03/06/2018 06:26 PM
consumer.log (22.5 KB) consumer.log milan, 03/06/2018 06:29 PM
Actions #1

Updated by ttereshc about 6 years ago

  • Description updated (diff)
Actions #3

Updated by milan about 6 years ago

  • Sprint/Milestone set to 54
  • Groomed changed from No to Yes
  • Sprint Candidate changed from No to Yes
Actions #4

Updated by milan about 6 years ago

  • Sprint/Milestone deleted (54)
Actions #5

Updated by rchan about 6 years ago

  • Sprint/Milestone set to 56
Actions #6

Updated by ttereshc about 6 years ago

Please, implement/merge it during sprint 33 so it will go into 2.16.0 release (aka by mid-March)

Actions #7

Updated by milan about 6 years ago

  • Status changed from NEW to ASSIGNED
  • Assignee set to milan
Actions #8

Updated by milan about 6 years ago

Findings

My set up was as follows:

  • Fedora26 hosting a development deployment of Pulp 2.15.1 & Pulp_rpm 2.15, installed as development environment
  • Fedora28 consumer node, SSL validation switched off
  • an RPM repository containing custom rpms with rich dependencies

Those rpms can be built based on a pulp-fixtures PR with e.g rpmbuild -bb <spec_file> and later turned into a repository using e.g createrepo_c <directory_with_rpms>

Content upload

Uploading the custom repository content to an RPM repository works as expected.
The repository id used for this purpose was rich-deps

Content sync&publish

I created a repo rich-deps-synced that I was able to feed from the successfully published rich-deps repo

Content copy

Content copy works as expected, rich dependencies are currently ignored when processing the Requires rpm field during a recursive content copy.

There was a custom PanAmerican rpm in the rich-deps repo, that had both rich and classic dependencies specified in the Requires attribute.
This rpm required directly (bourbon = 5.10 and tablespoon-sugar = 1.0), lemon-juice = 5.10-0, soda and transitively the lemon rpm.
I created the rich-deps-copy-pan-american and copied the rich-deps repo PanAmerican rpm into rich-deps-copy-pan-american repo, using following command line:

[vagrant@pulp2 rich-deps]$ pulp-admin rpm repo copy rpm --from-repo-id rich-deps --to-repo-id rich-deps-copy-pan-american --str-eq='name=PanAmerican' --recursive
This command may be exited via ctrl+c without affecting the request.

[\]
Running...

Copied:
  PanAmerican-1-0-noarch
  soda-0-1-noarch

[vagrant@pulp2 rich-deps]$

Having investigated why the lemon-juice wasn't copied, I found out I made a naming mistake in the Requires field of PanAmerican that should have read ..., lemon-juice5 = 5.10, soda instead. The soda dependency having been copied OK I thought that was a proof of the copy feature working OK so I didn't fix the PanAmerican rpm.

Content details

The custom RPM details were shown OK including both the rich and simple dependencies in the Requires field e.g:

[vagrant@pulp2 rich-deps]$ pulp-admin rpm repo content rpm --repo-id rich-deps-copy-pan-american
Arch:         noarch
Buildhost:    pulp3.dev
Checksum:     348696c0cee098a5382d152ff684fead8cfd8627fd92aed1848efadc191b5a9b
Checksumtype: sha256
Description:  Soda... Sort of a sparkling water.
Epoch:        0
Filename:     soda-0-1.noarch.rpm
License:      No Age Limitation
Name:         soda
Provides:     fizzy, soda, soda = 0-1-0
Release:      1
Requires:
Version:      0

Arch:         noarch
Buildhost:    pulp3.dev
Checksum:     bc9c2ef85cfd7cf937e7745c9975fecb763bf525f8119027ee125166fc2c1c92
Checksumtype: sha256
Description:  The amount of soda water controls how dry this cocktail will be.
              Put in a big tumbler glass with some ice:  - 5/10 Lemon juice -
              5/10 cl. Bourbon - 1 tsp. sugar  stir well and top off with Soda
              Water.
Epoch:        0
Filename:     PanAmerican-1-0.noarch.rpm
License:      21+
Name:         PanAmerican
Provides:     PanAmerican = 1-0-0, bourbon, citrussy, fizzy, fruity, lemon,
              long-drink
Release:      0
Requires:     (bourbon = 5.10 and tablespoon-sugar = 1.0), lemon-juice = 5.10-0,
              soda
Version:      1

[vagrant@pulp2 rich-deps]$

As can be seen further in the attached log, Pulp didn't track any other field than Requires. Moreover, the Requires field rich dependency items were kept as a single (non-processed) blob of text (bourbon = 5.10 and tablespoon-sugar = 1.0), as expected:

[vagrant@pulp2 rich-deps]$ pulp-admin -vv rpm repo content rpm --repo-id rich-deps --str-eq='name=PanAmerican'

# ------%<------------------
      "requires": [
        {
          "release": null,
          "epoch": null,
          "version": null,
          "flags": null,
          "name": "(bourbon = 5.10 and tablespoon-sugar = 1.0)"
        },
        {
          "release": null,
          "epoch": "0",
          "version": "5.10",
          "flags": "EQ",
          "name": "lemon-juice"
        },
        {
          "release": null,
          "epoch": null,
          "version": null,
          "flags": null,
          "name": "soda"
        }
      ],
# -------%<-----------------------------

Consumer

A consumer was able to fetch and install custom RPMs from the rich-deps-synced repository:

sh-4.3# dnf --best install long-drink scotch fruity
Last metadata expiration check: 0:02:32 ago on Mon Mar  5 21:32:37 2018.
Dependencies resolved.
==================================================================================================================================================================================
 Package                                      Arch                               Version                                       Repository                                    Size
==================================================================================================================================================================================
Installing:
 Cobbler                                      noarch                             1-0                                           rich_deps_synced                             6.2 k
 fruity                                       noarch                             0-1                                           rich_deps_synced                             5.8 k
 scotch                                       x86_64                             6.0.5-1.fc28                                  rawhide                                      356 k
Installing dependencies:
 Contireau2                                   noarch                             2-10                                          rich_deps_synced                             5.8 k
 icecubes                                     noarch                             2-3                                           rich_deps_synced                             5.6 k
 lzma-libs                                    x86_64                             4.32.7-19.fc27                                rawhide                                       39 k
 tablespoon-sugar                             noarch                             1-0                                           rich_deps_synced                             5.7 k
Installing weak dependencies:
 orange-bits                                  noarch                             2-3                                           rich_deps_synced                             5.8 k

Transaction Summary
==================================================================================================================================================================================
Install  8 Packages

Total download size: 429 k
Installed size: 1.1 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): fruity-0-1.noarch.rpm                                                                                                                      163 kB/s | 5.8 kB     00:00
(2/8): Cobbler-1-0.noarch.rpm                                                                                                                     107 kB/s | 6.2 kB     00:00
(3/8): icecubes-2-3.noarch.rpm                                                                                                                    164 kB/s | 5.6 kB     00:00
(4/8): tablespoon-sugar-1-0.noarch.rpm                                                                                                            387 kB/s | 5.7 kB     00:00
(5/8): Contireau2-2-10.noarch.rpm                                                                                                                 401 kB/s | 5.8 kB     00:00
(6/8): lzma-libs-4.32.7-19.fc27.x86_64.rpm                                                                                                        367 kB/s |  39 kB     00:00
(7/8): orange-bits-2-3.noarch.rpm                                                                                                                 326 kB/s | 5.8 kB     00:00
(8/8): scotch-6.0.5-1.fc28.x86_64.rpm                                                                                                             1.3 MB/s | 356 kB     00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                             772 kB/s | 429 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                          1/1
  Installing       : Contireau2-2-10.noarch                                                                                                                                   1/8
  Installing       : tablespoon-sugar-1-0.noarch                                                                                                                              2/8
  Installing       : icecubes-2-3.noarch                                                                                                                                      3/8
  Installing       : lzma-libs-4.32.7-19.fc27.x86_64                                                                                                                          4/8
  Running scriptlet: lzma-libs-4.32.7-19.fc27.x86_64                                                                                                                          4/8
  Installing       : scotch-6.0.5-1.fc28.x86_64                                                                                                                               5/8
  Running scriptlet: scotch-6.0.5-1.fc28.x86_64                                                                                                                               5/8
  Installing       : Cobbler-1-0.noarch                                                                                                                                       6/8
  Installing       : orange-bits-2-3.noarch                                                                                                                                   7/8
  Installing       : fruity-0-1.noarch                                                                                                                                        8/8
  Running scriptlet: fruity-0-1.noarch                                                                                                                                        8/8
  Verifying        : fruity-0-1.noarch                                                                                                                                        1/8
  Verifying        : scotch-6.0.5-1.fc28.x86_64                                                                                                                               2/8
  Verifying        : Cobbler-1-0.noarch                                                                                                                                       3/8
  Verifying        : lzma-libs-4.32.7-19.fc27.x86_64                                                                                                                          4/8
  Verifying        : icecubes-2-3.noarch                                                                                                                                      5/8
  Verifying        : tablespoon-sugar-1-0.noarch                                                                                                                              6/8
  Verifying        : Contireau2-2-10.noarch                                                                                                                                   7/8
  Verifying        : orange-bits-2-3.noarch                                                                                                                                   8/8

Installed:
  Cobbler.noarch 1-0          fruity.noarch 0-1 scotch.x86_64 6.0.5-1.fc28 orange-bits.noarch 2-3 Contireau2.noarch 2-10 icecubes.noarch 2-3 lzma-libs.x86_64 4.32.7-19.fc27
  tablespoon-sugar.noarch 1-0

Complete!
sh-4.3# rpm -q Cobbler
Cobbler-1-0.noarch
sh-4.3#
Actions #10

Updated by milan about 6 years ago

  • Status changed from ASSIGNED to POST

Added by milan about 6 years ago

Revision db4cb456 | View on GitHub

Document boolean dependencies support

Pulp has some limited boolean dependencies support. This patch updates the documentation to reflect it.

Fixes: #3339 https://pulp.plan.io/issues/3339

Actions #12

Updated by milan about 6 years ago

  • Status changed from POST to MODIFIED
  • % Done changed from 0 to 100
Actions #13

Updated by milan about 6 years ago

  • Platform Release set to 2.15.3
Actions #14

Updated by bmbouter about 6 years ago

  • Tracker changed from Story to Issue
  • Subject changed from As a user, I can import RPM package which has rich dependencies in Requires to Missing docs on how to import RPM package which has rich dependencies in Requires
  • Severity set to 2. Medium
  • Triaged set to No

Switching to issue since code wasn't added and only issues can go into a z-stream release.

Actions #15

Updated by bmbouter about 6 years ago

  • Sprint set to Sprint 33
Actions #16

Updated by bmbouter about 6 years ago

  • Sprint/Milestone deleted (56)

Added by milan about 6 years ago

Revision 3fa048dc | View on GitHub

Document boolean dependencies support

Pulp has some limited boolean dependencies support. This patch updates the documentation to reflect it.

Fixes: #3339 https://pulp.plan.io/issues/3339 (cherry picked from commit db4cb456c1a8f7afe97eb339f755dc1b9267de74)

Actions #18

Updated by milan about 6 years ago

Actions #19

Updated by bmbouter about 6 years ago

  • Status changed from MODIFIED to 5
Actions #20

Updated by bmbouter about 6 years ago

  • Status changed from 5 to CLOSED - CURRENTRELEASE
Actions #21

Updated by bmbouter about 5 years ago

  • Tags Pulp 2 added

Also available in: Atom PDF