diff options
-rw-r--r-- | Bugzilla/Install/CPAN.pm | 25 |
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; |