Project

General

Profile

Actions

action #108120

open

rpm and cpanspec: Support vx.y versions in perl modules

Added by tinita almost 3 years ago. Updated almost 3 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:

Description

Observation

When a module specifies its version like this:

use version; our $VERSION = qv("v1.3.0");

(e.g. https://metacpan.org/release/EGILES/Test-Compile-v1.3.0/source/lib/Test/Compile.pm)

then the rpm package will get a Provides: perl(Test::Compile) entry without a version.

The script responsible for that is perl.prov:
https://github.com/rpm-software-management/rpm/blob/master/scripts/perl.prov

On the other end cpanspec also doesn't remove the v from the BuildRequires and Requires entries. (Note that it does get removed from the package version,
e.g. we have perl-Test-Compile-3.0.1-28.28.noarch.rpm.)

Problem 1

If a package has Provides: perl(Test::Compile) without a version then a Requires: perl(Test::Compile) >= 999999 will always succeed.

So currently we can't guarantee that our Requires entries are doing what we expect.

Problem 2

cpanspec has to remove the v also because Requires: perl(...) >= vx.y also won't work, even if the Provides entry is correct.

Example

% rpm -q --provides perl-YAML-PP-0.031-lp153.2.1.noarch
perl(YAML::PP) = 0.031    
perl(YAML::PP::Common) = 0.031
perl(YAML::PP::Constructor) = 0.031
perl(YAML::PP::Dumper) = 0.031
perl(YAML::PP::Emitter) = 0.031
perl(YAML::PP::Exception) = 0.031
...
% rpm -q --provides perl-Test-Compile-1.3.0-bp153.1.12.noarch
perl(Test::Compile)
perl(Test::Compile::Internal)
perl-Test-Compile = 1.3.0-bp153.1.12

Suggestions

  • Add parsing versions like qv("v1.3.0"); to perl.prov
  • Alternatively add Provides: entries to the .spec via cpanspec in such cases
  • Fix cpanspec to remove the leading v for (Build)Requires entries

Related issues 1 (0 open1 closed)

Copied from QA (public) - action #92122: Improve dependency detection via MYMETA.json in cpanspecResolvedtinita2021-05-042022-03-17

Actions
Actions

Also available in: Atom PDF