X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/1f7d4ae37c498547306612a3e9d27cdfad2edbef..67079598f8f98a12e12a8acddc3afbf12bb58c5d:/scripts/installation_check.pl diff --git a/scripts/installation_check.pl b/scripts/installation_check.pl index 0167cdb9b..a50d184d2 100755 --- a/scripts/installation_check.pl +++ b/scripts/installation_check.pl @@ -4,13 +4,17 @@ use strict; use Getopt::Long; use Pod::Usage; use Term::ANSIColor; - +our $master_templates; 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. + + # this is a default dir. may be wrong in your installation, change it then + $master_templates = './templates/print/'; } use SL::InstallationCheck; +use SL::LxOfficeConf; my %check; Getopt::Long::Configure ("bundling"); @@ -19,15 +23,21 @@ GetOptions( "a|all" => \ $check{a}, "o|optional!" => \ $check{o}, "d|devel!" => \ $check{d}, + "l|latex!" => \ $check{l}, "r|required!" => \ $check{r}, "h|help" => sub { pod2usage(-verbose => 2) }, "c|color!" => \ ( my $c = 1 ), ); -# if notihing is requested check "required" -$check{r} = 1 unless defined $check{a} || - defined $check{o} || - defined $check{d}; +# if nothing is requested check "required" +my $default_run; +if (!defined $check{a} + && !defined $check{l} + && !defined $check{o} + && !defined $check{d}) { + $check{r} = 1; + $default_run ='1'; # no parameter, therefore print a note after default run +} if ($check{a}) { foreach my $check (keys %check) { @@ -38,22 +48,101 @@ if ($check{a}) { $| = 1; +if (!SL::LxOfficeConf->read(undef, 'may fail')) { + print_header('Could not load the config file. If you have dependancies from any features enabled in the configuration these will still show up as optional because of this. Please rerun this script after installing the dependancies needed to load the cofiguration.') +} else { + SL::InstallationCheck::check_for_conditional_dependencies(); +} + if ($check{r}) { + print_header('Checking Required Modules'); check_module($_, required => 1) for @SL::InstallationCheck::required_modules; + print_header('Standard check for required modules done. See additional parameters for more checks (--help)') if $default_run; } if ($check{o}) { + print_header('Checking Optional Modules'); check_module($_, optional => 1) for @SL::InstallationCheck::optional_modules; } if ($check{d}) { + print_header('Checking Developer Modules'); check_module($_, devel => 1) for @SL::InstallationCheck::developer_modules; } +if ($check{l}) { + check_latex(); +} + +sub check_latex { + my ($res) = check_kpsewhich(); + print_result("Looking for LaTeX kpsewhich", $res); + if ($res) { + check_template_dir($_) for SL::InstallationCheck::template_dirs($master_templates); + } +} + +sub check_template_dir { + my ($dir) = @_; + my $path = $master_templates . $dir; + + print_header("Checking LaTeX Dependencies for Master Templates '$dir'"); + kpsewhich($path, 'cls', $_) for SL::InstallationCheck::classes_from_latex($path, '\documentclass'); + kpsewhich($path, 'sty', $_) for SL::InstallationCheck::classes_from_latex($path, '\usepackage'); +} + +our $mastertemplate_path = './templates/print/'; + +sub check_kpsewhich { + return 1 if SL::InstallationCheck::check_kpsewhich(); + + print STDERR < /dev/null|); + my $res = $exit > 0 ? 0 : 1; + + print_result("Looking for LaTeX $type_desc $package", $res); + if (!$res) { + print STDERR <{"name"}, $module->{version}); - print_result($line, $res); + my ($res, $ver) = SL::InstallationCheck::module_available($module->{"name"}, $module->{version}); + if ($res) { + my $ver_string = ref $ver && $ver->can('numify') ? $ver->numify : $ver ? $ver : 'no version'; + print_line($line, $ver_string, 'green'); + } else { + print_result($line, $res); + } + return if $res; @@ -107,10 +196,21 @@ sub mycolor { sub print_result { my ($test, $exit) = @_; - print $test, " ", ('.' x (72 - length $test)); - print $exit ? '.... '. mycolor('ok', 'green') : ' '. mycolor('NOT ok', 'red'); - print "\n"; - return; + if ($exit) { + print_line($test, 'ok', 'green'); + } else { + print_line($test, 'NOT ok', 'red'); + } +} + +sub print_line { + my ($text, $res, $color) = @_; + print $text, " ", ('.' x (78 - length($text) - length($res))), " ", mycolor($res, $color), $/; +} + +sub print_header { + print $/; + print "$_[0]:", $/; } 1; @@ -130,7 +230,10 @@ scripts/installation_check.pl - check Lx-Office dependancies =head1 DESCRIPTION Check dependencys. List all perl modules needed by Lx-Office, probes for them, -and warns if one is not available. +and warns if one is not available. List all LaTeX document classes and +packages needed by Lx-Office master templates, probes for them, and warns if +one is not available. + =head1 OPTIONS @@ -154,7 +257,7 @@ Probe for perl developer dependancies. (Used for console and tags file) =item C<--no-devel> -Dont't probe for perl developer dependancies. (Usefull in combination with --all) +Don't probe for perl developer dependancies. (Useful in combination with --all) =item C<-h, --help> @@ -166,7 +269,7 @@ Probe for optional modules. =item C<--no-optional> -Dont't probe for optional perl modules. (Usefull in combination with --all) +Don't probe for optional perl modules. (Useful in combination with --all) =item C<-r, --required> @@ -174,7 +277,15 @@ Probe for required perl modules (default). =item C<--no-required> -Dont't probe for required perl modules. (Usefull in combination with --all) +Don't probe for required perl modules. (Useful in combination with --all) + +=item C<-l. --latex> + +Probe for LaTeX documentclasses and packages in master templates. + +=item C<--no-latex> + +Don't probe for LaTeX document classes and packages in master templates. (Useful in combination with --all) =item C<-v. --verbose>