UNECRecommendation20: Mapping von Einheitsnamen auf Codes
[kivitendo-erp.git] / scripts / installation_check.pl
index 8557f9e..887013b 100755 (executable)
@@ -6,7 +6,6 @@ BEGIN {
 
   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.
-  push   (@INC, $FindBin::Bin . '/../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 = $FindBin::Bin . '/../templates/print/';
@@ -14,6 +13,7 @@ BEGIN {
 
 use strict;
 use Getopt::Long;
+use List::MoreUtils qw(uniq);
 use Pod::Usage;
 use Term::ANSIColor;
 use Text::Wrap;
@@ -58,7 +58,7 @@ GetOptions(
 );
 
 my %install_methods = (
-  apt    => { 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" },
@@ -90,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');
@@ -156,7 +157,12 @@ sub check_template_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');
+
+  my @sty = sort { $a cmp $b } uniq (
+    SL::InstallationCheck::classes_from_latex($path, '\usepackage'),
+    qw(textcomp ulem pdfx embedfile)
+  );
+  kpsewhich($path, 'sty', $_) for @sty;
 }
 
 our $mastertemplate_path = './templates/print/';
@@ -178,10 +184,10 @@ sub kpsewhich {
   $package =~ s/[^-_0-9A-Za-z]//g;
   my $type_desc = $type eq 'cls' ? 'document class' : 'package';
 
-  eval { use String::ShellQuote; 1 } or warn "can't load String::ShellQuote" && return;
-     $dw         = shell_quote $dw;
-  my $e_package  = shell_quote $package;
-  my $e_type     = shell_quote $type;
+  eval { require String::ShellQuote; 1 } or warn "can't load String::ShellQuote" && return;
+     $dw         = String::ShellQuote::shell_quote $dw;
+  my $e_package  = String::ShellQuote::shell_quote $package;
+  my $e_type     = String::ShellQuote::shell_quote $type;
 
   my $exit = system(qq|TEXINPUTS=".:$dw:" kpsewhich $e_package.$e_type > /dev/null|);
   my $res  = $exit > 0 ? 0 : 1;
@@ -202,6 +208,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_aqbanking {
   my $aqbin = $::lx_office_conf{applications}->{aqbanking};
   if ( !$aqbin ) {