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.