summaryrefslogtreecommitdiff
path: root/Build/tools/ctan2tl
blob: 413fc6ca198da76fc9838a0a4f007b65454121f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/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`  # 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"
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   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

printf "\nplace $place_chicken\n"
rm -rf $pkg.done
../place $place_chicken $pkg
status=$?

rm -rf ../raw/$pkg
exit $status