X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=scripts%2Finstallation_check.pl;h=9a28c03caf315f2c9899cbaa8843eebb7c7b1f10;hb=9be7c8ab43c49d7935cc91d3be72bc5717e07dc0;hp=8b1017e2ebe880db183e4b07986d010c27d6b94b;hpb=170507ca80880ddcd65e8a91545b8bb2c37e5690;p=kivitendo-erp.git diff --git a/scripts/installation_check.pl b/scripts/installation_check.pl index 8b1017e2e..9a28c03ca 100755 --- a/scripts/installation_check.pl +++ b/scripts/installation_check.pl @@ -1,38 +1,65 @@ #!/usr/bin/perl -w +use strict; + +BEGIN { + unshift @INC, "modules/override"; # Use our own versions of various modules (e.g. YAML). + push @INC, "modules/fallback"; # Only use our own versions of modules if there's no system version. +} + +use SL::InstallationCheck; + $| = 1; -my @required_modules = ( - { "name" => "Class::Accessor", "url" => "http://search.cpan.org/~kasei/" }, - { "name" => "CGI", "url" => "http://search.cpan.org/~lds/" }, - { "name" => "CGI::Ajax", "url" => "http://search.cpan.org/~bct/" }, - { "name" => "DBI", "url" => "http://search.cpan.org/~timb/" }, - { "name" => "DBD::Pg", "url" => "http://search.cpan.org/~dbdpg/" }, - { "name" => "HTML::Template", "url" => "http://search.cpan.org/~samtregar/" }, - { "name" => "Archive::Zip", "url" => "http://search.cpan.org/~adamk/" }, - { "name" => "Text::Iconv", "url" => "http://search.cpan.org/~mpiotr/" }, - ); - -sub module_available { - my ($module) = @_; +check($_, 0) for @SL::InstallationCheck::required_modules; +check($_, 1) for @SL::InstallationCheck::optional_modules; + +sub check { + my ($module, $optional) = @_; + + print "Looking for $module->{fullname}..."; + my $res = SL::InstallationCheck::module_available($module->{"name"}, $module->{version}); + print $res ? '' : " NOT", " ok\n"; - if (!defined(eval("require $module;"))) { - return 0; - } else { - return 1; - } + return if $res; + + my $needed_text = $optional + ? 'It is OPTIONAL for Lx-Office but recommended for improved functionality.' + : 'It is NEEDED by Lx-Office and must be installed.'; + + my @source_texts = source_texts($module); + local $" = $/; + print STDERR <{fullname} could not be loaded. + + This module is either too old or not available on your system. + $needed_text + + Here are some ideas how to get it: + +@source_texts ++-----------------------------------------------------------------------------+ +EOL } -foreach my $module (@required_modules) { - print("Looking for $module->{name}..."); - if (!module_available($module->{"name"})) { - print(" NOT found\n" . - " The module '$module->{name}' is not available on your system.\n" . - " Please install it with the CPAN shell, e.g.\n" . - " perl -MCPAN -e install \"install $module->{name}\"\n" . - " or download it from this URL and install it manually:\n" . - " $module->{url}\n\n"); - } else { - print(" ok\n"); - } +sub source_texts { + my ($module) = @_; + my @texts; + push @texts, <{name}" +EOL + push @texts, <{url}; + - You can download it from this URL and install it manually: + $module->{url} +EOL + push @texts, <{debian}; + - On Debian, Ubuntu and other distros you can install it with apt-get: + sudo apt-get install $module->{debian} + Note: These may be out of date as well if your system is old. +EOL + # TODO: SuSE and Fedora packaging. Windows packaging. + + return @texts; }