X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=scripts%2Finstallation_check.pl;fp=scripts%2Finstallation_check.pl;h=33fd7ca73da5c510f2cdda1800515c166cb018cd;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hp=43b290a35322b9e56f35304b8046496270cb77b0;hpb=deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44;p=kivitendo-erp.git diff --git a/scripts/installation_check.pl b/scripts/installation_check.pl index 43b290a35..33fd7ca73 100755 --- a/scripts/installation_check.pl +++ b/scripts/installation_check.pl @@ -1,19 +1,23 @@ #!/usr/bin/perl -w -use strict; -use Getopt::Long; -use Pod::Usage; -use Term::ANSIColor; -use Text::Wrap; 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. + use FindBin; + + unshift(@INC, $FindBin::Bin . '/../modules/override'); # Use our own versions of various modules (e.g. YAML). + push (@INC, $FindBin::Bin . '/..'); # '.' will be removed from @INC soon. # this is a default dir. may be wrong in your installation, change it then - $master_templates = './templates/print/'; + $master_templates = $FindBin::Bin . '/../templates/print/'; } +use strict; +use Getopt::Long; +use List::MoreUtils qw(uniq); +use Pod::Usage; +use Term::ANSIColor; +use Text::Wrap; + unless (eval { require Config::Std; 1 }){ print STDERR < { key => 'debian', install => 'sudo apt-get install', system => "Debian, Ubuntu" }, + apt => { key => 'debian', install => 'sudo apt install', system => "Debian, Ubuntu" }, yum => { key => 'fedora', install => 'sudo yum install', system => "RHEL, Fedora, CentOS" }, zypper => { key => 'suse', install => 'sudo zypper install', system => "SLES, openSUSE" }, cpan => { key => 'name', install => "sudo cpan", system => "CPAN" }, @@ -78,7 +82,7 @@ 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.') + print_header('Could not load the config file. If you have dependencies from any features enabled in the configuration these will still show up as optional because of this. Please rerun this script after installing the dependencies needed to load the configuration.') } else { SL::InstallationCheck::check_for_conditional_dependencies(); } @@ -86,6 +90,7 @@ if (!SL::LxOfficeConf->read(undef, 'may fail')) { if ($check{r}) { print_header('Checking Required Modules'); check_module($_, required => 1) for @SL::InstallationCheck::required_modules; + check_pdfinfo(); } if ($check{o}) { print_header('Checking Optional Modules'); @@ -116,7 +121,7 @@ EOL Standard check done, everything is OK and up to date. Have a look at the --help section of this script to see some more advanced checks for developer and -optional dependancies, as well as LaTeX packages you might need. +optional dependencies, as well as LaTeX packages you might need. EOL } } @@ -140,9 +145,28 @@ exit !!@missing_modules; sub check_latex { my ($res) = check_kpsewhich(); print_result("Looking for LaTeX kpsewhich", $res); + + # no pdfx -> no zugferd possible + my $ret = kpsewhich('template/print/', 'sty', 'pdfx'); + die "Cannot use pdfx. Please install this package first (debian: apt install texlive-latex-extra)" if $ret; + # check version 2018 + my $latex = $::lx_office_conf{applications}->{latex} || 'pdflatex'; + my $pdfx = (system ${latex} . ' --interaction=batchmode "\documentclass{minimal} \RequirePackage{pdfx} \csname @ifpackagelater\endcsname{pdfx}{2018/12/22}{}{\show\relax} \begin{document} \end{document}"'); + + print_result ("Looking for pdfx version 2018 or higher", !$pdfx); + push @missing_modules, \(name => 'pdfx') if $pdfx; + if ($res) { check_template_dir($_) for SL::InstallationCheck::template_dirs($master_templates); } + print STDERR < /dev/null|); my $res = $exit > 0 ? 0 : 1; @@ -197,6 +226,21 @@ EOL } } +sub check_pdfinfo { + my $line = "Looking for pdfinfo executable"; + my $shell_out = `pdfinfo -v 2>&1 | grep version 2> /dev/null`; + my ($label,$vers,$ver_string) = split / /,$shell_out; + if ( $label && $label eq 'pdfinfo' ) { + chop $ver_string; + print_line($line, $ver_string, 'green'); + } else { + print_line($line, 'not installed','red'); + my %modinfo = ( debian => 'poppler-utils' ); + push @missing_modules, \%modinfo; + + } +} + sub check_module { my ($module, %role) = @_; @@ -219,7 +263,7 @@ sub check_module { $role{optional} ? 'It is OPTIONAL for kivitendo but RECOMMENDED for improved functionality.' : $role{required} ? 'It is NEEDED by kivitendo and must be installed.' : $role{devel} ? 'It is OPTIONAL for kivitendo and only useful for developers.' - : 'It is not listed as a dependancy yet. Please tell this the developers.'; + : 'It is not listed as a dependency yet. Please tell this the developers.'; my @source_texts = module_source_texts($module); local $" = $/; @@ -289,7 +333,7 @@ __END__ =head1 NAME -scripts/installation_check.pl - check kivitendo dependancies +scripts/installation_check.pl - check kivitendo dependencies =head1 SYNOPSIS @@ -321,11 +365,11 @@ No color output. Helpful to avoid terminal escape problems. =item C<-d, --devel> -Probe for perl developer dependancies. (Used for console and tags file) +Probe for perl developer dependencies. (Used for console and tags file) =item C<--no-devel> -Don't probe for perl developer dependancies. (Useful in combination with --all) +Don't probe for perl developer dependencies. (Useful in combination with --all) =item C<-h, --help> @@ -357,7 +401,7 @@ Don't probe for LaTeX document classes and packages in master templates. (Useful =item C<-v. --verbose> -Print additional info for missing dependancies +Print additional info for missing dependencies =item C<-i, --install-command>