[tex-live] testing TL'08

Heiko Oberdiek oberdiek at uni-freiburg.de
Sat Jun 14 23:03:07 CEST 2008


On Fri, Jun 13, 2008 at 08:31:22PM -0500, Karl Berry wrote:

> Please send bug reports here, tex-live at tug.org.

I have written a quick&dirty&writeonly Perl script for
checking the unique constraints of TDS for TDS:tex.

The result:

=== tds-unique.log ===
* Scanning tldevsrc/Master/texmf/tex ...
* 109 files in tldevsrc/Master/texmf/tex
* Scanning tldevsrc/Master/texmf-dist/tex ...
* 8620 files in tldevsrc/Master/texmf-dist/tex
* Collisions in TDS:tex/fontinst
  texmf/tex/fontinst/afm2pl/README (732)
  texmf-dist/tex/fontinst/cyrfinst/README (2239)
* Collisions in TDS:tex/latex
  texmf-dist/tex/latex/lhcyr/lhcyralt/README (6760)
  texmf-dist/tex/latex/lhcyr/lhcyrkoi/README (6671)
  texmf-dist/tex/latex/lhcyr/lhcyrwin/README (6747)
  texmf-dist/tex/latex/arabtex/afoot.sty (3387)
  texmf-dist/tex/latex/ledmac/afoot.sty (3982)
  texmf-dist/tex/latex/auncial-new/allauncl.sty (2540)
  texmf-dist/tex/latex/bookhands/allauncl.sty (2030)
  texmf-dist/tex/latex/amscls/amsbst.sty (7344)
  texmf-dist/tex/latex/amsrefs/amsbst.sty (7344)
  texmf-dist/tex/latex/auncial-new/auncial.sty (1199)
  texmf-dist/tex/latex/bookhands/auncial.sty (813)
  texmf-dist/tex/latex/authoraftertitle/authoraftertitle.sty (678)
  texmf-dist/tex/latex/ltxmisc/authoraftertitle.sty (678)
  texmf-dist/tex/latex/bbm-macros/bbm.sty (1644)
  texmf-dist/tex/latex/bbm/bbm.sty (1644)
  texmf-dist/tex/latex/archaic/hieroglf.sty (12059)
  texmf-dist/tex/latex/hieroglf/hieroglf.sty (11550)
  texmf-dist/tex/latex/achemso/jawltxdoc.sty (4752)
  texmf-dist/tex/latex/chemscheme/jawltxdoc.sty (3755)
  texmf-dist/tex/latex/chemstyle/jawltxdoc.sty (4886)
  texmf-dist/tex/latex/notes2bib/jawltxdoc.sty (4245)
  texmf-dist/tex/latex/rsc/jawltxdoc.sty (4371)
  texmf-dist/tex/latex/archaic/ot1pmhg.fd (1391)
  texmf-dist/tex/latex/hieroglf/ot1pmhg.fd (882)
  texmf-dist/tex/latex/archaic/t1pmhg.fd (1381)
  texmf-dist/tex/latex/hieroglf/t1pmhg.fd (872)
  texmf-dist/tex/latex/bbm-macros/ubbm.fd (2132)
  texmf-dist/tex/latex/bbm/ubbm.fd (2132)
  texmf-dist/tex/latex/bbm-macros/ubbmss.fd (1919)
  texmf-dist/tex/latex/bbm/ubbmss.fd (1919)
  texmf-dist/tex/latex/bbm-macros/ubbmtt.fd (1586)
  texmf-dist/tex/latex/bbm/ubbmtt.fd (1586)
* Collisions between TDS:tex/context and TDS:tex/generic
  texmf-dist/tex/context/base/m-tex4ht.tex (136)
  texmf-dist/tex/generic/tex4ht/m-tex4ht.tex (1688)
* Collisions between TDS:tex/cslatex and TDS:tex/generic
  texmf-dist/tex/cslatex/base/hyphen.cfg (7535)
  texmf-dist/tex/generic/babel/hyphen.cfg (12587)
* Collisions between TDS:tex/csplain and TDS:tex/generic
  texmf-dist/tex/csplain/base/czech.sty (9871)
  texmf-dist/tex/generic/babel/czech.sty (3559)
  texmf-dist/tex/csplain/base/czhyphen.ex (246)
  texmf/tex/generic/hyphen/czhyphen.ex (246)
  texmf-dist/tex/csplain/base/dcfonts.tex (698)
  texmf-dist/tex/generic/enctex/dcfonts.tex (103)
  texmf-dist/tex/csplain/base/ecfonts.tex (713)
  texmf-dist/tex/generic/enctex/ecfonts.tex (113)
  texmf-dist/tex/csplain/base/skhyphen.ex (207)
  texmf/tex/generic/hyphen/skhyphen.ex (207)
  texmf-dist/tex/csplain/base/slovak.sty (9754)
  texmf-dist/tex/generic/babel/slovak.sty (3564)
* Collisions between TDS:tex/lambda and TDS:tex/generic
  texmf-dist/tex/generic/babel/hyphen.cfg (12587)
  texmf-dist/tex/lambda/antomega/hyphen.cfg (5629)
  texmf/tex/generic/config/language.dat (3476)
  texmf-dist/tex/lambda/config/language.dat (2664)
* Collisions between TDS:tex/latex and TDS:tex/generic
  texmf-dist/tex/generic/pstricks/Changes (3801)
  texmf-dist/tex/latex/pstricks/Changes (1238)
  texmf-dist/tex/generic/r-und-s/eng_rs.sty (12708)
  texmf-dist/tex/latex/r_und_s/eng_rs.sty (13008)
  texmf-dist/tex/generic/r-und-s/eng_rs.tex (11312)
  texmf-dist/tex/latex/r_und_s/eng_rs.tex (11585)
  texmf-dist/tex/generic/babel/lgrcmr.fd (2309)
  texmf-dist/tex/latex/cbfonts/lgrcmr.fd (1631)
  texmf-dist/tex/generic/babel/lgrcmro.fd (2336)
  texmf-dist/tex/latex/cbfonts/lgrcmro.fd (1697)
  texmf-dist/tex/generic/babel/lgrcmss.fd (2209)
  texmf-dist/tex/latex/cbfonts/lgrcmss.fd (1424)
  texmf-dist/tex/generic/babel/lgrcmtt.fd (2381)
  texmf-dist/tex/latex/cbfonts/lgrcmtt.fd (1742)
  texmf-dist/tex/generic/babel/lgrlcmss.fd (3881)
  texmf-dist/tex/latex/cbfonts/lgrlcmss.fd (3240)
  texmf-dist/tex/generic/babel/lgrlcmtt.fd (2834)
  texmf-dist/tex/latex/cbfonts/lgrlcmtt.fd (2193)
  texmf-dist/tex/generic/r-und-s/r_und_s.sty (13847)
  texmf-dist/tex/latex/r_und_s/r_und_s.sty (14136)
  texmf-dist/tex/generic/r-und-s/r_und_s.tex (12482)
  texmf-dist/tex/latex/r_und_s/r_und_s.tex (12745)
* Collisions between TDS:tex/plain and TDS:tex/generic
  texmf-dist/tex/generic/ofs/ofs-8x.tex (8196)
  texmf-dist/tex/plain/antt/ofs-8x.tex (8235)
  texmf-dist/tex/generic/ofs/pantyk.tex (4790)
  texmf-dist/tex/plain/antt/pantyk.tex (4727)
  texmf-dist/tex/generic/genmisc/verbatim.tex (12548)
  texmf-dist/tex/plain/gustlib/verbatim.tex (2363)
=== tds-unique.log ===

The easiest fixes are the fixes for README. They should be
moved to TDS:doc/

Yours sincerely
  Heiko <oberdiek at uni-freiburg.de>

PS:
=== cut === tds-unique.sh === cut ===
#!/bin/sh
tlbase=tldevsrc/Master
./tds-unique.pl \
  texmf=$tlbase/texmf \
  texmf-doc=$tlbase/texmf-doc \
  texmf-dist=$tlbase/texmf-dist
=== cut === tds-unique.sh === cut ===

=== cut === tds-unique.pl === cut ===
#!/usr/bin/env perl
use strict;
$^W=1;

my $syntax = "Syntax: $0 <name 1>=<path to tds tree 1> ...\n";

@ARGV || die $syntax;

my @tree;
my %tree;
foreach my $arg (@ARGV) {
    $arg =~ /^\s*([A-Za-z0-9\-\_]+)\s*=\s*([A-Za-z0-9_\-\/]+)\s*$/
            or die "!!! Error: Syntax error: $arg\n";
    -d $2 or die "!!! Error: Directory `$2' does not exist!\n";
    push @tree, $1;
    $tree{$1} = $2;
}

my %tex;

foreach my $tree (@tree) {
    next unless -d "$tree{$tree}/tex";
    my $count = 0;
    print "* Scanning $tree{$tree}/tex ...\n";
    open(IN, "cd $tree{$tree} && find tex/ -not -type d -print|")
           or die "!!! Error: Finding files failed ($tree{$tree})!\n";
    while (my $line = <IN>) {
        next if $line =~ /\/\.svn\//;
        $count++;
        chomp $line;
        $line =~ /^tex\/([^\/]+\/|)(.*\/|)([^\/\n\r]+)$/
            or die "!!! Parse error in file name `$_'\n";
        my ($format, $package, $file) = ($1, $2, $3);
        my $temp = $/;
        $/ = '/';
        chomp($format, $package);
        $/ = $temp;
        $tex{$format} or $tex{$format} = [];
        push @{$tex{$format}}, "$file|$format|$package|$tree";
    }
    close(IN);
    print "* $count files in $tree{$tree}/tex\n";
}

# check clashes inside TDS:tex/<format>
foreach my $format (sort keys %tex) {
    my %files;
    my %collisions;
    foreach my $line (@{$tex{$format}}) {
        $line =~ /([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)/
                or die "!!! Error: Parse error: $line\n";
        my ($file, $formatx, $package, $tree) = ($1, $2, $3, $4);
        if ($formatx ne $format) {
                die "!!! Error in format ($format): $line\n";
        }
        if ($files{$file}) {
            $collisions{"$file|$format|$files{$file}"} = '';
            $collisions{"$file|$format|$package|$tree"} = '';
        }
        else {
            $files{$file} = "$package|$tree";
        }
    }
    if (%collisions) {
        print "* Collisions in TDS:tex/$format\n";
        foreach my $entry (sort keys %collisions) {
            $entry =~ /([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)/
                    or die "!!! Error: Parse error: $entry\n";
            my ($file, $formatx, $package, $tree) = ($1, $2, $3, $4);
            my $size = (stat("$tree{$tree}/tex/$formatx/$package/$file"))[7];
            print "  $tree/tex/$formatx/$package/$file ($size)\n";
        }
    }
}

# check clashes between TDS:tex/generic and TDS:tex/<format>
foreach my $format (sort keys %tex) {
    next if $format eq 'generic';
    my %files;
    my %collisions;
    my $collisions = 0;
    foreach my $line (@{$tex{'generic'}}) {
        $line =~ /([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)/
                or die "!!! Error: Parse error: $line\n";
        my ($file, $formatx, $package, $tree) = ($1, $2, $3, $4);
        $files{$file} = "$formatx|$package|$tree";
    }
    foreach my $line (@{$tex{$format}}) {
        $line =~ /([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)/
                or die "!!! Error: Parse error: $line\n";
        my ($file, $formatx, $package, $tree) = ($1, $2, $3, $4);
        if ($formatx ne $format) {
                die "!!! Error in format ($format): $line\n";
        }
        if ($files{$file}) {
            $collisions{"$file|$files{$file}"} = '';
            $collisions{"$file|$format|$package|$tree"} = '';
        }
    }
    if (%collisions) {
        print "* Collisions between TDS:tex/$format and TDS:tex/generic\n";
        foreach my $entry (sort keys %collisions) {
            $entry =~ /([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)/
                    or die "!!! Error: Parse error: $entry\n";
            my ($file, $formatx, $package, $tree) = ($1, $2, $3, $4);
            my $size = (stat("$tree{$tree}/tex/$formatx/$package/$file"))[7];
            print "  $tree/tex/$formatx/$package/$file ($size)\n";
        }
    }
}

__END__
=== cut === tds-unique.pl === cut ===


More information about the tex-live mailing list