From 3d1d7622df1d2a2dbade851137c5acf8806a21e3 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) Log in to staff client 2) Koha Administration -> Global system preferences -> Local 3) Change Version to previous version -- DO NOT HIT SAVE YET! 4) In command line: sudo apt-get purge libpdf-fromhtml-perl NOTE: This could be ANY required library. I chose PDF::FromHTML, because it has been a thorn in my side. 5) NOW! Hit the 'Save' button. 6) Log in, etc. etc... -- Blows up on redirect to log in. 7) In command line, add it back (I had to compile my own so, I used sudo dpkg -i /path/to/libpdf-fromhtml-perl...) 8) Apply patch 9) Edit the C4/Installer/PerlDependencies.pm to make PDF::FromHTML required. See also bug 14103. 10) Log in to staff client 11) Koha Administration -> Global system preferences -> Local 12) Change Version to previous version -- DO NOT HIT SAVE YET! 13) In command line: sudo apt-get purge libpdf-fromhtml-perl 14) NOW! Hit the 'Save' button. 15) Log in, etc. etc... 16) Once warned you are missing it, add it back at the command line. 17) Click 'Recheck' -- Proceeds as expected now. Signed-off-by: Mark Tompsett --- 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.