]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 547336: Make installation work on Windows with Strawberry Perl Professional
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Tue, 23 Feb 2010 00:14:23 +0000 (16:14 -0800)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Tue, 23 Feb 2010 00:14:23 +0000 (16:14 -0800)
r=glob, a=mkanat

Bugzilla/Constants.pm
Bugzilla/Install/Requirements.pm
install-module.pl

index d626c97497a9af2cde21cbb9297a0c5aa199ce17..4a39110faa4d572bdf69082f0a30692351327901 100644 (file)
@@ -149,6 +149,7 @@ use File::Basename;
     DB_MODULE
     ROOT_USER
     ON_WINDOWS
+    ON_ACTIVESTATE
 
     MAX_TOKEN_AGE
     MAX_LOGINCOOKIE_AGE
@@ -471,6 +472,8 @@ use constant DB_MODULE => {
 
 # True if we're on Win32.
 use constant ON_WINDOWS => ($^O =~ /MSWin32/i);
+# True if we're using ActiveState Perl (as opposed to Strawberry) on Windows.
+use constant ON_ACTIVESTATE => eval { &Win32::BuildNumber };
 
 # The user who should be considered "root" when we're giving
 # instructions to Bugzilla administrators.
index dfdeafb70a7b38ea46034d5a05ea10f218a1e68b..34e93b6753e157ae30e6dbcc6ca4b1ac662eaee7 100644 (file)
@@ -376,17 +376,6 @@ sub _check_missing {
     return \@missing;
 }
 
-# Returns the build ID of ActivePerl. If several versions of
-# ActivePerl are installed, it won't be able to know which one
-# you are currently running. But that's our best guess.
-sub _get_activestate_build_id {
-    eval 'use Win32::TieRegistry';
-    return 0 if $@;
-    my $key = Win32::TieRegistry->new('LMachine\Software\ActiveState\ActivePerl')
-      or return 0;
-    return $key->GetValue("CurrentVersion");
-}
-
 sub print_module_instructions {
     my ($check_results, $output) = @_;
 
@@ -427,7 +416,7 @@ sub print_module_instructions {
     if ((!$output && @{$check_results->{missing}})
         || ($output && $check_results->{any_missing}))
     {
-        if (ON_WINDOWS) {
+        if (ON_ACTIVESTATE) {
             my $perl_ver = sprintf('%vd', $^V);
             
             # URL when running Perl 5.8.x.
@@ -439,7 +428,7 @@ sub print_module_instructions {
             print colored(install_string('ppm_repo_add', 
                                  { theory_url => $url_to_theory58S }), 'red');
             # ActivePerls older than revision 819 require an additional command.
-            if (_get_activestate_build_id() < 819) {
+            if (ON_ACTIVESTATE < 819) {
                 print install_string('ppm_repo_up');
             }
         }
@@ -477,7 +466,7 @@ sub print_module_instructions {
         }
     }
 
-    if ($output && $check_results->{any_missing} && !ON_WINDOWS
+    if ($output && $check_results->{any_missing} && !ON_ACTIVESTATE
         && !$check_results->{hide_all}) 
     {
         print install_string('install_all', { perl => $^X });
@@ -586,7 +575,7 @@ sub install_command {
     my $module = shift;
     my ($command, $package);
 
-    if (ON_WINDOWS) {
+    if (ON_ACTIVESTATE) {
         $command = 'ppm install %s';
         $package = $module->{package};
     }
index 241972211bbe39612bb6408a38910d7ea27b0409..44457c400a9ca39148e2fb0f0fd4e00813905265 100755 (executable)
@@ -47,9 +47,12 @@ GetOptions(\%switch, 'all|a', 'upgrade-all|u', 'show-config|s', 'global|g',
 
 pod2usage({ -verbose => 1 }) if $switch{'help'};
 
-if (ON_WINDOWS) {
-    print "\nYou cannot run this script on Windows. Please follow instructions\n";
-    print "given by checksetup.pl to install missing Perl modules.\n\n";
+if (ON_ACTIVESTATE) {
+    print <<END;
+You cannot run this script when using ActiveState Perl. Please follow
+the instructions given by checksetup.pl to install missing Perl modules.
+
+END
     exit;
 }