summaryrefslogtreecommitdiff
path: root/Build/tools/etc/ctan2tl.new
diff options
context:
space:
mode:
Diffstat (limited to 'Build/tools/etc/ctan2tl.new')
-rwxr-xr-xBuild/tools/etc/ctan2tl.new168
1 files changed, 168 insertions, 0 deletions
diff --git a/Build/tools/etc/ctan2tl.new b/Build/tools/etc/ctan2tl.new
new file mode 100755
index 00000000000..1a486865b34
--- /dev/null
+++ b/Build/tools/etc/ctan2tl.new
@@ -0,0 +1,168 @@
+#!/bin/sh
+# $Id: ctan2tl 2084 2006-09-05 22:03:38Z karl $
+# 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` # 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
+
+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 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" = rsc; then
+ # single bst file.
+ mkdir -p $pkg
+ cp -p $ctan_dir1 $pkg
+
+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
+
+# Another special case: 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' subdirectory, which ctan2tds.pl has a further special case
+# to handle. Maybe we'll come across other cases like this, in which
+# case we can generalize this.
+#
+if test "$pkg" = tugboat; then
+ ctan_dir2=`echo $ctan_dir1 | sed s/latex/plain/`
+ destdir2=$pkg/plain
+ cp -r $ctan_dir2 $destdir2
+fi
+
+fi # end of copying from CTAN.
+
+
+#
+printf "\n 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 -r +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 "\nBEGIN COMPARE DATA"
+ printf "\n\f new vs. present $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.new
+ #
+ comm -3 /tmp/pkgfiles.new /tmp/pkgfiles.tpm
+ #
+ for common_file in `comm -12 /tmp/pkgfiles.new /tmp/pkgfiles.tpm`; do
+ diff --ignore-all-space -u0 $Master/$common_file $pkg/$common_file
+ done >/tmp/tldiff
+ diff_lines=`wc -l </tmp/tldiff`
+ diff_lines=`expr $diff_lines / 2`
+ printf "CMP: %d common files, ~%d lines different (/tmp/tldiff)\n" \
+ `comm -12 /tmp/pkgfiles.new /tmp/pkgfiles.tpm | wc -l` $diff_lines
+ printf "\nEND COMPARE DATA\n"
+fi
+
+printf "\n\f place $place_chicken\n"
+rm -rf $pkg.done
+../place $place_chicken $pkg
+status=$?
+
+rm -rf ../raw/$pkg
+exit $status