From 6233375db2f69e79f2fa7ba3030956aa2a6eafbe Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Wed, 27 Apr 2011 15:06:10 -0700 Subject: Bug 646578: Make Math::Random::Secure fail to install if its dependencies don't install properly, when using install-module.pl. r=glob, a=mkanat --- Bugzilla/Install/CPAN.pm | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'Bugzilla/Install') 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; -- cgit v1.2.3-24-g4f1b