[Koha-patches] [PATCH 4/4] [4/4] Enhancement Bug 4444: Centralize Code Handling Perl Dependencies
Chris Nighswonger
cnighswonger at foundations.edu
Thu May 13 04:58:04 CEST 2010
Porting install.pl over to use C4::Installer::PerlModules
---
installer/install.pl | 142 ++++----------------
.../prog/en/modules/installer/step1.tmpl | 39 ++----
2 files changed, 40 insertions(+), 141 deletions(-)
diff --git a/installer/install.pl b/installer/install.pl
index 80df97f..8945410 100755
--- a/installer/install.pl
+++ b/installer/install.pl
@@ -10,6 +10,7 @@ use C4::Context;
use C4::Output;
use C4::Languages qw(getAllLanguages getTranslatedLanguages);
use C4::Installer;
+use C4::Installer::PerlModules 1.000000;
use CGI;
use IPC::Cmd;
@@ -57,126 +58,35 @@ if ( $step && $step == 1 ) {
#Checking ALL perl Modules and services needed are installed.
#Whenever there is an error, adding a report to the page
$template->param( language => 1 );
- my $problem;
+ $template->param( 'checkmodule' => 1 ); # we start with the assumption that there are no problems and set this to 0 if there are
unless ( $] >= 5.006001 ) { # Bug 179
- $template->param( "problems" => 1, "perlversion" => 1 );
- $problem = 1;
+ $template->param( problems => 1, perlversion => 1, checkmodule => 0 );
}
- # We could here use a special find
- my @missing = ();
- unless ( eval { require ZOOM } ) {
- push @missing, { name => "ZOOM" };
- }
- unless ( eval { require YAML::Syck } ) {
- push @missing, { name => "YAML::Syck" };
- }
- unless ( eval { require LWP::Simple } ) {
- push @missing, { name => "LWP::Simple" };
- }
- unless ( eval { require XML::Simple } ) {
- push @missing, { name => "XML::Simple" };
- }
- unless ( eval { require MARC::File::XML } ) {
- push @missing, { name => "MARC::File::XML" };
- }
- unless ( eval { require MARC::File::USMARC } ) {
- push @missing, { name => "MARC::File::USMARC" };
- }
- unless ( eval { require DBI } ) {
- push @missing, { name => "DBI" };
- }
- unless ( eval { require Date::Manip } ) {
- push @missing, { name => "Date::Manip" };
- }
- unless ( eval { require DBD::mysql } ) {
- push @missing, { name => "DBD::mysql" };
- }
- unless ( eval { require HTML::Template::Pro } ) {
- push @missing, { name => "HTML::Template::Pro" };
- }
- unless ( eval { require Date::Calc } ) {
- push @missing, { name => "Date::Calc" };
- }
- unless ( eval { require Digest::MD5 } ) {
- push @missing, { name => "Digest::MD5" };
- }
- unless ( eval { require MARC::Record } ) {
- push @missing, { name => "MARC::Record" };
- }
- unless ( eval { require Mail::Sendmail } ) {
- push @missing, { name => "Mail::Sendmail", usagemail => 1 };
- }
- unless ( eval { require List::MoreUtils } ) {
- push @missing, { name => "List::MoreUtils" };
- }
- unless ( eval { require XML::RSS } ) {
- push @missing, { name => "XML::RSS" };
- }
- unless ( eval { require CGI::Carp } ) {
- push @missing, { name => "CGI::Carp" };
- }
+ my $perl_modules = C4::Installer::PerlModules->new;
+ $perl_modules->version_info;
-
-# The following modules are not mandatory, depends on how the library want to use Koha
- unless ( eval { require PDF::API2 } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing, { name => "PDF::API2", usagebarcode => 1 };
- }
- }
- unless ( eval { require GD::Barcorde } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing,
- { name => "GD::Barcode", usagebarcode => 1, usagespine => 1 };
- }
- }
- unless ( eval { require GD } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing,
- { name => "GD", usagepatronimages => 1 };
- }
- }
- unless ( eval { require Graphics::Magick } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing,
- { name => "Graphics::Magick", usagepatroncards => 1 };
- }
- }
- unless ( eval { require Data::Random } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing, { name => "Data::Random", usagebarcode => 1 };
- }
- }
- unless ( eval { require PDF::Reuse::Barcode } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing, { name => "PDF::Reuse::Barcode", usagebarcode => 1 };
- }
- }
- unless ( eval { require PDF::Report } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing, { name => "PDF::Report", usagebarcode => 1 };
- }
- }
- unless ( eval { require Algorithm::CheckDigits } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing, { name => "Algorithm::CheckDigits", usagebarcode => 1 };
- }
- }
- unless ( eval { require GD::Barcode::UPCE } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing, { name => "GD::Barcode::UPCE", usagepine => 1 };
- }
- }
- unless ( eval { require Net::LDAP } ) {
- if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
- push @missing, { name => "Net::LDAP", usageLDAP => 1 };
+ my $modules = $perl_modules->get_attr('missing_pm');
+ if (scalar(@$modules)) {
+ my @components = ();
+ my $checkmodule = 1;
+ foreach (@$modules) {
+ my ($module, $stats) = each %$_;
+ $checkmodule = 0 if $stats->{'required'};
+ push(
+ @components,
+ {
+ name => $module,
+ version => $stats->{'min_ver'},
+ require => $stats->{'required'},
+ usage => $stats->{'usage'},
+ }
+ );
}
+ @components = sort {$a->{'name'} cmp $b->{'name'}} @components;
+ $template->param( missing_modules => \@components, checkmodule => $checkmodule );
}
- $template->param( missings => \@missing ) if ( scalar(@missing) > 0 );
- $template->param( 'checkmodule' => 1 )
- unless ( scalar(@missing) && $problem );
-
}
elsif ( $step && $step == 2 ) {
#
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tmpl
index 3226622..23ecb65 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step1.tmpl
@@ -31,32 +31,19 @@ listed, please inform your systems administrator.</p>
<!--/TMPL_UNLESS-->
<!--TMPL_IF Name="language"-->
<!--TMPL_UNLESS Name="checkmodule"-->
- <!--TMPL_IF Name="missing"-->
- <p>Some perl modules are missing.<br />
+ <!--TMPL_IF Name="missing_modules"-->
+ <p>Some perl modules are missing. Modules in red <b>must</b> be installed before you may continue.<br />
<ul>
- <!--TMPL_LOOP Name="missing"-->
+ <!--TMPL_LOOP Name="missing_modules"-->
+ <!--TMPL_IF Name="require"-->
+ <li style="color:#FF0000;font-weight:bold;"><!--TMPL_VAR Name="name"-->
+ <!-- TMPL_ELSE -->
<li><!--TMPL_VAR Name="name"-->
- <!--TMPL_IF Name="usagemail"-->
- <br /> This module is used whenever Koha has to send email.
- <!--TMPL_ELSIF Name="usagebarcode"-->
- <br /> This module is needed if you intend to print barcodes.
- <!--TMPL_ELSIF Name="usagespine"-->
- <br /> This module is needed if you intend to print spine labels.
- <!--TMPL_ELSIF Name="usageLDAP"-->
- <br /> This module is needed if you intend to use LDAP for authentication.
- <!--TMPL_ELSIF Name="usagepatronimages"-->
- <br /> This module is needed if you intend to use patron images.
- <!--TMPL_ELSIF Name="usagepatroncards"-->
- <br /> This module is needed if you intend to use the patron card creator.
<!--/TMPL_IF-->
+ <br /> Version: <!--TMPL_VAR Name="version"-->
+ <br /> Usage: <!--TMPL_VAR Name="usage"-->
</li>
<!--/TMPL_LOOP-->
- Please consider installing these modules before continuing.
- <pre>
- <!--TMPL_LOOP Name="missing"-->
- perl -MCPAN -e "install <!--TMPL_VAR Name="name"-->";
- <!--/TMPL_LOOP-->
- </pre>
<!--/TMPL_IF-->
<!--TMPL_IF Name="problems"-->
<p>I encountered some problems.</p>
@@ -68,13 +55,15 @@ listed, please inform your systems administrator.</p>
</ul>
<!--/TMPL_IF-->
<!--/TMPL_UNLESS-->
- <!--TMPL_IF Name="checkmodule"-->
<form name="checkmodules" action="install.pl">
-<p> All dependencies installed.
-</p>
+<!--TMPL_IF Name="checkmodule"-->
<input type="hidden" name="step" value="2" />
+<p> All dependencies installed.</p>
<p>Please click next to continue <input value="Next >>" type="submit" /></p>
+<!-- TMPL_ELSE -->
+<input type="hidden" name="step" value="1" />
+<p>Click to recheck dependencies <input value="Recheck" type="submit" /></p>
+<!--/TMPL_IF-->
</form>
- <!--/TMPL_IF-->
<!--/TMPL_IF-->
<!-- TMPL_INCLUDE name="intranet-bottom.inc" -->
--
1.7.0.4
More information about the Koha-patches
mailing list