summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Install/Requirements.pm
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2008-02-12 02:31:29 +0100
committerlpsolit%gmail.com <>2008-02-12 02:31:29 +0100
commitb70ab0a462729d261a0205ef943308c2dd5afb07 (patch)
tree611f02b0751a9a28445e650144976f3b9b3a60c0 /Bugzilla/Install/Requirements.pm
parentcc883c815a06bce21d353dcaa65aa3d7d4b0a73a (diff)
downloadbugzilla-b70ab0a462729d261a0205ef943308c2dd5afb07.tar.gz
bugzilla-b70ab0a462729d261a0205ef943308c2dd5afb07.tar.xz
Bug 414430: On Windows, checksetup.pl should mention the correct PPM repo based on the Perl version - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat r=glob a=LpSolit
Diffstat (limited to 'Bugzilla/Install/Requirements.pm')
-rw-r--r--Bugzilla/Install/Requirements.pm43
1 files changed, 35 insertions, 8 deletions
diff --git a/Bugzilla/Install/Requirements.pm b/Bugzilla/Install/Requirements.pm
index 714bb3871..293740e3f 100644
--- a/Bugzilla/Install/Requirements.pm
+++ b/Bugzilla/Install/Requirements.pm
@@ -305,6 +305,17 @@ 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) = @_;
@@ -316,14 +327,19 @@ sub print_module_instructions {
. ROOT_USER . ".\n\n";
if (ON_WINDOWS) {
- print <<EOT;
-***********************************************************************
-* Note For Windows Users *
-***********************************************************************
-* In order to install the modules listed below, you first have to run *
-* the following command as an Administrator: *
-* *
-* ppm repo add theory58S http://theoryx5.uwinnipeg.ca/ppms *
+ my $perl_ver = sprintf('%vd', $^V);
+
+ # URL when running Perl 5.8.x.
+ my $url_to_theory58S = 'http://theoryx5.uwinnipeg.ca/ppms';
+ my $repo_up_cmd =
+'* *';
+ # Packages for Perl 5.10 are not compatible with Perl 5.8.
+ if (vers_cmp($perl_ver, '5.10') > -1) {
+ $url_to_theory58S = 'http://cpan.uwinnipeg.ca/PPMPackages/10xx/';
+ }
+ # ActivePerl older than revision 819 require an additional command.
+ if (_get_activestate_build_id() < 819) {
+ $repo_up_cmd = <<EOT;
* *
* Then you have to do (also as an Administrator): *
* *
@@ -331,6 +347,17 @@ sub print_module_instructions {
* *
* Do that last command over and over until you see "theory58S" at the *
* top of the displayed list. *
+EOT
+ }
+ print <<EOT;
+***********************************************************************
+* Note For Windows Users *
+***********************************************************************
+* In order to install the modules listed below, you first have to run *
+* the following command as an Administrator: *
+* *
+* ppm repo add theory58S $url_to_theory58S
+$repo_up_cmd
***********************************************************************
EOT
}