From 9cfc795ef901d85d2c3e15a8521d4874dd16695e Mon Sep 17 00:00:00 2001
From: Chris Nighswonger
Date: Tue, 5 May 2015 15:00:30 -0400
Subject: [PATCH] Bug 14152: Re-check required dependencies during upgrade
process
This code causes the installer to re-check dependencies during the
upgrade process.
Test Plan:
1. Remove a required dependency. (Such as the recently added
PDF::FromHTML and associated HTML::Tidy.)
2. Run the installer and note that it does not catch the missing
dependency.
3. Also note that things break badly due to the missing dependency.
4. Apply this patch.
5. Under Global System Preferences > Local Use > Version change the
dev revision number back one unit and save.
6. The updater will run and catch the missing dependency.
7. Install the missing dependency.
8. Return to the updater and continue with the update.
9. The update should complete successfully.
---
C4/Auth.pm | 2 +-
installer/install.pl | 19 ++++++++++---------
.../intranet-tmpl/prog/en/modules/installer/step1.tt | 15 ++++++++++++++-
3 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/C4/Auth.pm b/C4/Auth.pm
index 4b02701..f5a6d65 100644
--- a/C4/Auth.pm
+++ b/C4/Auth.pm
@@ -671,7 +671,7 @@ sub _version_check {
my $warning = "Database update needed, redirecting to %s. Database is $version and Koha is $kohaversion";
if ( $type ne 'opac' ) {
warn sprintf( $warning, 'Installer' );
- print $query->redirect("/cgi-bin/koha/installer/install.pl?step=3");
+ print $query->redirect("/cgi-bin/koha/installer/install.pl?step=1&op=updatestructure");
} else {
warn sprintf( "OPAC: " . $warning, 'maintenance' );
print $query->redirect("/cgi-bin/koha/maintenance.pl");
diff --git a/installer/install.pl b/installer/install.pl
index 1fbc685..ae506ba 100755
--- a/installer/install.pl
+++ b/installer/install.pl
@@ -53,9 +53,10 @@ my $dbh = DBI->connect(
);
if ( $step && $step == 1 ) {
- #First Step
+ #First Step (for both fresh installations and upgrades)
#Checking ALL perl Modules and services needed are installed.
#Whenever there is an error, adding a report to the page
+ my $op = $query->param('op') || 'noop';
$template->param( language => 1 );
$template->param( 'checkmodule' => 1 ); # we start with the assumption that there are no problems and set this to 0 if there are
@@ -84,7 +85,7 @@ if ( $step && $step == 1 ) {
);
}
@components = sort {$a->{'name'} cmp $b->{'name'}} @components;
- $template->param( missing_modules => \@components, checkmodule => $checkmodule );
+ $template->param( missing_modules => \@components, checkmodule => $checkmodule, op => $op );
}
}
elsif ( $step && $step == 2 ) {
@@ -312,13 +313,13 @@ elsif ( $step && $step == 3 ) {
#
#Do updatedatabase And report
- if ( ! defined $ENV{PERL5LIB} ) {
- my $find = "C4/Context.pm";
- my $path = $INC{$find};
- $path =~ s/\Q$find\E//;
- $ENV{PERL5LIB} = "$path:$path/installer";
- warn "# plack? inserted PERL5LIB $ENV{PERL5LIB}\n";
- }
+ if ( ! defined $ENV{PERL5LIB} ) {
+ my $find = "C4/Context.pm";
+ my $path = $INC{$find};
+ $path =~ s/\Q$find\E//;
+ $ENV{PERL5LIB} = "$path:$path/installer";
+ warn "# plack? inserted PERL5LIB $ENV{PERL5LIB}\n";
+ }
my $now = POSIX::strftime( "%Y-%m-%dT%H:%M:%S", localtime() );
my $logdir = C4::Context->config('logdir');
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tt
index 038c9dc..4fb70b5 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tt
@@ -30,7 +30,9 @@ listed, please inform your systems administrator.
[% END %]
[% IF ( language ) %]
- [% UNLESS ( checkmodule ) %]
+ [% IF ( checkmodule ) %]
+ All required Perl modules appear to be installed.
+ [% ELSE %]
[% IF ( missing_modules ) %]
Some Perl modules are missing. Modules in red must be installed before you may continue.
@@ -57,11 +59,22 @@ listed, please inform your systems administrator.
[% END %]
--
1.9.1