|
|
f016bc |
From d4b0f5dd2665dfe0124623379bfb6ce233cdd075 Mon Sep 17 00:00:00 2001
|
|
|
f016bc |
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
|
|
f016bc |
Date: Mon, 6 May 2019 15:22:32 +0200
|
|
|
f016bc |
Subject: [PATCH] Fix Perl version lookup with Module::CoreList
|
|
|
f016bc |
MIME-Version: 1.0
|
|
|
f016bc |
Content-Type: text/plain; charset=UTF-8
|
|
|
f016bc |
Content-Transfer-Encoding: 8bit
|
|
|
f016bc |
|
|
|
f016bc |
If a distribution declares a dependency on '5.010' Perl,
|
|
|
f016bc |
inc::Module::Install dies in
|
|
|
f016bc |
Module::Install::Admin::ScanDeps::scan_dependencies() with:
|
|
|
f016bc |
|
|
|
f016bc |
Module::CoreList has no information on perl 5.010 at /usr/lib/perl5/ site_perl/5.10.1/Module/Install/Admin/ScanDeps.pm line 25.
|
|
|
f016bc |
|
|
|
f016bc |
This is because %Module::CoreList::version is indiced only with some
|
|
|
f016bc |
arbitrary versions and normalized numeral versions only. E.g. it
|
|
|
f016bc |
contains an entry for 5.005, 5.005000 and 5.010000 but no entry of 5.010.
|
|
|
f016bc |
|
|
|
f016bc |
This patch fixes the lookup by converting a version string into
|
|
|
f016bc |
a numeral.
|
|
|
f016bc |
|
|
|
f016bc |
https://rt.cpan.org/Public/Bug/Display.html?id=71565
|
|
|
f016bc |
https://github.com/Perl-Toolchain-Gang/Module-Install/pull/47
|
|
|
f016bc |
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
|
f016bc |
---
|
|
|
f016bc |
lib/Module/Install/Admin/ScanDeps.pm | 1 +
|
|
|
f016bc |
t/35_perl_version.t | 23 +++++++++++++++++++++++
|
|
|
f016bc |
2 files changed, 24 insertions(+)
|
|
|
f016bc |
create mode 100644 t/35_perl_version.t
|
|
|
f016bc |
|
|
|
f016bc |
diff --git a/lib/Module/Install/Admin/ScanDeps.pm b/lib/Module/Install/Admin/ScanDeps.pm
|
|
|
f016bc |
index a75ba6e..9cee31e 100644
|
|
|
f016bc |
--- a/lib/Module/Install/Admin/ScanDeps.pm
|
|
|
f016bc |
+++ b/lib/Module/Install/Admin/ScanDeps.pm
|
|
|
f016bc |
@@ -18,6 +18,7 @@ Please first specify a required perl version, like this:
|
|
|
f016bc |
perl_version('5.005');
|
|
|
f016bc |
END_MESSAGE
|
|
|
f016bc |
$perl_version =~ s{^(\d+)\.(\d+)\.(\d+)}{$1 + $2/1_000 + $3/1_000_000}e;
|
|
|
f016bc |
+ $perl_version = 0 + $perl_version;
|
|
|
f016bc |
|
|
|
f016bc |
require Module::ScanDeps;
|
|
|
f016bc |
require Module::CoreList;
|
|
|
f016bc |
diff --git a/t/35_perl_version.t b/t/35_perl_version.t
|
|
|
f016bc |
new file mode 100644
|
|
|
f016bc |
index 0000000..888b8c0
|
|
|
f016bc |
--- /dev/null
|
|
|
f016bc |
+++ b/t/35_perl_version.t
|
|
|
f016bc |
@@ -0,0 +1,23 @@
|
|
|
f016bc |
+use strict;
|
|
|
f016bc |
+BEGIN {
|
|
|
f016bc |
+ $| = 1;
|
|
|
f016bc |
+ $^W = 1;
|
|
|
f016bc |
+}
|
|
|
f016bc |
+use Test::More;
|
|
|
f016bc |
+
|
|
|
f016bc |
+my @existing_versions = ( qw(5.005 5.01 5.010 5.0100 5.01000 5.010000 5.10.0
|
|
|
f016bc |
+ 5.010.000) );
|
|
|
f016bc |
+my @missing_versions = ( qw(5.005002 5.5.2) );
|
|
|
f016bc |
+plan tests => 1 + @existing_versions + @missing_versions;
|
|
|
f016bc |
+
|
|
|
f016bc |
+require_ok( 'Module::Install::Admin::ScanDeps' );
|
|
|
f016bc |
+my $m = Module::Install::Admin::ScanDeps->new;
|
|
|
f016bc |
+
|
|
|
f016bc |
+for my $version (@existing_versions) {
|
|
|
f016bc |
+ eval { $m->scan_dependencies(q{Carp}, $version, q{0}) };
|
|
|
f016bc |
+ ok(!$@, "scan_dependencies() can query core modules for $version Perl");
|
|
|
f016bc |
+}
|
|
|
f016bc |
+for my $version (@missing_versions) {
|
|
|
f016bc |
+ eval { $m->scan_dependencies(q{Carp}, $version, q{0}) };
|
|
|
f016bc |
+ ok($@, "scan_dependencies() cannot query core modules for $version Perl");
|
|
|
f016bc |
+}
|
|
|
f016bc |
--
|
|
|
f016bc |
2.20.1
|
|
|
f016bc |
|