From c742f82167a2b30b87105dd27f2f752538d82d0b Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 7 Feb 2020 16:51:33 +0000 Subject: [PATCH] Bug 19735: Add support for max_ver --- C4/Installer/PerlModules.pm | 12 ++++++- installer/install.pl | 34 ++++++++++++++----- .../prog/en/modules/installer/step1.tt | 16 ++++++++- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/C4/Installer/PerlModules.pm b/C4/Installer/PerlModules.pm index f76bb4a38b..3f13c47ffd 100644 --- a/C4/Installer/PerlModules.pm +++ b/C4/Installer/PerlModules.pm @@ -60,10 +60,20 @@ sub versions_info { my $module_infos = { cur_ver => 0, - min_ver => $reqs->requirements_for_module($module), required => $type eq 'requires', }; + my $vers = $reqs->structured_requirements_for_module($module); + for my $req (@$vers) { + if ( $req->[0] eq '>=' || $req->[0] eq '>' ) { + $module_infos->{min_ver} = $req->[1]; + } elsif ( $req->[0] eq '<=' || $req->[0] eq '<' ) { + $module_infos->{max_ver} = $req->[1]; + } else { + push @{$module_infos->{exc_ver}}, $req->[1]; + } + } + my $attr; $Readonly::XS::MAGIC_COOKIE="Do NOT use or require Readonly::XS unless you're me."; diff --git a/installer/install.pl b/installer/install.pl index c9e119d6bc..851accb319 100755 --- a/installer/install.pl +++ b/installer/install.pl @@ -101,24 +101,42 @@ if ( $step && $step == 1 ) { my $perl_modules = C4::Installer::PerlModules->new; $perl_modules->versions_info; - my $modules = $perl_modules->get_attr('missing_pm'); - if ( scalar(@$modules) ) { - my @components = (); - foreach (@$modules) { + my $missing_modules = $perl_modules->get_attr('missing_pm'); + my $upgrade_modules = $perl_modules->get_attr('upgrade_pm'); + if ( scalar(@$missing_modules) || scalar(@$upgrade_modules) ) { + my @missing = (); + my @upgrade = (); + foreach (@$missing_modules) { my ( $module, $stats ) = each %$_; $checkmodule = 0 if $stats->{'required'}; push( - @components, + @missing, { name => $module, - version => $stats->{'min_ver'}, + min_version => $stats->{'min_ver'}, + max_version => $stats->{'max_ver'}, require => $stats->{'required'} } ); } - @components = sort { $a->{'name'} cmp $b->{'name'} } @components; + foreach (@$upgrade_modules) { + my ( $module, $stats ) = each %$_; + $checkmodule = 0 if $stats->{'required'}; + push( + @upgrade, + { + name => $module, + min_version => $stats->{'min_ver'}, + max_version => $stats->{'max_ver'}, + require => $stats->{'required'} + } + ); + } + @missing = sort { $a->{'name'} cmp $b->{'name'} } @missing; + @upgrade = sort { $a->{'name'} cmp $b->{'name'} } @upgrade; $template->param( - missing_modules => \@components, + missing_modules => \@missing, + upgrade_modules => \@upgrade, checkmodule => $checkmodule, op => $op ); 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 339af4fff3..d314036b99 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tt @@ -61,7 +61,21 @@ + [% END %] + + [% IF ( upgrade_modules ) %] +

Web installer › Perl modules due for upgrade

+

Some Perl modules require upgrade. Important: Required modules must be installed at the correct version before you may continue.
+

-- 2.20.1