summaryrefslogtreecommitdiff
path: root/Master/tlpkg/bin/check-wrapper-consistency
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-09-08 23:42:10 +0000
committerKarl Berry <karl@freefriends.org>2012-09-08 23:42:10 +0000
commit51134fdc52d6670fdb0ba1503dd16210f2a537ae (patch)
treea66beccdd8613213c4a8ebf7d1230199255060b0 /Master/tlpkg/bin/check-wrapper-consistency
parentdec0beb77f2062b8eaadbdd146471de0c03a5d09 (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/tlpkg/bin/check-wrapper-consistency')
-rwxr-xr-xMaster/tlpkg/bin/check-wrapper-consistency75
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;
+}