Revision 8024be0f
Von Wulf Coulmann vor etwa 13 Jahren hinzugefügt
SL/InstallationCheck.pm | ||
---|---|---|
return eval "use $module $version; 1";
|
||
}
|
||
|
||
sub check_kpsewhich {
|
||
my $exit = system("which kpsewhich > /dev/null");
|
||
|
||
return $exit > 0 ? 0 : 1;
|
||
}
|
||
|
||
sub template_dirs {
|
||
my ($path) = @_;
|
||
opendir my $dh, $path || die "can't open $path";
|
||
my @templates = sort grep { !/^\.\.?$/ } readdir $dh;
|
||
close $dh;
|
||
|
||
return @templates;
|
||
}
|
||
|
||
sub classes_from_latex {
|
||
my ($path, $class) = @_;
|
||
open my $pipe, q#egrep -rs '^[\ \t]*# . "$class' $path". q# | sed 's/ //g' | awk -F '{' '{print $2}' | awk -F '}' '{print $1}' |#;
|
||
my @cls = <$pipe>;
|
||
close $pipe;
|
||
|
||
# can't use uniq here
|
||
my %class_hash = map { $_ => 1 } map { s/\n//; $_ } split ',', join ',', @cls;
|
||
return sort keys %class_hash;
|
||
}
|
||
|
||
my %conditional_dependencies;
|
||
|
||
sub check_for_conditional_dependencies {
|
scripts/installation_check.pl | ||
---|---|---|
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;
|
||
... | ... | |
"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{l} ||
|
||
defined $check{o} ||
|
||
defined $check{d};
|
||
|
||
... | ... | |
$| = 1;
|
||
|
||
if ($check{r}) {
|
||
print_header('Checking Required Modules');
|
||
check_module($_, required => 1) for @SL::InstallationCheck::required_modules;
|
||
}
|
||
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 ? ('ok', 'green') : ('NOT ok', 'red'));
|
||
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 <<EOL if $v;
|
||
+------------------------------------------------------------------------------+
|
||
Can't find kpsewhich, is there a proper installed LaTeX?
|
||
On Debian you may run "aptitude install texlive-base-bin"
|
||
+------------------------------------------------------------------------------+
|
||
EOL
|
||
return 0;
|
||
}
|
||
|
||
sub kpsewhich {
|
||
my ($dw, $type, $package) = @_;
|
||
$package =~ s/[^-_0-9A-Za-z]//g;
|
||
my $type_desc = $type eq 'cls' ? 'document class' : 'package';
|
||
|
||
my $exit = system(qq|TEXINPUTS=".:$dw:" kpsewhich $package.$type > /dev/null|);
|
||
my $res = $exit > 0 ? 0 : 1;
|
||
|
||
print_result("Looking for LaTeX $type_desc $package", $res);
|
||
if (!$res) {
|
||
print STDERR <<EOL if $v;
|
||
+------------------------------------------------------------------------------+
|
||
LaTeX $type_desc $package could not be loaded.
|
||
|
||
On Debian you may find the needed *.deb package with:
|
||
apt-file search $package.$type
|
||
|
||
Maybe you need to install apt-file first by:
|
||
aptitude install apt-file && apt-file update
|
||
+------------------------------------------------------------------------------+
|
||
EOL
|
||
}
|
||
}
|
||
|
||
sub check_module {
|
||
my ($module, %role) = @_;
|
||
... | ... | |
return;
|
||
}
|
||
|
||
sub print_header {
|
||
print $/;
|
||
print "$_[0]:", $/;
|
||
}
|
||
|
||
1;
|
||
|
||
__END__
|
||
... | ... | |
=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
|
||
|
||
... | ... | |
|
||
=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>
|
||
|
||
... | ... | |
|
||
=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>
|
||
|
||
... | ... | |
|
||
=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>
|
||
|
Auch abrufbar als: Unified diff
Prüfung von LaTeX Abhängigkeiten