diff options
author | Karl Berry <karl@freefriends.org> | 2012-09-08 23:42:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-09-08 23:42:10 +0000 |
commit | 51134fdc52d6670fdb0ba1503dd16210f2a537ae (patch) | |
tree | a66beccdd8613213c4a8ebf7d1230199255060b0 /Master | |
parent | dec0beb77f2062b8eaadbdd146471de0c03a5d09 (diff) |
only maintain list of sh scripts in one place
git-svn-id: svn://tug.org/texlive/trunk@27619 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rwxr-xr-x | Master/tlpkg/bin/check-wrapper-consistency | 75 |
1 files changed, 44 insertions, 31 deletions
diff --git a/Master/tlpkg/bin/check-wrapper-consistency b/Master/tlpkg/bin/check-wrapper-consistency index a958b913214..49ff4c9d122 100755 --- a/Master/tlpkg/bin/check-wrapper-consistency +++ b/Master/tlpkg/bin/check-wrapper-consistency @@ -11,14 +11,15 @@ BEGIN { $^W = 1; ($mydir = $0) =~ s,/[^/]*$,,; unshift (@INC, "$mydir/.."); + chomp ($Master = `cd $mydir/../.. && pwd`); } use Getopt::Long; use Pod::Usage; -our $mydir; -my $help = 0; +our ($mydir, $Master); +my $help = 0; GetOptions("help|?" => \$help) or pod2usage(1); pod2usage(-exitstatus => 0, -verbose => 2) if $help; @@ -28,7 +29,6 @@ exit (&main ()); sub main { my $err = 0; - chomp (my $Master = `cd $mydir/../.. && pwd`); my $bindir = "$Master/bin"; chdir ($bindir) || die "chdir($bindir) failed: $!"; @@ -62,6 +62,7 @@ sub unx_wrapper_entries { opendir (DIR, ".") || die "opendir($DIR) failed: $!"; while (my $ent = readdir (DIR)) { next unless -l $ent; # skip all but symlinks + next if -d $ent; # and skip directories (i.e., man/) my $target = readlink ($ent); die "readlink($ent) failed: $!" if !defined ($target); @@ -80,38 +81,23 @@ sub unx_wrapper_entries { -# Windows is special, as usual. Given the list of wrappers in UW, check -# that each of those entries (excluding various exceptions) exists in -# W32DIR as a .exe, and is a copy of the canonical w32 wrapper exe -# specified in W32CANONICAL. -# -# We should use the *_shell_scripts in linked_scripts/Makefile.am -# instead of redoing it here. +# Windows is painfully special, as usual. Given the list of wrappers in +# UW, check that each of those entries (excluding shell scripts) exists +# in W32DIR as a .exe, and furthermore is a copy of the canonical w32 +# wrapper exe specified in W32CANONICAL. # sub check_w32 { my ($w32dir, $w32canonical, %uw) = @_; my $diff = 0; - + + my %is_shell_script = &list_shell_scripts (); for my $k (sort keys %uw) { - my $target = $uw{$k}; - next if $target =~ /bibexport/; # shell script - next if $target =~ /context/; # does it its own way - next if $target =~ /dviout/; # gui stub - next if $target =~ /installfont-tl/; # shell script - next if $target =~ /latexfileversion/; # shell script - next if $target =~ /lua2dox/; # shell script - next if $target =~ /listings-ext/; # shell script - next if $target =~ /man/; # no symlink - next if $target =~ /pdfjam/; # shell scripts - next if $target =~ /psv/; # gui stub - next if $target =~ /simpdftex/; # shell script - next if $target =~ /texmfstart/; # has its own binary - next if $target =~ /texdoc/; # gui stub - next if $target =~ /texworks/; # gui stub - next if $target =~ /tlmgr/; # does things its own way - next if $target =~ /typeoutfileinfo/; # shell script - next if $target =~ /xasy/; # no need - #print "$k -> $uw{$k}\n"; + next if $is_shell_script{$k}; # skip shell scripts + # + # also skip these special cases: + next if $k =~ /^(tlmgr|xasy|texdoctk)$/; + # + # else do the diff with the canonical wrapper: $diff += system ("cmp $w32dir/$k.exe $w32canonical"); } @@ -121,7 +107,7 @@ sub check_w32 { foreach my $f (@binfiles) { next unless ($f =~ s/\.(bat|cmd)$//); # only batch files - next if ($uw{$f}); # already checked + next if $uw{$f}; # already checked $diff += system ("cmp $w32dir/$f.exe $w32canonical"); } @@ -130,3 +116,30 @@ sub check_w32 { return $diff; } + +# As it happens, we already distinguish sh scripts from others in the +# build process, for basically the same reason. So return the list +# maintained there by using a target defined in linked_scripts/Makefie +# for us. +# +sub list_shell_scripts { + my %sh; + + # has to be the Work/ directory to get the Makefile, not Makefile.{in,am}. + my $Work = "$Master/../Build/source/Work"; + my $Work_linked_scripts = "$Work/texk/texlive/linked_scripts"; + + # use make; ensure we get only the last line, although that should be + # all there is. + my $lst = `make -s -C $Work_linked_scripts echo-shell-scripts | tail -1`; + + for my $script (split (" ", $lst)) { + $script =~ s,^.*/,,; + $sh{$script} = 1; # save with extension (for listings-ext.sh) + # + $script =~ s,\.[^.]*$,,; + $sh{$script} = 1; # save without extension (everything else) + } + + return %sh; +} |