#!/bin/sh # $Id$ # Public domain. Originally written 2005, Karl Berry. # # Initial attempt at pushing a ctan directory into TL. # See ./README for a bit more info. # # Basic usage: ctan2tl /path/to/ctan/package # --place to include final `place' invocation (repository adds/removes). # --no-ctan if already have files in ../cdbuild/raw/PKG. # # This does not actually commit anything to the repository. mydir=`dirname $0` # Build/tools raw=$mydir/../cdbuild/raw test -d $raw || mkdir $raw cd $raw || exit 1 if test "x$1" = x--place; then place_chicken= shift else place_chicken=-n fi if test "x$1" = x--no-ctan; then copy_from_ctan=false shift else copy_from_ctan=true fi if test ! -d $1; then echo "$0: $1 not a directory." >&2 exit 1 fi # xx this should be a separate script, also used by tpm-ctan-check. pkg=`basename $1` 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 $1` 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 # remove whatever old stuff we might have. rm -rf $pkg if test "$pkg" = genmisc; then # do not copy subdirs, symlinks, or any files but .sty and .tex # (that is, no patch.doc or pmat.zip). mkdir -p $pkg cp -p \ `find $1/* '(' -type d -o -type l ')' -prune -o \ '(' -name '*.sty' -o -name *.tex ')' -print` \ $pkg else # normal case cp -pr $1 $pkg fi fi # end of copying from CTAN. printf "\n\f ctan2tds\n" rm -rf ../cooked/$pkg test -d ../cooked || mkdir ../cooked ../ctan2tds.pl $pkg || exit 1 cd ../cooked || exit 1 printf "\n\f cooked\n" find -depth -type d | xargs rmdir 2>/dev/null find $pkg \! -type d -printf "%TY%Tm%Td.%TH%TM %p\n" | sort +1 # compare to tpm. Master=../../../Master tpmfile=`ls $Master/texmf*/tpm/$pkg.tpm 2>/dev/null` if test -z "$tpmfile"; then echo "$0: no tpm file for $pkg in `cd $Master; pwd`." >&2 else printf "\n\f compared to current tpm $tpmfile\n" rm -f /tmp/pkgfiles.* # remove leading text in case of lines starting with texmf. # Then assume all actual files do start with texmf. sed -n -e '/TPM:.*Files/,$s,^texmf,./texmf,p' $tpmfile \ | grep -v '\.tpm$' \ | sort >/tmp/pkgfiles.tpm # # list of files in the new package we've just cooked. (cd $pkg && find \! -type d -print) | grep -v '/cooked/' \ | sort >/tmp/pkgfiles.tl # comm -3 /tmp/pkgfiles.tpm /tmp/pkgfiles.tl fi printf "\n\f place $place_chicken\n" rm -rf $pkg.done ../place $place_chicken $pkg rm -rf ../raw/$pkg