diff options
Diffstat (limited to 'Master/tlpkg')
-rwxr-xr-x | Master/tlpkg/bin/ctan2tl | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Master/tlpkg/bin/ctan2tl b/Master/tlpkg/bin/ctan2tl new file mode 100755 index 00000000000..92e8e9db50c --- /dev/null +++ b/Master/tlpkg/bin/ctan2tl @@ -0,0 +1,121 @@ +#!/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 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. Without +# --place, it doesn't even create any files in the repository outside of +# cdbuild/{raw,cooked}. + +unset CDPATH # avoid extraneous output + +mydir=`cd \`dirname $0\` && pwd` # Master/tlpkg/bin +Build=`cd ../../../Build && pwd` +raw=$Build/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 + +pkg=$1 +if test -z "$pkg"; then + echo "$0: no TL package name specified." >&2 + exit 1 +fi + +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 $pkg" +echo "$0: is $ctan_dir1" + +if $copy_from_ctan; then + +# remove whatever old stuff we might have. +rm -rf $pkg + +# An important special case: the latex-tds project contains tds-ready +# zip files for the base latex distribution and amslatex. +# We want to use them. +corelatex_tds_pkglist="babel|cyrillic|graphics|latex|psnfss|tools" +amslatex_tds_pkglist="ams|amscls|amsltx2|amsmath|amsrefs" # dup in tlpkginfo +latex_tds_pkglist="latex-tds|$amslatex_tds_pkglist|$corelatex_tds_pkglist" + +if echo "$pkg" | egrep "^($latex_tds_pkglist)\$" >/dev/null; then + mkdir $pkg + ctan_root=`tlpkginfo --ctan-root` + # + # complications: the latex-tds package, for our purposes, is the + # sources for the tools that do the process; that's in the zip file + # source.zip, in the latex-tds directory. Similarly, the zip file for + # latex itself is named "base.zip". Finally, amslatex.zip actually + # contains several packages (= directories) -- such as ams, amscls, + # etc. AMS sets it up that way. + # + if test $pkg = latex-tds; then + zipname=source.zip + elif test $pkg = latex; then + zipname=base.zip + elif echo "$pkg" | egrep "^($amslatex_tds_pkglist)\$" >/dev/null; then + zipname=amslatex.zip + else + zipname=$pkg.zip + fi + (cd $pkg && unzip -qq $ctan_root/macros/latex/contrib/latex-tds/$zipname) + +elif 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 $ctan_dir1/* '(' -type d -o -type l ')' -prune -o \ + '(' -name '*.sty' -o -name *.tex ')' -print` \ + $pkg + +else + # normal case (/. to deref symlinks, e.g., arabtex) + cp -pr $ctan_dir1/. $pkg +fi + +fi # end of copying from CTAN. + + +# +printf "\n$0: calling ctan2tds\n" +rm -rf ../cooked/$pkg +test -d ../cooked || mkdir ../cooked +../ctan2tds.pl --ctan-dir=$ctan_dir1 $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 -r +1 + +printf "\n$0: calling place $place_chicken\n" +rm -rf $pkg.done +../place $place_chicken $pkg +status=$? + +rm -rf ../raw/$pkg +exit $status |