diff options
author | Reinhard Kotucha <reinhard.kotucha@web.de> | 2008-02-15 21:50:46 +0000 |
---|---|---|
committer | Reinhard Kotucha <reinhard.kotucha@web.de> | 2008-02-15 21:50:46 +0000 |
commit | a0dc936cc86f414b134c0258ac929307d5d14d2c (patch) | |
tree | 952cb5738205fa9ab73a28d8579c3b4357516518 /Master | |
parent | d097e1fbdd28bd1849d7670e2a64aba1d133cc76 (diff) |
getnonfreefonts: updated. Requires a recent version of kpsewhich
which supports tilde expansion.
git-svn-id: svn://tug.org/texlive/trunk@6641 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rwxr-xr-x | Master/bin/i386-linux/getnonfreefonts | 41 | ||||
-rwxr-xr-x | Master/bin/win32/getnonfreefonts-sys.bat | 315 | ||||
-rwxr-xr-x | Master/bin/win32/getnonfreefonts.bat | 622 | ||||
-rwxr-xr-x | Master/bin/x86_64-linux/getnonfreefonts | 41 | ||||
-rwxr-xr-x | Master/bin/x86_64-linux/kpsewhich | bin | 73248 -> 75040 bytes |
5 files changed, 678 insertions, 341 deletions
diff --git a/Master/bin/i386-linux/getnonfreefonts b/Master/bin/i386-linux/getnonfreefonts index 3ab220ee570..9c419e65bd7 100755 --- a/Master/bin/i386-linux/getnonfreefonts +++ b/Master/bin/i386-linux/getnonfreefonts @@ -1,7 +1,7 @@ #!/usr/bin/env perl ## getnonfreefonts -## Copyright 2006 Reinhard Kotucha <reinhard.kotucha@web.de> +## Copyright 2006-2008 Reinhard Kotucha <reinhard.kotucha@web.de> # # This work may be distributed and/or modified under the # conditions of the LaTeX Project Public License, either version 1.3 @@ -11,7 +11,7 @@ # # The current maintainer is Reinhard Kotucha. -my $TL_version='2007'; +my $TL_version='2008'; my $getfont_url="ftp://tug.org/tex/getnonfreefonts/getfont$TL_version"; @@ -141,10 +141,9 @@ debug_msg "Internal variable SYSTMP set to '$SYSTMP'"; # Windows usually uses backslashes though forward slashes are probably # allowed. Perl always needs forward slashes. -# We convert backslashes to forward slashes if it looks like a Windows -# directory. -$SYSTMP=~s/\\/\//g if ($SYSTMP=~/^.:\\/); # c:\abc\def -$SYSTMP=~s/\\/\//g if ($SYSTMP=~/^\\\\/); # \\abc\def +# We convert backslashes to forward slashes on Windows. +$SYSTMP=~s/\\/\//g if ($^O=~/^MSWin(32|64)/i); + debug_msg "Internal variable SYSTMP converted to '$SYSTMP'"; @@ -180,8 +179,7 @@ $INSTALLROOT=expand_var "$INSTALLROOTNAME"; debug_msg "INSTALLROOT='$INSTALLROOT'"; -$INSTALLROOT=~s/\\/\//g if ($INSTALLROOT=~/^.:\\/); # c:\abc\def -$INSTALLROOT=~s/\\/\//g if ($INSTALLROOT=~/^\\\\/); # \\abc\def +$INSTALLROOT=~s/\\/\//g if ($^O=~/^MSWin(32|64)/i); debug_msg "Internal variable INSTALLROOT converted to '$INSTALLROOT'"; @@ -235,21 +233,30 @@ sub remove_tmpdir { rmdir "$tmpdir" or die "! ERROR: Can't remove directory '$tmpdir'.\n"; } -# Signal handlers for UNIX, maybe ignored by Windows. +# Signal handlers. + +my @common_signals=qw(INT ILL FPE SEGV TERM ABRT); +my @signals_UNIX=qw(QUIT BUS PIPE); +my @signals_Win32=qw(BREAK); + + +if ($^O=~/^MSWin(32|64)$/i) { + @signals=(@common_signals, @signals_Win32); +} else { + @signals=(@common_signals, @signals_UNIX); +} + +debug_msg "Supported signals: @signals\n"; -$SIG{INT} =\&remove_tmpdir; -$SIG{QUIT}=\&remove_tmpdir; -$SIG{BUS} =\&remove_tmpdir; -$SIG{PIPE}=\&remove_tmpdir; -$SIG{TERM}=\&remove_tmpdir; -$SIG{ABRT}=\&remove_tmpdir; -$SIG{SEGV}=\&remove_tmpdir; +foreach my $signal (@signals) { + $SIG{"$signal"}=\&remove_tmpdir; +} # Download the script from tug.org. debug_msg "Running 'wget $getfont_url'"; -system ('wget', "$getfont_url"); +system ('wget', "$getfont_url") == 0 or die "! Error: Can't execute wget.\n"; # Download the fonts. diff --git a/Master/bin/win32/getnonfreefonts-sys.bat b/Master/bin/win32/getnonfreefonts-sys.bat new file mode 100755 index 00000000000..1ed804c3f53 --- /dev/null +++ b/Master/bin/win32/getnonfreefonts-sys.bat @@ -0,0 +1,315 @@ +@rem = '--*-Perl-*-- +@echo off +perl -x -S %0 %* +goto endofperl +@rem '; +#!/usr/bin/env perl +#line 8 +#!/usr/bin/env perl + +## getnonfreefonts +## Copyright 2006-2008 Reinhard Kotucha <reinhard.kotucha@web.de> +# +# This work may be distributed and/or modified under the +# conditions of the LaTeX Project Public License, either version 1.3 +# of this license or (at your option) any later version. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# +# The current maintainer is Reinhard Kotucha. + +my $TL_version='2008'; + +my $getfont_url="ftp://tug.org/tex/getnonfreefonts/getfont$TL_version"; + +use File::Copy; +use Getopt::Long; +$Getopt::Long::autoabbrev=0; + +$opt_lsfonts=0; +$opt_force=0; + +sub usage { + print <<'EOF'; +Usage: + getnonfreefonts[-sys] [-a|--all] [-d|--debug] [-f|--force] + [-l|--lsfonts] [-v|--verbose] [--version] [font1] [font2] ... + + getnonfreefonts installs fonts in $TEXMFHOME. + getnonfreefonts-sys installs fonts in $TEXMFLOCAL. + + Options: + -a|--all Install all fonts. + + -d|--debug Provide additional messages for debugging. + + -f|--force Install fonts even if they are installed already. + + -h|--help Print this message. + + -l|--lsfonts List all fonts available. + + -v|--verbose Be more verbose. + + --version Print version number. + +EOF +; +} + +@ARGS=@ARGV; + +GetOptions + "all|a", + "debug|d", + "force|f", + "help|h", + "lsfonts|l", + "verbose|v", + "version", + "sys"; + +$^W=1 if $opt_debug; + +my $sys=($0=~/-sys$/)? 1:0; +$sys=1 if $opt_sys; + +@allpackages=@ARGV; + +print "$TL_version\n" and exit 0 if $opt_version; + +if ($opt_help or !@ARGS) { + print "\nThis is getnonfreefonts"; + print '-sys' if ($sys); + print ", version $TL_version.\n\n"; + usage; +} + + +sub message { + my $message=shift; + if ($message=~/^\[/) { + print "$message\n"; + } else { + printf "%-60s", $message; + } +} + + +sub debug_msg { + my $message=shift; + if ($opt_debug) { + print STDERR "DEBUG: $message.\n"; + } +} + + +sub expand_var { + my $var=shift; + + if (-d "/usr/bin") { + open KPSEWHICH, 'kpsewhich --expand-var=\$' . "$var |"; + } else { + open KPSEWHICH, 'kpsewhich --expand-var=$' . "$var |"; + } + while (<KPSEWHICH>) { + chop; + return "$_"; + } + close KPSEWHICH; +} + + +# get TMP|TEMP|TMPDIR environment variable + +if ($opt_debug) { + for my $var ("TMP","TEMP","TMPDIR") { + if (defined $ENV{$var}) { + debug_msg "Environment variable $var='$ENV{$var}'"; + } else { + debug_msg "Environment variable $var not set"; + } + } +} + + +if (defined $ENV{'TMP'}) { + $SYSTMP="$ENV{'TMP'}"; +} elsif (defined $ENV{'TEMP'}) { + $SYSTMP="$ENV{'TEMP'}"; +} elsif (defined $ENV{'TMPDIR'}) { + $SYSTMP="$ENV{'TMPDIR'}"; +} else { + $SYSTMP="/tmp"; +} + +debug_msg "Internal variable SYSTMP set to '$SYSTMP'"; + +# Windows usually uses backslashes though forward slashes are probably +# allowed. Perl always needs forward slashes. + +# We convert backslashes to forward slashes on Windows. +$SYSTMP=~s/\\/\//g if ($^O=~/^MSWin(32|64)/i); + + +debug_msg "Internal variable SYSTMP converted to '$SYSTMP'"; + +sub check_tmpdir{ +die "! ERROR: The temporary directory '$SYSTMP' doesn't exist.\n" + unless (-d "$SYSTMP"); + +die "! ERROR: The temporary directory '$SYSTMP' is not writable.\n" + unless (-w "$SYSTMP"); +} + +# Determine INSTALLROOT. + +if ($opt_debug) { + my @path=split ':', $ENV{PATH}; + for my $dir (@path) { + debug_msg "Search for kpsewhich in '$dir'"; + opendir DIR, "$dir"; + my @kpsewichs=grep /^kpsewhich/, readdir DIR; + closedir DIR; + for (@kpsewichs) { + debug_msg "Found $dir/$_" if /^kpsewhich/; + } + } +} + + +$INSTALLROOTNAME=($sys)? 'TEXMFLOCAL':'TEXMFHOME'; + +$INSTALLROOT=expand_var "$INSTALLROOTNAME"; + +($sys)? debug_msg "sys=true":debug_msg "sys=false"; + +debug_msg "INSTALLROOT='$INSTALLROOT'"; + +$INSTALLROOT=~s/\\/\//g if ($^O=~/^MSWin(32|64)/i); + +debug_msg "Internal variable INSTALLROOT converted to '$INSTALLROOT'"; + +sub check_installroot { + die "! ERROR: The variable $INSTALLROOTNAME is not set.\n" + unless length ("$INSTALLROOT") > 0; + + die "! ERROR: The install directory '$INSTALLROOT' doesn't " . + "exist.\n" . + " If this is the correct path, please create " . + "this directory manually.\n" + unless (-d "$INSTALLROOT"); + + die "! ERROR: The install directory '$INSTALLROOT' is not writable.\n" + unless (-w "$INSTALLROOT"); +} + +if ($opt_help or !@ARGS) { + print <<"ENDUSAGE"; + Directories: + temporary: '$SYSTMP/getfont-<PID>' + install: '$INSTALLROOT' + +ENDUSAGE +check_tmpdir; +check_installroot; +exit 0; +} + +check_tmpdir; +check_installroot; + +my $tmpdir="$SYSTMP/getfont-$$"; +debug_msg "Internal variable tmpdir set to '$tmpdir'"; + +mkdir "$tmpdir" or die "! ERROR: Can't mkdir '$tmpdir'."; +chdir "$tmpdir" or die "! ERROR: Can't cd '$tmpdir'."; + +sub remove_tmpdir { + chdir "$SYSTMP" or die "! ERROR: Can't cd '$SYSTMP'.\n"; + opendir TMPDIR, "$tmpdir" + or print "! ERROR: Can't read directory '$tmpdir'.\n"; + + @alltmps=readdir TMPDIR; + closedir TMPDIR; + + foreach $file (@alltmps) { + next if $file=~/^\./; + unlink "$tmpdir/$file"; + } + rmdir "$tmpdir" or die "! ERROR: Can't remove directory '$tmpdir'.\n"; +} + +# Signal handlers. + +my @common_signals=qw(INT ILL FPE SEGV TERM ABRT); +my @signals_UNIX=qw(QUIT BUS PIPE); +my @signals_Win32=qw(BREAK); + + +if ($^O=~/^MSWin(32|64)$/i) { + @signals=(@common_signals, @signals_Win32); +} else { + @signals=(@common_signals, @signals_UNIX); +} + +debug_msg "Supported signals: @signals\n"; + +foreach my $signal (@signals) { + $SIG{"$signal"}=\&remove_tmpdir; +} + +# Download the script from tug.org. + +debug_msg "Running 'wget $getfont_url'"; + +system ('wget', "$getfont_url") == 0 or die "! Error: Can't execute wget.\n"; + +# Download the fonts. + +my @getfont=('perl', "./getfont$TL_version", '--getnonfreefonts'); +push @getfont, "--installroot=$INSTALLROOT"; +push @getfont, '--lsfonts' if $opt_lsfonts; +push @getfont, '--force' if $opt_force; +push @getfont, '--debug' if $opt_debug; +push @getfont, '--verbose' if $opt_verbose; +push @getfont, '--sys' if $sys; +push @getfont, '--all' if $opt_all; +push @getfont, @allpackages; + +debug_msg "Running '@getfont'"; + +system @getfont; + +# Evaluate the exit status. It will be 2 if something had been +# installed and in this case we need to run texhash/updmap. + +my $exit_code=$?; +my $exit_status=int($exit_code/256); + +if ($sys) { + debug_msg "Info: Execute updmap-sys if exit status is 2"; +} else { + debug_msg "Info: Execute updmap if exit status is 2"; +} + +debug_msg "Exit status of getfont$TL_version is $exit_status"; + +if ($exit_status==2) { + print "\n"; + system 'texhash', "$INSTALLROOT"; + $updmap_command=($sys)? 'updmap-sys':'updmap'; + @updmap=("$updmap_command"); + push @updmap, '--quiet' unless $opt_verbose; + print "\n"; + message "Updating map files ($updmap_command)..."; + system @updmap; + + message $?? '[failed]':'[done]'; +} + +remove_tmpdir; + +__END__ +:endofperl + diff --git a/Master/bin/win32/getnonfreefonts.bat b/Master/bin/win32/getnonfreefonts.bat index 3a748b46320..1ed804c3f53 100755 --- a/Master/bin/win32/getnonfreefonts.bat +++ b/Master/bin/win32/getnonfreefonts.bat @@ -1,307 +1,315 @@ -@rem = '--*-Perl-*--
-@echo off
-perl -x -S %0 %*
-goto endofperl
-@rem ';
-#!/usr/bin/env perl
-#line 8
-#!/usr/bin/env perl
-
-## getnonfreefonts
-## Copyright 2006 Reinhard Kotucha <reinhard.kotucha@web.de>
-#
-# This work may be distributed and/or modified under the
-# conditions of the LaTeX Project Public License, either version 1.3
-# of this license or (at your option) any later version.
-# The latest version of this license is in
-# http://www.latex-project.org/lppl.txt
-#
-# The current maintainer is Reinhard Kotucha.
-
-my $TL_version='2007';
-
-my $getfont_url="ftp://tug.org/tex/getnonfreefonts/getfont$TL_version";
-
-use File::Copy;
-use Getopt::Long;
-$Getopt::Long::autoabbrev=0;
-
-$opt_lsfonts=0;
-$opt_force=0;
-
-sub usage {
- print <<'EOF';
-Usage:
- getnonfreefonts[-sys] [-a|--all] [-d|--debug] [-f|--force]
- [-l|--lsfonts] [-v|--verbose] [--version] [font1] [font2] ...
-
- getnonfreefonts installs fonts in $TEXMFHOME.
- getnonfreefonts-sys installs fonts in $TEXMFLOCAL.
-
- Options:
- -a|--all Install all fonts.
-
- -d|--debug Provide additional messages for debugging.
-
- -f|--force Install fonts even if they are installed already.
-
- -h|--help Print this message.
-
- -l|--lsfonts List all fonts available.
-
- -v|--verbose Be more verbose.
-
- --version Print version number.
-
-EOF
-;
-}
-
-@ARGS=@ARGV;
-
-GetOptions
- "all|a",
- "debug|d",
- "force|f",
- "help|h",
- "lsfonts|l",
- "verbose|v",
- "version",
- "sys";
-
-$^W=1 if $opt_debug;
-
-my $sys=($0=~/-sys$/)? 1:0;
-$sys=1 if $opt_sys;
-
-@allpackages=@ARGV;
-
-print "$TL_version\n" and exit 0 if $opt_version;
-
-if ($opt_help or !@ARGS) {
- print "\nThis is getnonfreefonts";
- print '-sys' if ($sys);
- print ", version $TL_version.\n\n";
- usage;
-}
-
-
-sub message {
- my $message=shift;
- if ($message=~/^\[/) {
- print "$message\n";
- } else {
- printf "%-60s", $message;
- }
-}
-
-
-sub debug_msg {
- my $message=shift;
- if ($opt_debug) {
- print STDERR "DEBUG: $message.\n";
- }
-}
-
-
-sub expand_var {
- my $var=shift;
-
- if (-d "/usr/bin") {
- open KPSEWHICH, 'kpsewhich --expand-var=\$' . "$var |";
- } else {
- open KPSEWHICH, 'kpsewhich --expand-var=$' . "$var |";
- }
- while (<KPSEWHICH>) {
- chop;
- return "$_";
- }
- close KPSEWHICH;
-}
-
-
-# get TMP|TEMP|TMPDIR environment variable
-
-if ($opt_debug) {
- for my $var ("TMP","TEMP","TMPDIR") {
- if (defined $ENV{$var}) {
- debug_msg "Environment variable $var='$ENV{$var}'";
- } else {
- debug_msg "Environment variable $var not set";
- }
- }
-}
-
-
-if (defined $ENV{'TMP'}) {
- $SYSTMP="$ENV{'TMP'}";
-} elsif (defined $ENV{'TEMP'}) {
- $SYSTMP="$ENV{'TEMP'}";
-} elsif (defined $ENV{'TMPDIR'}) {
- $SYSTMP="$ENV{'TMPDIR'}";
-} else {
- $SYSTMP="/tmp";
-}
-
-debug_msg "Internal variable SYSTMP set to '$SYSTMP'";
-
-# Windows usually uses backslashes though forward slashes are probably
-# allowed. Perl always needs forward slashes.
-
-# We convert backslashes to forward slashes if it looks like a Windows
-# directory.
-$SYSTMP=~s/\\/\//g if ($SYSTMP=~/^.:\\/); # c:\abc\def
-$SYSTMP=~s/\\/\//g if ($SYSTMP=~/^\\\\/); # \\abc\def
-
-debug_msg "Internal variable SYSTMP converted to '$SYSTMP'";
-
-sub check_tmpdir{
-die "! ERROR: The temporary directory '$SYSTMP' doesn't exist.\n"
- unless (-d "$SYSTMP");
-
-die "! ERROR: The temporary directory '$SYSTMP' is not writable.\n"
- unless (-w "$SYSTMP");
-}
-
-# Determine INSTALLROOT.
-
-if ($opt_debug) {
- my @path=split ':', $ENV{PATH};
- for my $dir (@path) {
- debug_msg "Search for kpsewhich in '$dir'";
- opendir DIR, "$dir";
- my @kpsewichs=grep /^kpsewhich/, readdir DIR;
- closedir DIR;
- for (@kpsewichs) {
- debug_msg "Found $dir/$_" if /^kpsewhich/;
- }
- }
-}
-
-
-$INSTALLROOTNAME=($sys)? 'TEXMFLOCAL':'TEXMFHOME';
-
-$INSTALLROOT=expand_var "$INSTALLROOTNAME";
-
-($sys)? debug_msg "sys=true":debug_msg "sys=false";
-
-debug_msg "INSTALLROOT='$INSTALLROOT'";
-
-$INSTALLROOT=~s/\\/\//g if ($INSTALLROOT=~/^.:\\/); # c:\abc\def
-$INSTALLROOT=~s/\\/\//g if ($INSTALLROOT=~/^\\\\/); # \\abc\def
-
-debug_msg "Internal variable INSTALLROOT converted to '$INSTALLROOT'";
-
-sub check_installroot {
- die "! ERROR: The variable $INSTALLROOTNAME is not set.\n"
- unless length ("$INSTALLROOT") > 0;
-
- die "! ERROR: The install directory '$INSTALLROOT' doesn't " .
- "exist.\n" .
- " If this is the correct path, please create " .
- "this directory manually.\n"
- unless (-d "$INSTALLROOT");
-
- die "! ERROR: The install directory '$INSTALLROOT' is not writable.\n"
- unless (-w "$INSTALLROOT");
-}
-
-if ($opt_help or !@ARGS) {
- print <<"ENDUSAGE";
- Directories:
- temporary: '$SYSTMP/getfont-<PID>'
- install: '$INSTALLROOT'
-
-ENDUSAGE
-check_tmpdir;
-check_installroot;
-exit 0;
-}
-
-check_tmpdir;
-check_installroot;
-
-my $tmpdir="$SYSTMP/getfont-$$";
-debug_msg "Internal variable tmpdir set to '$tmpdir'";
-
-mkdir "$tmpdir" or die "! ERROR: Can't mkdir '$tmpdir'.";
-chdir "$tmpdir" or die "! ERROR: Can't cd '$tmpdir'.";
-
-sub remove_tmpdir {
- chdir "$SYSTMP" or die "! ERROR: Can't cd '$SYSTMP'.\n";
- opendir TMPDIR, "$tmpdir"
- or print "! ERROR: Can't read directory '$tmpdir'.\n";
-
- @alltmps=readdir TMPDIR;
- closedir TMPDIR;
-
- foreach $file (@alltmps) {
- next if $file=~/^\./;
- unlink "$tmpdir/$file";
- }
- rmdir "$tmpdir" or die "! ERROR: Can't remove directory '$tmpdir'.\n";
-}
-
-# Signal handlers for UNIX, maybe ignored by Windows.
-
-$SIG{INT} =\&remove_tmpdir;
-$SIG{QUIT}=\&remove_tmpdir;
-$SIG{BUS} =\&remove_tmpdir;
-$SIG{PIPE}=\&remove_tmpdir;
-$SIG{TERM}=\&remove_tmpdir;
-$SIG{ABRT}=\&remove_tmpdir;
-$SIG{SEGV}=\&remove_tmpdir;
-
-# Download the script from tug.org.
-
-debug_msg "Running 'wget $getfont_url'";
-
-system ('wget', "$getfont_url");
-
-# Download the fonts.
-
-my @getfont=('perl', "./getfont$TL_version", '--getnonfreefonts');
-push @getfont, "--installroot=$INSTALLROOT";
-push @getfont, '--lsfonts' if $opt_lsfonts;
-push @getfont, '--force' if $opt_force;
-push @getfont, '--debug' if $opt_debug;
-push @getfont, '--verbose' if $opt_verbose;
-push @getfont, '--sys' if $sys;
-push @getfont, '--all' if $opt_all;
-push @getfont, @allpackages;
-
-debug_msg "Running '@getfont'";
-
-system @getfont;
-
-# Evaluate the exit status. It will be 2 if something had been
-# installed and in this case we need to run texhash/updmap.
-
-my $exit_code=$?;
-my $exit_status=int($exit_code/256);
-
-if ($sys) {
- debug_msg "Info: Execute updmap-sys if exit status is 2";
-} else {
- debug_msg "Info: Execute updmap if exit status is 2";
-}
-
-debug_msg "Exit status of getfont$TL_version is $exit_status";
-
-if ($exit_status==2) {
- print "\n";
- system 'texhash', "$INSTALLROOT";
- $updmap_command=($sys)? 'updmap-sys':'updmap';
- @updmap=("$updmap_command");
- push @updmap, '--quiet' unless $opt_verbose;
- print "\n";
- message "Updating map files ($updmap_command)...";
- system @updmap;
-
- message $?? '[failed]':'[done]';
-}
-
-remove_tmpdir;
-
-__END__
-:endofperl
+@rem = '--*-Perl-*-- +@echo off +perl -x -S %0 %* +goto endofperl +@rem '; +#!/usr/bin/env perl +#line 8 +#!/usr/bin/env perl + +## getnonfreefonts +## Copyright 2006-2008 Reinhard Kotucha <reinhard.kotucha@web.de> +# +# This work may be distributed and/or modified under the +# conditions of the LaTeX Project Public License, either version 1.3 +# of this license or (at your option) any later version. +# The latest version of this license is in +# http://www.latex-project.org/lppl.txt +# +# The current maintainer is Reinhard Kotucha. + +my $TL_version='2008'; + +my $getfont_url="ftp://tug.org/tex/getnonfreefonts/getfont$TL_version"; + +use File::Copy; +use Getopt::Long; +$Getopt::Long::autoabbrev=0; + +$opt_lsfonts=0; +$opt_force=0; + +sub usage { + print <<'EOF'; +Usage: + getnonfreefonts[-sys] [-a|--all] [-d|--debug] [-f|--force] + [-l|--lsfonts] [-v|--verbose] [--version] [font1] [font2] ... + + getnonfreefonts installs fonts in $TEXMFHOME. + getnonfreefonts-sys installs fonts in $TEXMFLOCAL. + + Options: + -a|--all Install all fonts. + + -d|--debug Provide additional messages for debugging. + + -f|--force Install fonts even if they are installed already. + + -h|--help Print this message. + + -l|--lsfonts List all fonts available. + + -v|--verbose Be more verbose. + + --version Print version number. + +EOF +; +} + +@ARGS=@ARGV; + +GetOptions + "all|a", + "debug|d", + "force|f", + "help|h", + "lsfonts|l", + "verbose|v", + "version", + "sys"; + +$^W=1 if $opt_debug; + +my $sys=($0=~/-sys$/)? 1:0; +$sys=1 if $opt_sys; + +@allpackages=@ARGV; + +print "$TL_version\n" and exit 0 if $opt_version; + +if ($opt_help or !@ARGS) { + print "\nThis is getnonfreefonts"; + print '-sys' if ($sys); + print ", version $TL_version.\n\n"; + usage; +} + + +sub message { + my $message=shift; + if ($message=~/^\[/) { + print "$message\n"; + } else { + printf "%-60s", $message; + } +} + + +sub debug_msg { + my $message=shift; + if ($opt_debug) { + print STDERR "DEBUG: $message.\n"; + } +} + + +sub expand_var { + my $var=shift; + + if (-d "/usr/bin") { + open KPSEWHICH, 'kpsewhich --expand-var=\$' . "$var |"; + } else { + open KPSEWHICH, 'kpsewhich --expand-var=$' . "$var |"; + } + while (<KPSEWHICH>) { + chop; + return "$_"; + } + close KPSEWHICH; +} + + +# get TMP|TEMP|TMPDIR environment variable + +if ($opt_debug) { + for my $var ("TMP","TEMP","TMPDIR") { + if (defined $ENV{$var}) { + debug_msg "Environment variable $var='$ENV{$var}'"; + } else { + debug_msg "Environment variable $var not set"; + } + } +} + + +if (defined $ENV{'TMP'}) { + $SYSTMP="$ENV{'TMP'}"; +} elsif (defined $ENV{'TEMP'}) { + $SYSTMP="$ENV{'TEMP'}"; +} elsif (defined $ENV{'TMPDIR'}) { + $SYSTMP="$ENV{'TMPDIR'}"; +} else { + $SYSTMP="/tmp"; +} + +debug_msg "Internal variable SYSTMP set to '$SYSTMP'"; + +# Windows usually uses backslashes though forward slashes are probably +# allowed. Perl always needs forward slashes. + +# We convert backslashes to forward slashes on Windows. +$SYSTMP=~s/\\/\//g if ($^O=~/^MSWin(32|64)/i); + + +debug_msg "Internal variable SYSTMP converted to '$SYSTMP'"; + +sub check_tmpdir{ +die "! ERROR: The temporary directory '$SYSTMP' doesn't exist.\n" + unless (-d "$SYSTMP"); + +die "! ERROR: The temporary directory '$SYSTMP' is not writable.\n" + unless (-w "$SYSTMP"); +} + +# Determine INSTALLROOT. + +if ($opt_debug) { + my @path=split ':', $ENV{PATH}; + for my $dir (@path) { + debug_msg "Search for kpsewhich in '$dir'"; + opendir DIR, "$dir"; + my @kpsewichs=grep /^kpsewhich/, readdir DIR; + closedir DIR; + for (@kpsewichs) { + debug_msg "Found $dir/$_" if /^kpsewhich/; + } + } +} + + +$INSTALLROOTNAME=($sys)? 'TEXMFLOCAL':'TEXMFHOME'; + +$INSTALLROOT=expand_var "$INSTALLROOTNAME"; + +($sys)? debug_msg "sys=true":debug_msg "sys=false"; + +debug_msg "INSTALLROOT='$INSTALLROOT'"; + +$INSTALLROOT=~s/\\/\//g if ($^O=~/^MSWin(32|64)/i); + +debug_msg "Internal variable INSTALLROOT converted to '$INSTALLROOT'"; + +sub check_installroot { + die "! ERROR: The variable $INSTALLROOTNAME is not set.\n" + unless length ("$INSTALLROOT") > 0; + + die "! ERROR: The install directory '$INSTALLROOT' doesn't " . + "exist.\n" . + " If this is the correct path, please create " . + "this directory manually.\n" + unless (-d "$INSTALLROOT"); + + die "! ERROR: The install directory '$INSTALLROOT' is not writable.\n" + unless (-w "$INSTALLROOT"); +} + +if ($opt_help or !@ARGS) { + print <<"ENDUSAGE"; + Directories: + temporary: '$SYSTMP/getfont-<PID>' + install: '$INSTALLROOT' + +ENDUSAGE +check_tmpdir; +check_installroot; +exit 0; +} + +check_tmpdir; +check_installroot; + +my $tmpdir="$SYSTMP/getfont-$$"; +debug_msg "Internal variable tmpdir set to '$tmpdir'"; + +mkdir "$tmpdir" or die "! ERROR: Can't mkdir '$tmpdir'."; +chdir "$tmpdir" or die "! ERROR: Can't cd '$tmpdir'."; + +sub remove_tmpdir { + chdir "$SYSTMP" or die "! ERROR: Can't cd '$SYSTMP'.\n"; + opendir TMPDIR, "$tmpdir" + or print "! ERROR: Can't read directory '$tmpdir'.\n"; + + @alltmps=readdir TMPDIR; + closedir TMPDIR; + + foreach $file (@alltmps) { + next if $file=~/^\./; + unlink "$tmpdir/$file"; + } + rmdir "$tmpdir" or die "! ERROR: Can't remove directory '$tmpdir'.\n"; +} + +# Signal handlers. + +my @common_signals=qw(INT ILL FPE SEGV TERM ABRT); +my @signals_UNIX=qw(QUIT BUS PIPE); +my @signals_Win32=qw(BREAK); + + +if ($^O=~/^MSWin(32|64)$/i) { + @signals=(@common_signals, @signals_Win32); +} else { + @signals=(@common_signals, @signals_UNIX); +} + +debug_msg "Supported signals: @signals\n"; + +foreach my $signal (@signals) { + $SIG{"$signal"}=\&remove_tmpdir; +} + +# Download the script from tug.org. + +debug_msg "Running 'wget $getfont_url'"; + +system ('wget', "$getfont_url") == 0 or die "! Error: Can't execute wget.\n"; + +# Download the fonts. + +my @getfont=('perl', "./getfont$TL_version", '--getnonfreefonts'); +push @getfont, "--installroot=$INSTALLROOT"; +push @getfont, '--lsfonts' if $opt_lsfonts; +push @getfont, '--force' if $opt_force; +push @getfont, '--debug' if $opt_debug; +push @getfont, '--verbose' if $opt_verbose; +push @getfont, '--sys' if $sys; +push @getfont, '--all' if $opt_all; +push @getfont, @allpackages; + +debug_msg "Running '@getfont'"; + +system @getfont; + +# Evaluate the exit status. It will be 2 if something had been +# installed and in this case we need to run texhash/updmap. + +my $exit_code=$?; +my $exit_status=int($exit_code/256); + +if ($sys) { + debug_msg "Info: Execute updmap-sys if exit status is 2"; +} else { + debug_msg "Info: Execute updmap if exit status is 2"; +} + +debug_msg "Exit status of getfont$TL_version is $exit_status"; + +if ($exit_status==2) { + print "\n"; + system 'texhash', "$INSTALLROOT"; + $updmap_command=($sys)? 'updmap-sys':'updmap'; + @updmap=("$updmap_command"); + push @updmap, '--quiet' unless $opt_verbose; + print "\n"; + message "Updating map files ($updmap_command)..."; + system @updmap; + + message $?? '[failed]':'[done]'; +} + +remove_tmpdir; + +__END__ +:endofperl + diff --git a/Master/bin/x86_64-linux/getnonfreefonts b/Master/bin/x86_64-linux/getnonfreefonts index 3ab220ee570..9c419e65bd7 100755 --- a/Master/bin/x86_64-linux/getnonfreefonts +++ b/Master/bin/x86_64-linux/getnonfreefonts @@ -1,7 +1,7 @@ #!/usr/bin/env perl ## getnonfreefonts -## Copyright 2006 Reinhard Kotucha <reinhard.kotucha@web.de> +## Copyright 2006-2008 Reinhard Kotucha <reinhard.kotucha@web.de> # # This work may be distributed and/or modified under the # conditions of the LaTeX Project Public License, either version 1.3 @@ -11,7 +11,7 @@ # # The current maintainer is Reinhard Kotucha. -my $TL_version='2007'; +my $TL_version='2008'; my $getfont_url="ftp://tug.org/tex/getnonfreefonts/getfont$TL_version"; @@ -141,10 +141,9 @@ debug_msg "Internal variable SYSTMP set to '$SYSTMP'"; # Windows usually uses backslashes though forward slashes are probably # allowed. Perl always needs forward slashes. -# We convert backslashes to forward slashes if it looks like a Windows -# directory. -$SYSTMP=~s/\\/\//g if ($SYSTMP=~/^.:\\/); # c:\abc\def -$SYSTMP=~s/\\/\//g if ($SYSTMP=~/^\\\\/); # \\abc\def +# We convert backslashes to forward slashes on Windows. +$SYSTMP=~s/\\/\//g if ($^O=~/^MSWin(32|64)/i); + debug_msg "Internal variable SYSTMP converted to '$SYSTMP'"; @@ -180,8 +179,7 @@ $INSTALLROOT=expand_var "$INSTALLROOTNAME"; debug_msg "INSTALLROOT='$INSTALLROOT'"; -$INSTALLROOT=~s/\\/\//g if ($INSTALLROOT=~/^.:\\/); # c:\abc\def -$INSTALLROOT=~s/\\/\//g if ($INSTALLROOT=~/^\\\\/); # \\abc\def +$INSTALLROOT=~s/\\/\//g if ($^O=~/^MSWin(32|64)/i); debug_msg "Internal variable INSTALLROOT converted to '$INSTALLROOT'"; @@ -235,21 +233,30 @@ sub remove_tmpdir { rmdir "$tmpdir" or die "! ERROR: Can't remove directory '$tmpdir'.\n"; } -# Signal handlers for UNIX, maybe ignored by Windows. +# Signal handlers. + +my @common_signals=qw(INT ILL FPE SEGV TERM ABRT); +my @signals_UNIX=qw(QUIT BUS PIPE); +my @signals_Win32=qw(BREAK); + + +if ($^O=~/^MSWin(32|64)$/i) { + @signals=(@common_signals, @signals_Win32); +} else { + @signals=(@common_signals, @signals_UNIX); +} + +debug_msg "Supported signals: @signals\n"; -$SIG{INT} =\&remove_tmpdir; -$SIG{QUIT}=\&remove_tmpdir; -$SIG{BUS} =\&remove_tmpdir; -$SIG{PIPE}=\&remove_tmpdir; -$SIG{TERM}=\&remove_tmpdir; -$SIG{ABRT}=\&remove_tmpdir; -$SIG{SEGV}=\&remove_tmpdir; +foreach my $signal (@signals) { + $SIG{"$signal"}=\&remove_tmpdir; +} # Download the script from tug.org. debug_msg "Running 'wget $getfont_url'"; -system ('wget', "$getfont_url"); +system ('wget', "$getfont_url") == 0 or die "! Error: Can't execute wget.\n"; # Download the fonts. diff --git a/Master/bin/x86_64-linux/kpsewhich b/Master/bin/x86_64-linux/kpsewhich Binary files differindex eff1d5ccbaf..b4589941d5d 100755 --- a/Master/bin/x86_64-linux/kpsewhich +++ b/Master/bin/x86_64-linux/kpsewhich |