summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Install/CPAN.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Install/CPAN.pm')
-rw-r--r--Bugzilla/Install/CPAN.pm25
1 files changed, 24 insertions, 1 deletions
diff --git a/Bugzilla/Install/CPAN.pm b/Bugzilla/Install/CPAN.pm
index 48dcf6fc0..df32c40b5 100644
--- a/Bugzilla/Install/CPAN.pm
+++ b/Bugzilla/Install/CPAN.pm
@@ -55,6 +55,13 @@ use constant REQUIREMENTS => (
package => 'YAML',
version => 0,
},
+ {
+ # Many modules on CPAN are now built with Dist::Zilla, which
+ # unfortunately means they require this version of EU::MM to install.
+ module => 'ExtUtils::MakeMaker',
+ package => 'ExtUtils-MakeMaker',
+ version => '6.31',
+ },
);
# We need the absolute path of ext_libpath, because CPAN chdirs around
@@ -64,6 +71,13 @@ use constant REQUIREMENTS => (
# we make it a constant.
use constant BZ_LIB => abs_path(bz_locations()->{ext_libpath});
+# These modules are problematic to install with "notest" (sometimes they
+# get installed when they shouldn't). So we always test their installation
+# and never ignore test failures.
+use constant ALWAYS_TEST => qw(
+ Math::Random::Secure
+);
+
# CPAN requires nearly all of its parameters to be set, or it will start
# asking questions to the user. We want to avoid that, so we have
# defaults here for most of the required parameters we know about, in case
@@ -175,7 +189,11 @@ sub install_module {
}
print install_string('install_module',
{ module => $name, version => $module->cpan_version }) . "\n";
- if ($test) {
+
+ if (_always_test($name)) {
+ CPAN::Shell->install($name);
+ }
+ elsif ($test) {
CPAN::Shell->force('install', $name);
}
else {
@@ -190,6 +208,11 @@ sub install_module {
$CPAN::Config->{makepl_arg} = $original_makepl;
}
+sub _always_test {
+ my ($name) = @_;
+ return grep(lc($_) eq lc($name), ALWAYS_TEST) ? 1 : 0;
+}
+
sub set_cpan_config {
my $do_global = shift;
my $bzlib = BZ_LIB;