diff options
author | Karl Berry <karl@freefriends.org> | 2006-05-30 17:48:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-05-30 17:48:45 +0000 |
commit | 60b30f94ad3de107dc47f344365cfbe5915b6044 (patch) | |
tree | 93db8b30cb0caeff3750a07f93af751e8194374d /Build/tools | |
parent | 2534976919d6181d8269b184da08b1ae425b9dd3 (diff) |
extract ctan-dir-finding to a common subprogram
git-svn-id: svn://tug.org/texlive/trunk@1621 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/tools')
-rwxr-xr-x | Build/tools/ctan2tl | 53 | ||||
-rwxr-xr-x | Build/tools/tlpkginfo | 131 | ||||
-rwxr-xr-x | Build/tools/tpm-ctan-check | 90 |
3 files changed, 162 insertions, 112 deletions
diff --git a/Build/tools/ctan2tl b/Build/tools/ctan2tl index 5545a7e8099..6047a4b7342 100755 --- a/Build/tools/ctan2tl +++ b/Build/tools/ctan2tl @@ -5,14 +5,16 @@ # Initial attempt at pushing a ctan directory into TL. # See ./README for a bit more info. # -# Basic usage: ctan2tl /path/to/ctan/package +# Basic usage: ctan2tl TLPKGNAME # --place to include final `place' invocation (repository adds/removes). # --no-ctan if already have files in ../cdbuild/raw/PKG. # Unlikely to work without GNU utilities. # -# This does not actually commit anything to the repository. +# This does not actually commit anything to the repository. Without +# --place, it doesn't even create any files in the repository outside of +# cdbuild/{raw,cooked}. -mydir=`dirname $0` # Build/tools +mydir=`cd \`dirname $0\` && pwd` # Build/tools raw=$mydir/../cdbuild/raw test -d $raw || mkdir $raw cd $raw || exit 1 @@ -31,47 +33,20 @@ else copy_from_ctan=true fi -if test ! -d $1; then - echo "$0: $1 not a (CTAN) directory." >&2 +pkg=$1 +if test -z "$pkg"; then + echo "$0: no TL package name specified." >&2 exit 1 fi -# xx this should be a separate script, also used by tpm-ctan-check. -ctan_dir1=$1 -pkg=`basename $1` +ctan_dir1=`tlpkginfo --ctan-dir $pkg` +if test -z "$ctan_dir1"; then + echo "$0: can't find CTAN directory for $pkg." >&2 + exit 1 +fi +echo "$0: ctan dir for $1 is $ctan_dir1" if $copy_from_ctan; then -case "$pkg" in - biblio) pkg=beebe;; - fourier-GUT) pkg=fourier;; - generic) pkg=genmisc;; # $ctan/macros/generic - ha-prosper) pkg=HA-prosper;; - misc) pkg=ltxmisc;; # until we do real misc package. - tex-references) pkg=tex-refs;; - velthuis) pkg=devanagr;; - voss) pkg=voss-de;; -esac - -# lshort is arranged by language. -pkgdir=`dirname $ctan_dir1` -up=`basename $pkgdir` -test "$up" = lshort && pkg=lshort-$pkg - -# esint is split into two. -test "$pkg" = esint && test "$up" = ps-type1 && pkg=esint-type1 - -# vntex is in an unpacked subdir. -test "$pkg" = unpacked && test "$up" = vntex && pkg=vntex - -# similarly for powerdot. -test "$pkg" = distrib && test "$up" = powerdot && pkg=powerdot - -# powerdot-doc-vn is a couple subdirs down. -test "$pkg" = doc-vn && test "$up" = contrib && pkg=powerdot-doc-vn - -# amslatex/vietnamese. -test "$pkg" = vietnamese && test "$up" = amslatex && pkg=amsldoc-vn - # annoyingly, tugboat plain and tugboat latex are stored in two # different places on ctan. we'll assume we're invoked with the latex # dir, and now arrange to also copy in the plain stuff to a `plain' diff --git a/Build/tools/tlpkginfo b/Build/tools/tlpkginfo new file mode 100755 index 00000000000..0fde8a13af3 --- /dev/null +++ b/Build/tools/tlpkginfo @@ -0,0 +1,131 @@ +#!/usr/bin/env perl +# $Id$ +# Return information given a TL package name (i.e., a tpm file name). +# Currently just the ctan directory for package, but maybe we'll do more +# later. +# +exit (&main ()); + +sub main +{ + $CTAN = $ENV{"CTAN"} || "/home/ftp/tex-archive"; + if ($ARGV[0] eq "--ctan-dir") { + return &find_ctan_dir ($ARGV[1]); + } else { + die "$0: only know about --ctan-dir PKGNAME.\n"; + } +} + + +# +# The CTAN path to a package is sometimes stored in the TeX Catalogue, +# but old entries don't have it, etc. Still, we should use it if present.xx +# Return 0 for success if we find a path (and print it on stdout), else +# return 1. +# +sub find_ctan_dir +{ + my ($me) = @_; + return 1 unless $me; + + (my $menobin = $me) =~ s,^bin-,,; + (my $menodash = $me) =~ s,^.*-,,; + (my $menopowerdot = $me) =~ s,^powerdot-,,; + (my $menotype1 = $me) =~ s,-type1$,,; + + my $ctan_dir = ""; + + for my $dir ( + "macros/latex/contrib/$me", # most everything + "macros/latex/contrib/\L$me", # HA-prosper + "macros/latex/contrib/powerdot/contrib/$menopowerdot", # powerdot-doc-vn + "macros/latex/exptl/$me", # semioneside + "macros/latex/required/$me", # babel + "macros/plain/$me", # plnfss + "macros/xetex/latex/$me", # xetex + "macros/generic/$me", # abbr + "macros/generic/diagrams/$me", # circ + "macros/$me", # eplain + "support/$me", # thumbpdf + "support/$menobin", # bin-thumbpdf + "language/vietnamese/$me/unpacked", # vntex + "language/hebrew/$me", # cjhebrew + "language/greek/package-babel/$me", # ibycus-babel + "language/coptic/$me", # cbcoptic + "info/math/voss/$me", # mathmode + "info/lshort/$menodash", # lshort-english + "info/bibtex/$me", # tamethebeast + "info/symbols/$me", # comprehensive + "info/$me", # Type1fonts + "graphics/$me", # sparklines + "graphics/metapost/contrib/macros/$me", # mpattern + "graphics/pstricks/contrib/pedigree/$me", # pst-pdgr + "graphics/pstricks/contrib/$me", # pstricks-add + "fonts/$me", # MnSymbol + "fonts/gothic/$me", # blacklettert1 + "fonts/cyrillic/$me/texmf", # lh + "fonts/greek/$me", # lfb + "fonts/ps-type1/$me", # cm-super + "fonts/ps-type1/$menotype1", # esint-type1 + "fonts/utilities/$me", # accfonts + "biblio/bibtex/contrib/$me", # dk-bib + ) { + if (-d "$CTAN/$dir") { + $ctan_dir = $dir; + last; + } + } + + # names totally dissimilar + $ctan_dir = "fonts/fourier-GUT" if $me eq "fourier"; + $ctan_dir = "info/biblio" if $me eq "beebe"; + $ctan_dir = "info/italian/amsldoc" if $me eq "amsldoc-it"; + $ctan_dir = "info/italian/amsthdoc" if $me eq "amsthdoc-it"; + $ctan_dir = "info/tex-references" if $me eq "tex-refs"; + $ctan_dir = "language/basque" if $me eq "hyphen-basque"; + $ctan_dir = "language/devanagari/velthuis" if $me eq "devanagr"; + $ctan_dir = "language/hyphenation" if $me eq "hyphen-german"; + $ctan_dir = "language/hyphenation/elhyphen" if $me eq "hyphen-greek"; + $ctan_dir = "macros/latex/contrib/misc" if $me eq "ltxmisc"; + $ctan_dir = "macros/generic" if $me eq "genmisc"; + + # do last, for sake of subdirs above. + $ctan_dir = "language/hyphenation" + if $me =~ /^hyphen-/ && ! $ctan_dir; + + print "$CTAN/$ctan_dir\n" if $ctan_dir; + return $ctan_dir ? 0 : 1; +} + +# this was the inverse code from ctan2tl, saving for a while until i get +# a better grip. +## case "$pkg" in +## biblio) pkg=beebe;; +## fourier-GUT) pkg=fourier;; +## generic) pkg=genmisc;; # $ctan/macros/generic +## ha-prosper) pkg=HA-prosper;; +## misc) pkg=ltxmisc;; # until we do real misc package. +## tex-references) pkg=tex-refs;; +## velthuis) pkg=devanagr;; +## voss) pkg=voss-de;; +## esac +## +## # lshort is arranged by language. +## pkgdir=`dirname $ctan_dir1` +## up=`basename $pkgdir` +## test "$up" = lshort && pkg=lshort-$pkg +## +## # esint is split into two. +## test "$pkg" = esint && test "$up" = ps-type1 && pkg=esint-type1 +## +## # vntex, powerdot, lh aare in unpacked subdirs. +## test "$pkg" = unpacked && test "$up" = vntex && pkg=vntex +## test "$pkg" = distrib && test "$up" = powerdot && pkg=powerdot +## test "$pkg" = texmf && test "$up" = lh && pkg=lh +## +## # powerdot-doc-vn is a couple subdirs down. +## test "$pkg" = doc-vn && test "$up" = contrib && pkg=powerdot-doc-vn +## +## # amslatex/vietnamese. +## test "$pkg" = vietnamese && test "$up" = amslatex && pkg=amsldoc-vn + diff --git a/Build/tools/tpm-ctan-check b/Build/tools/tpm-ctan-check index 8e4b18a2b40..fe01316c524 100755 --- a/Build/tools/tpm-ctan-check +++ b/Build/tools/tpm-ctan-check @@ -3,8 +3,8 @@ # Public domain. Originally written 2005, Karl Berry. # Check if a package in TL has any changes on CTAN. Just the beginnings. -$CTAN = $ENV{"CTAN"} || "/home/ftp/tex-archive"; chomp (my $mydir = `dirname $0`); +chomp ($mydir = `cd $mydir && pwd`); chomp ($TL = `cd $mydir/../../Master && pwd`); chdir ($TL) || die "chdir($TL) failed: $!"; @@ -41,7 +41,7 @@ sub main "genmisc", "glossary", "gost", "graphics", "graphicx-psmin", "hyphen-base", "hyphen-basque", "hyphen-german", "hyphen-greek", "hyphen-norwegian", "hyphen-ukenglish", "hyphen-usorbian", - "ibygrk", "iopart-num", + "ibygrk", "iopart-num", "itamsldoc", "koma-script", "labelcase", "ledmac", "lewis", "lfb", "lh", "lineno", "lshort-bulgarian", "lshort-dutch", "lshort-english", @@ -113,10 +113,11 @@ sub do_tpm my $needed = 0; my %tpm = &read_tpm ($tpm); + my @tpm_files = @{$tpm{"files"}}; my @compared = (); - - for my $file (@{$tpm{"files"}}) { + for my $file (@tpm_files) { +#warn "checking file $file\n"; my $tl_file = "$TL/$file"; if (! -e $tl_file) { warn "$tl_file: TL file missing\n"; @@ -124,15 +125,17 @@ sub do_tpm } (my $basefile = $file) =~ s,^.*/,,; - chomp (my @ctan_files = `find $CTAN/$tpm{CTANDir}/ -name $basefile`); + chomp (my @ctan_files = `find $tpm{CTANdir}/ -name $basefile`); +#warn "ctan find $basefile: @ctan_files\n"; # the trailing / is so if we happen to hit a symlink on CTAN, it'll # go through. next if @ctan_files > 1; # if more than one file by same name, skip my $ctan_file = $ctan_files[0]; +#warn "ctan file is $ctan_file\n"; if (! -e $ctan_file) { # maybe it'll be there with a case change in the name - chomp (@ctan_files = `find $CTAN/$tpm{CTANDir}/ -iname $basefile`); + chomp (@ctan_files = `find $tpm{CTANdir}/ -iname $basefile`); next if @ctan_files > 1; # if more than one file by same name, skip $ctan_file = $ctan_files[0]; @@ -146,9 +149,9 @@ sub do_tpm push (@compared, $basefile); if (&files_differ ($tl_file, $ctan_file)) { - # we mostly regenerate pdf's for TL (sebastian thinks we should :), so - # don't complain if they are different. On the other hand, we - # don't always regenerate them, so might as well check first. + # we sometimes regenerate pdf's for TL, so we don't complain if + # they are different. On the other hand, we don't always + # regenerate them, so might as well check first. next if $tl_file =~ /\.pdf$/; print "# $tpm\ndiff $ctan_file $tl_file\n"; @@ -160,7 +163,8 @@ sub do_tpm # xx check ctan dir for new files if (@compared == 0) { - warn "\n$tpm: no files to compare in $CTAN/$tpm{CTANDir}, fixme!\n"; + warn "\n$tpm: no files to compare in $tpm{CTANdir}, fixme!\n"; + warn "(tpm_files = @tpm_files)\n"; } elsif ($needed == 0) { print "ok, " . (@compared + 0) . " compared (@compared)\n" if $OPT{"verbose"}; @@ -203,70 +207,10 @@ sub read_tpm (my $me = $tpm) =~ s,.*/,,; $me =~ s/\.tpm$//; + chomp (my $ctan_dir = `$mydir/tlpkginfo --ctan-dir '$me'`); - (my $menobin = $me) =~ s,^bin-,,; - (my $menodash = $me) =~ s,^.*-,,; - (my $menopowerdot = $me) =~ s,^powerdot-,,; - (my $menotype1 = $me) =~ s,-type1$,,; - - # xx how to really figure this out? - for my $dir ( - "macros/latex/contrib/$me", # most everything - "macros/latex/contrib/\L$me", # HA-prosper - "macros/latex/contrib/powerdot/contrib/$menopowerdot", # powerdot-doc-vn - "macros/latex/exptl/$me", # semioneside - "macros/latex/required/$me", # babel - "macros/plain/$me", # plnfss - "macros/xetex/latex/$me", # xetex - "macros/generic/$me", # abbr - "macros/generic/diagrams/$me", # circ - "macros/$me", # eplain - "support/$me", # thumbpdf - "support/$menobin", # bin-thumbpdf - "language/vietnamese/$me/unpacked", # vntex - "language/hebrew/$me", # cjhebrew - "language/greek/package-babel/$me", # ibycus-babel - "language/coptic/$me", # cbcoptic - "info/math/voss/$me", # mathmode - "info/lshort/$menodash", # lshort-english - "info/bibtex/$me", # tamethebeast - "info/symbols/$me", # comprehensive - "info/$me", # Type1fonts - "graphics/$me", # sparklines - "graphics/metapost/contrib/macros/$me", # mpattern - "graphics/pstricks/contrib/pedigree/$me", # pst-pdgr - "graphics/pstricks/contrib/$me", # pstricks-add - "fonts/$me", # MnSymbol - "fonts/gothic/$me", # blacklettert1 - "fonts/cyrillic/$me/texmf", # lh - "fonts/greek/$me", # lfb - "fonts/ps-type1/$me", # cm-super - "fonts/ps-type1/$menotype1", # esint-type1 - "fonts/utilities/$me", # accfonts - "biblio/bibtex/contrib/$me", # dk-bib - ) { - if (-d "$CTAN/$dir") { - $ret{"CTANDir"} = $dir; - last; - } - } - - # names totally dissimilar - $ret{"CTANDir"} = "fonts/fourier-GUT" if $me eq "fourier"; - $ret{"CTANDir"} = "info/biblio" if $me eq "beebe"; - $ret{"CTANDir"} = "info/tex-references" if $me eq "tex-refs"; - $ret{"CTANDir"} = "language/basque" if $me eq "hyphen-basque"; - $ret{"CTANDir"} = "language/devanagari/velthuis" if $me eq "devanagr"; - $ret{"CTANDir"} = "language/hyphenation" if $me eq "hyphen-german"; - $ret{"CTANDir"} = "language/hyphenation/elhyphen" if $me eq "hyphen-greek"; - $ret{"CTANDir"} = "macros/latex/contrib/misc" if $me eq "ltxmisc"; - $ret{"CTANDir"} = "macros/generic" if $me eq "genmisc"; - - # do last, for sake of subdirs above. - $ret{"CTANDir"} = "language/hyphenation" - if $me =~ /^hyphen-/ && ! $ret{"CTANDir"}; - - die "$0: no CTAN directory for $me\n" if ! exists $ret{"CTANDir"}; + die "$0: no CTAN directory for $me\n" if ! $ctan_dir; + $ret{"CTANdir"} = $ctan_dir; return %ret; } |