]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 646578: Make Math::Random::Secure fail to install if its dependencies
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Wed, 27 Apr 2011 22:05:18 +0000 (15:05 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Wed, 27 Apr 2011 22:05:18 +0000 (15:05 -0700)
don't install properly, when using install-module.pl.
r=glob, a=mkanat

Bugzilla/Install/CPAN.pm

index bdf1d5f051901437408978099c28127be556bf3f..a5615817c3cae751a1637345ba2ec702693ee3e4 100644 (file)
@@ -54,6 +54,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
@@ -63,6 +70,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
@@ -154,7 +168,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 {
@@ -169,6 +187,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;