summaryrefslogtreecommitdiff
path: root/source/t/tetex
diff options
context:
space:
mode:
Diffstat (limited to 'source/t/tetex')
-rwxr-xr-xsource/t/tetex/jadetex.build68
-rwxr-xr-xsource/t/tetex/profile.d/tetex.csh4
-rwxr-xr-xsource/t/tetex/profile.d/tetex.sh4
-rw-r--r--source/t/tetex/slack-desc.tetex20
-rw-r--r--source/t/tetex/slack-desc.tetex-doc19
-rw-r--r--source/t/tetex/tetex.CVE-2005-3193.diff169
-rwxr-xr-xsource/t/tetex/tetex.SlackBuild255
-rw-r--r--source/t/tetex/tetex.amstex.fmtutil.diff13
-rw-r--r--source/t/tetex/tetex.browsers.diff39
-rw-r--r--source/t/tetex/tetex.dvipdfm.mkstemp.diff20
-rw-r--r--source/t/tetex/tetex.etex.diff11
-rw-r--r--source/t/tetex/tetex.fontcachedirinhome.diff11
-rw-r--r--source/t/tetex/tetex.scripts.mktemp.diff244
-rw-r--r--source/t/tetex/tetex.tmp.cleanup.diff51
-rw-r--r--source/t/tetex/tetex.var.fonts.diff11
15 files changed, 939 insertions, 0 deletions
diff --git a/source/t/tetex/jadetex.build b/source/t/tetex/jadetex.build
new file mode 100755
index 00000000..0d76f7e9
--- /dev/null
+++ b/source/t/tetex/jadetex.build
@@ -0,0 +1,68 @@
+#!/bin/sh
+# jadetex build/install script taken from Stuart Winter's build
+# script for linuxdoc-tools.
+
+# Sanity check:
+if [ -z "$SLKCFLAGS" ]; then
+ echo "This script is only meant to be run from tetex.SlackBuild,"
+ echo "so I hope you know what you are doing."
+ echo -n "Hit Enter to continue anyway... "
+ read junk
+fi
+
+JADETEXVER=3.13
+
+# sgmltools-lite's POSTINSTALL document suggests that if jadetex
+# is eating huge amounts of RAM, we need to configure it thusly:
+# Slackware's t/tetex package contains this config file (without the
+# .jadetext config) so I won't overwrite it here. However, we may
+# wish to append this configuration to an install script for
+# this package; but it'd get overwritten by new versions of
+# t/tetex. Perhaps this configuration could be added to the tetex package?
+
+ cat << EOF >> /usr/share/texmf/web2c/texmf.cnf
+
+% options for jadetex:
+hash_extra.jadetex = 15000
+pool_size.jadetex = 200000
+max_strings.jadetex = 50000
+save_size.jadetex = 15000
+EOF
+chmod 644 /usr/share/texmf/web2c/texmf.cnf
+
+# Extract source:
+cd $TMP
+rm -rf jadetex-$JADETEXVER
+tar xvf $CWD/jadetex-$JADETEXVER.tar.gz || exit 1
+cd jadetex-$JADETEXVER
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Build:
+# The install phase breaks if we use tex or etex, so we use latex instead:
+sed -ie "s?tex -ini?latex -ini?" Makefile
+make $NUMJOBS || make || exit 1
+
+# Install onto filesystem:
+make install || exit 1
+
+# Create jadetex symlinks to the TeTex binaries:
+( cd /usr/share/texmf/bin
+ rm -f jadetex pdfjadetex
+ ln -sf latex jadetex
+ ln -sf pdfetex pdfjadetex
+)
+
+# Update the references to jadetex & pdfjadetex:
+mktexlsr
+
+# Install man pages - these are missed by the Makefile:
+mkdir -p /usr/share/texmf/man/man1
+install -m644 jadetex.1 pdfjadetex.1 /usr/share/texmf/man/man1
+gzip -9 /usr/share/texmf/man/man1/jadetex.1
+gzip -9 /usr/share/texmf/man/man1/pdfjadetex.1
+
diff --git a/source/t/tetex/profile.d/tetex.csh b/source/t/tetex/profile.d/tetex.csh
new file mode 100755
index 00000000..30496c4c
--- /dev/null
+++ b/source/t/tetex/profile.d/tetex.csh
@@ -0,0 +1,4 @@
+#!/bin/csh
+# Add path and MANPATH for teTeX:
+set path = ( $path /usr/share/texmf/bin )
+setenv MANPATH ${MANPATH}:/usr/share/texmf/man
diff --git a/source/t/tetex/profile.d/tetex.sh b/source/t/tetex/profile.d/tetex.sh
new file mode 100755
index 00000000..8987135e
--- /dev/null
+++ b/source/t/tetex/profile.d/tetex.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+# Add PATH and MANPATH for teTeX:
+PATH="$PATH:/usr/share/texmf/bin"
+MANPATH="$MANPATH:/usr/share/texmf/man"
diff --git a/source/t/tetex/slack-desc.tetex b/source/t/tetex/slack-desc.tetex
new file mode 100644
index 00000000..ce66d03f
--- /dev/null
+++ b/source/t/tetex/slack-desc.tetex
@@ -0,0 +1,20 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+tetex: tetex (teTeX binaries and support files)
+tetex:
+tetex: This package contains the binaries and support files required for the
+tetex: teTeX TeX distribution, such as input files for TeX, runtime
+tetex: configuration files, hyphenation tables, manpages, and the computer
+tetex: modern fonts.
+tetex:
+tetex:
+tetex:
+tetex:
+tetex:
+tetex:
diff --git a/source/t/tetex/slack-desc.tetex-doc b/source/t/tetex/slack-desc.tetex-doc
new file mode 100644
index 00000000..7486398f
--- /dev/null
+++ b/source/t/tetex/slack-desc.tetex-doc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+tetex-doc: tetex-doc (Documentation for teTeX)
+tetex-doc:
+tetex-doc: This package contains documentation for AMSTeX, BibTeX, extended plain
+tetex-doc: format, font packages, format files (babel, texdraw, pstricks, xypic),
+tetex-doc: LaTeX, MetaPost, Makeindex, pdftex, the Kpathsea library, as well as
+tetex-doc: general information about TeX such as a list of ftp servers, a draft
+tetex-doc: for the TeX Directory Standard (TDS), The TeX and LaTeX Catalogue,
+tetex-doc: TeX FAQs, and more.
+tetex-doc:
+tetex-doc:
+tetex-doc:
diff --git a/source/t/tetex/tetex.CVE-2005-3193.diff b/source/t/tetex/tetex.CVE-2005-3193.diff
new file mode 100644
index 00000000..b8f2fad5
--- /dev/null
+++ b/source/t/tetex/tetex.CVE-2005-3193.diff
@@ -0,0 +1,169 @@
+--- tetex-src-3.0/libs/xpdf/goo/gmem.c.CVE-2005-3193 2004-01-22 02:26:44.000000000 +0100
++++ tetex-src-3.0/libs/xpdf/goo/gmem.c 2006-01-16 15:41:04.000000000 +0100
+@@ -135,6 +135,28 @@ void *grealloc(void *p, int size) {
+ #endif
+ }
+
++void *gmallocn(int nObjs, int objSize) {
++ int n;
++
++ n = nObjs * objSize;
++ if (objSize == 0 || n / objSize != nObjs) {
++ fprintf(stderr, "Bogus memory allocation size\n");
++ exit(1);
++ }
++ return gmalloc(n);
++}
++
++void *greallocn(void *p, int nObjs, int objSize) {
++ int n;
++
++ n = nObjs * objSize;
++ if (objSize == 0 || n / objSize != nObjs) {
++ fprintf(stderr, "Bogus memory allocation size\n");
++ exit(1);
++ }
++ return grealloc(p, n);
++}
++
+ void gfree(void *p) {
+ #ifdef DEBUG_MEM
+ int size;
+--- tetex-src-3.0/libs/xpdf/goo/gmem.h.CVE-2005-3193 2004-01-22 02:26:44.000000000 +0100
++++ tetex-src-3.0/libs/xpdf/goo/gmem.h 2006-01-16 15:41:04.000000000 +0100
+@@ -28,6 +28,15 @@ extern void *gmalloc(int size);
+ extern void *grealloc(void *p, int size);
+
+ /*
++ * These are similar to gmalloc and grealloc, but take an object count
++ * and size. The result is similar to allocating nObjs * objSize
++ * bytes, but there is an additional error check that the total size
++ * doesn't overflow an int.
++ */
++extern void *gmallocn(int nObjs, int objSize);
++extern void *greallocn(void *p, int nObjs, int objSize);
++
++/*
+ * Same as free, but checks for and ignores NULL pointers.
+ */
+ extern void gfree(void *p);
+--- tetex-src-3.0/libs/xpdf/xpdf/JPXStream.cc.CVE-2005-3193 2004-01-22 02:26:45.000000000 +0100
++++ tetex-src-3.0/libs/xpdf/xpdf/JPXStream.cc 2006-01-16 15:41:04.000000000 +0100
+@@ -666,7 +666,7 @@ GBool JPXStream::readCodestream(Guint le
+ int segType;
+ GBool haveSIZ, haveCOD, haveQCD, haveSOT;
+ Guint precinctSize, style;
+- Guint segLen, capabilities, comp, i, j, r;
++ Guint segLen, capabilities, nTiles, comp, i, j, r;
+
+ //----- main header
+ haveSIZ = haveCOD = haveQCD = haveSOT = gFalse;
+@@ -701,8 +701,13 @@ GBool JPXStream::readCodestream(Guint le
+ / img.xTileSize;
+ img.nYTiles = (img.ySize - img.yTileOffset + img.yTileSize - 1)
+ / img.yTileSize;
+- img.tiles = (JPXTile *)gmalloc(img.nXTiles * img.nYTiles *
+- sizeof(JPXTile));
++ nTiles = img.nXTiles * img.nYTiles;
++ // check for overflow before allocating memory
++ if (nTiles == 0 || nTiles / img.nXTiles != img.nYTiles) {
++ error(getPos(), "Bad tile count in JPX SIZ marker segment");
++ return gFalse;
++ }
++ img.tiles = (JPXTile *)gmallocn(nTiles, sizeof(JPXTile));
+ for (i = 0; i < img.nXTiles * img.nYTiles; ++i) {
+ img.tiles[i].tileComps = (JPXTileComp *)gmalloc(img.nComps *
+ sizeof(JPXTileComp));
+--- tetex-src-3.0/libs/xpdf/xpdf/Stream.h.CVE-2005-3193 2004-01-22 02:26:45.000000000 +0100
++++ tetex-src-3.0/libs/xpdf/xpdf/Stream.h 2006-01-16 15:41:04.000000000 +0100
+@@ -233,6 +233,8 @@ public:
+
+ ~StreamPredictor();
+
++ GBool isOk() { return ok; }
++
+ int lookChar();
+ int getChar();
+
+@@ -250,6 +252,7 @@ private:
+ int rowBytes; // bytes per line
+ Guchar *predLine; // line buffer
+ int predIdx; // current index in predLine
++ GBool ok;
+ };
+
+ //------------------------------------------------------------------------
+--- tetex-src-3.0/libs/xpdf/xpdf/Stream.cc.CVE-2005-3193 2004-01-22 02:26:45.000000000 +0100
++++ tetex-src-3.0/libs/xpdf/xpdf/Stream.cc 2006-01-16 15:41:04.000000000 +0100
+@@ -407,18 +407,33 @@ void ImageStream::skipLine() {
+
+ StreamPredictor::StreamPredictor(Stream *strA, int predictorA,
+ int widthA, int nCompsA, int nBitsA) {
++ int totalBits;
++
+ str = strA;
+ predictor = predictorA;
+ width = widthA;
+ nComps = nCompsA;
+ nBits = nBitsA;
++ predLine = NULL;
++ ok = gFalse;
+
+ nVals = width * nComps;
++ totalBits = nVals * nBits;
++ if (totalBits == 0 ||
++ (totalBits / nBits) / nComps != width ||
++ totalBits + 7 < 0) {
++ return;
++ }
+ pixBytes = (nComps * nBits + 7) >> 3;
+- rowBytes = ((nVals * nBits + 7) >> 3) + pixBytes;
++ rowBytes = ((totalBits + 7) >> 3) + pixBytes;
++ if (rowBytes < 0) {
++ return;
++ }
+ predLine = (Guchar *)gmalloc(rowBytes);
+ memset(predLine, 0, rowBytes);
+ predIdx = rowBytes;
++
++ ok = gTrue;
+ }
+
+ StreamPredictor::~StreamPredictor() {
+@@ -1012,6 +1027,10 @@ LZWStream::LZWStream(Stream *strA, int p
+ FilterStream(strA) {
+ if (predictor != 1) {
+ pred = new StreamPredictor(this, predictor, columns, colors, bits);
++ if (!pred->isOk()) {
++ delete pred;
++ pred = NULL;
++ }
+ } else {
+ pred = NULL;
+ }
+@@ -2897,6 +2916,14 @@ GBool DCTStream::readBaselineSOF() {
+ height = read16();
+ width = read16();
+ numComps = str->getChar();
++ if (numComps <= 0 || numComps > 4) {
++ error(getPos(), "Bad number of components in DCT stream", prec);
++ return gFalse;
++ }
++ if (numComps <= 0 || numComps > 4) {
++ error(getPos(), "Bad number of components in DCT stream", prec);
++ return gFalse;
++ }
+ if (prec != 8) {
+ error(getPos(), "Bad DCT precision %d", prec);
+ return gFalse;
+@@ -3255,6 +3282,10 @@ FlateStream::FlateStream(Stream *strA, i
+ FilterStream(strA) {
+ if (predictor != 1) {
+ pred = new StreamPredictor(this, predictor, columns, colors, bits);
++ if (!pred->isOk()) {
++ delete pred;
++ pred = NULL;
++ }
+ } else {
+ pred = NULL;
+ }
diff --git a/source/t/tetex/tetex.SlackBuild b/source/t/tetex/tetex.SlackBuild
new file mode 100755
index 00000000..f1927332
--- /dev/null
+++ b/source/t/tetex/tetex.SlackBuild
@@ -0,0 +1,255 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=3.0
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-6}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+# There were so many local security problems with this shared fontcache
+# scheme that it's not worth trying to support. It was not enabled by
+# default, and newer versions of teTeX don't seem to recongnize it any
+# longer either.
+#export fontcache=/var/cache/fonts
+#export vartexfonts=$fontcache
+#mkdir -p /var/cache/fonts/pk /var/cache/fonts/source /var/cache/fonts/tfm
+#chmod 1777 /var/cache/fonts /var/cache/fonts/pk \
+# /var/cache/fonts/source /var/cache/fonts/tfm
+
+# Safer to purge this first:
+rm -rf /usr/share/texmf
+rm -rf /usr/share/texmf-var
+rm -rf /usr/share/texi2html
+
+# Make a clean new directory:
+mkdir -p /usr/share/texmf
+( cd /usr/share/texmf
+ tar xvf $CWD/tetex-texmf-$VERSION.tar.xz
+ chown -R root:root .
+ find . -type f -perm 666 -exec chmod 644 {} \;
+)
+cd $TMP
+rm -rf tetex-src-$VERSION
+tar xvf $CWD/tetex-src-$VERSION.tar.xz
+cd tetex-src-$VERSION
+chown -R root:root .
+find . -type f -perm 666 -exec chmod 644 {} \;
+
+# Fix possible xpdf overflows:
+zcat $CWD/tetex.CVE-2005-3193.diff.gz | patch -p1 --verbose || exit 1
+
+# /var/lib/texmf is a better font location than /var/tmp/texfonts:
+zcat $CWD/tetex.var.fonts.diff.gz | patch -p1 --verbose || exit 1
+
+# Even better is something in your $HOME directory:
+zcat $CWD/tetex.fontcachedirinhome.diff.gz | patch -p1 --verbose || exit 1
+
+# Use mkstemp() in dvipdfm:
+zcat $CWD/tetex.dvipdfm.mkstemp.diff.gz | patch -p1 --verbose || exit 1
+
+# Use mktemp in scripts:
+zcat $CWD/tetex.scripts.mktemp.diff.gz | patch -p1 --verbose || exit 1
+
+# Try to use more modern browsers.
+# Attempt to use them in this order: firefox, seamonkey, mozilla, links, lynx.
+zcat $CWD/tetex.browsers.diff.gz | patch -p1 --verbose || exit 1
+
+# Add bplain and bamstex info to fmtutil.cnf:
+zcat $CWD/tetex.amstex.fmtutil.diff.gz | patch -p1 --verbose || exit 1
+
+# Don't leave texconfig junk in $TMP:
+zcat $CWD/tetex.tmp.cleanup.diff.gz | patch -p1 --verbose || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure --prefix=/usr/share/texmf \
+ --datadir=/usr/share \
+ --disable-multiplatform \
+ --disable-a4 \
+ --without-dialog \
+ --without-texinfo \
+ --with-system-ncurses \
+ --with-system-pnglib \
+ --with-system-t1lib \
+ --with-system-tifflib \
+ --with-system-zlib \
+ --with-ps=gs \
+ --enable-ipc \
+ --enable-freetype \
+ --with-etex
+# --without-texinfo # Really, it doesn't hurt to include these twice...
+
+# This was reported to fix a problem with newer GNU sources and "make dvi".
+# It does, in fact, fix a bug where the etex binary/engine really should be
+# used when etex and dvi output are requested, but the example given to me
+# (which was "make dvi" in GNU binutils) also has some problems that have to
+# be fixed. This confused me for a good long time. ;-)
+# BTW, the fix for the binutils docs is to edit bfd.texinfo and remove that
+# @tex through @end tex section near the top. Then build twice. Hit enter
+# if it "sticks".
+zcat $CWD/tetex.etex.diff.gz | patch -p1 --verbose || exit 1
+
+make all $NUMJOBS || make all || exit 1
+make install strip || exit 1
+
+if ! echo $PATH | grep /usr/share/texmf/bin ; then
+ PATH=$PATH:/usr/share/texmf/bin
+fi
+# ... [don't] make links to all binaries in /usr/bin for the final package.
+# [that would be really pointless... $PATH should work, period. ]
+
+# If latex isn't there, maybe we need to do this:
+if [ ! -r /usr/share/texmf/bin/latex ]; then
+ texconfig init
+fi
+
+# Let's start with these defaults:
+texconfig confall
+texconfig dvips paper letter
+texconfig xdvi paper us
+
+# These *might* be useful...
+# Some are known to be not-so-useful, though, as they put the config files
+# into /root/.texmf-config, which we're simply going to throw away anyway
+# so it won't interfere with server testing. If you need these options,
+# you'll probably have to run texconfig yourself in your own user (or root)
+# account.
+texconfig mode ljfour
+#texconfig xdvi paper a4
+texconfig dvips mode ljfour
+#texconfig dvips paper a4
+texconfig dvips printcmd -
+texconfig dvips add bjc600
+texconfig dvips add stcolor
+texconfig dvips add deskjet
+texconfig dvips add ljet4
+texconfig dvips -P bjc600 mode canonbjc
+texconfig dvips -P stcolor mode epstylus
+texconfig dvips -P deskjet mode deskjet
+texconfig dvips -P ljet4 mode ljfour
+texconfig font ro
+texconfig rehash
+
+# Add jadetex to the package:
+. $CWD/jadetex.build
+
+# Toss redundant docs:
+( cd /usr/share/texmf/doc
+ for file in $(find . -name "*.dvi") ; do
+ rm -f $(dirname $file)/$(basename $file .dvi).pdf
+ done
+)
+
+# Discard local configurations:
+if [ -e /root/.texmf-config ]; then
+ mv /root/.texmf-config /root/.texmf-config-$(mcookie)
+ echo "/root/.texmf-config moved out of the way... you may wish"
+ echo "to purge any /root/.texmf-config-* directories if the"
+ echo "cruft heap gets too large."
+fi
+
+# Now, package the /usr/share/texmf/ and /usr/share/texi2html trees.
+# Package tetex-doc.txz and tetex-bin.txz seperately.
+
+PKG1=$TMP/package-tetex
+PKG2=$TMP/package-tetex-doc
+rm -rf $PKG1 $PKG2
+mkdir -p $PKG1 $PKG2
+
+mkdir -p $PKG1/usr/share
+mv /usr/share/texmf $PKG1/usr/share
+mv /usr/share/texmf-var $PKG1/usr/share
+mv /usr/share/texi2html $PKG1/usr/share
+
+# The tetex.txz file will need an installation script to add
+# /usr/share/texmf/bin to the $PATH and /usr/share/texmf/man to the $MANPATH:
+mkdir -p $PKG1/etc/profile.d
+cp -a $CWD/profile.d/tetex.* $PKG1/etc/profile.d
+chown root:root $PKG1/etc/profile.d/tetex.*
+chmod 755 $PKG1/etc/profile.d/tetex.*
+
+mkdir -p $PKG1/install
+cp $CWD/slack-desc.tetex $PKG1/install/slack-desc
+mkdir -p $PKG2/install
+cp $CWD/slack-desc.tetex-doc $PKG2/install/slack-desc
+
+# Strip everything:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Gzip man pages:
+gzip -9 $PKG1/usr/share/texmf/man/man?/*.?
+
+# Fix manpage symlinks:
+( cd $PKG1/usr/share/texmf/man
+ for dir in man? ; do
+ ( cd $dir
+ for file in *.? ; do
+ if [ -L $file ]; then
+ LINK=$(readlink $file)
+ rm $file
+ ln -sf ${LINK}.gz ${file}.gz
+ fi
+ done
+ )
+ done
+)
+
+# Move some of the files into the docs package:
+mkdir -p $PKG2/usr/share/texmf/doc
+mv $PKG1/usr/share/texmf/doc/* $PKG2/usr/share/texmf/doc
+mkdir -p $PKG2/usr/share/texinfo
+mv /usr/share/texinfo/html $PKG2/usr/share/texinfo
+mv $PKG1/usr/share/texmf/info $PKG2/usr
+( cd $PKG1/usr/share/texmf ; ln -sf /usr/info . )
+
+# Compress info pages and purge "dir" file from the package:
+if [ -d $PKG2/usr/info ]; then
+ ( cd $PKG2/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Make docs link in /usr/doc/:
+mkdir -p $PKG2/usr/doc
+( cd $PKG2/usr/doc ; rm -rf tetex-$VERSION )
+( cd $PKG2/usr/doc ; ln -sf /usr/share/texmf/doc tetex-$VERSION )
+
+# Build the packages:
+cd $PKG1
+/sbin/makepkg -l y -c n $TMP/tetex-$VERSION-$ARCH-$BUILD.txz
+cd $PKG2
+/sbin/makepkg -l y -c n $TMP/tetex-doc-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/t/tetex/tetex.amstex.fmtutil.diff b/source/t/tetex/tetex.amstex.fmtutil.diff
new file mode 100644
index 00000000..6ae5c1f9
--- /dev/null
+++ b/source/t/tetex/tetex.amstex.fmtutil.diff
@@ -0,0 +1,13 @@
+--- tetex-src-3.0/texk/web2c/fmtutil.in.fmtutil 2005-02-06 09:27:46.000000000 +0900
++++ tetex-src-3.0/texk/web2c/fmtutil.in 2005-02-07 15:22:31.828492229 +0900
+@@ -55,7 +55,9 @@
+
+ # Change "amstex.ini -> bamstex.ini" and "- -> language.dat"
+ # if you want babel support in amstex:
+-#! amstex pdfetex - -translate-file=cp227.tcx *amstex.ini
++amstex pdfetex - -translate-file=cp227.tcx *amstex.ini
++bplain pdfetex language.dat -translate-file=cp227.tcx bplain.ini
++bamstex pdfetex language.dat -translate-file=cp227.tcx bamstex.ini
+
+ # Change "pdfamstex.ini -> pdfbamstex.ini" and "- -> language.dat"
+ # if you want babel support in pdfamstex:
diff --git a/source/t/tetex/tetex.browsers.diff b/source/t/tetex/tetex.browsers.diff
new file mode 100644
index 00000000..42052aa0
--- /dev/null
+++ b/source/t/tetex/tetex.browsers.diff
@@ -0,0 +1,39 @@
+--- ./texk/xdvik/gui/xm_prefsP.h.orig 2004-04-21 16:12:09.000000000 -0500
++++ ./texk/xdvik/gui/xm_prefsP.h 2006-05-16 16:39:38.000000000 -0500
+@@ -96,8 +96,10 @@
+ #define Xdvi_APPLY_STR "Apply"
+
+ #define Xdvi_PREFS_BROWSER_DEFAULTS \
++ "firefox -remote 'openURL(%s,new-window)'\n" \
++ "seamonkey -remote 'openURL(%s,new-window)'\n" \
+ "mozilla -remote 'openURL(%s,new-window)'\n" \
+- "netscape -raise -remote 'openURL(%s,new-window)'\n" \
++ "xterm -e links %s\n" \
+ "xterm -e lynx %s\n" \
+ Xdvi_ADD_COMMAND_STR
+ #define Xdvi_PREFS_EDITOR_DEFAULTS \
+--- ./texk/xdvik/browser.c.orig 2004-11-11 19:25:26.000000000 -0600
++++ ./texk/xdvik/browser.c 2006-05-16 16:39:52.000000000 -0500
+@@ -39,7 +39,10 @@
+ #include "statusline.h"
+
+ static const char *const default_browser_cmd =
+- "netscape -raise -remote \"openURL(%s,new-window)\""
++ ":firefox -remote \"openURL(%s,new-window)\""
++ ":seamonkey -remote \"openURL(%s,new-window)\""
++ ":mozilla -remote \"openURL(%s,new-window)\""
++ ":xterm -e links %s"
+ ":xterm -e lynx %s"
+ ":xterm -e wget %s";
+
+--- ./texk/xdvik/xdvi.1.in.orig 2005-01-20 10:51:45.000000000 -0600
++++ ./texk/xdvik/xdvi.1.in 2006-05-16 16:40:25.000000000 -0500
+@@ -365,7 +365,7 @@
+ .B WWWBROWSER
+ (in that order) are used to determine the browser command. If these are
+ not set either, the following default value is used:
+-.SB netscape -raise -remote "openURL(%s,new-window)":xterm -e lynx %s:xterm -e wget %s
++.SB firefox -remote -remote "openURL(%s,new-window)":seamonkey -remote "openURL(%s,new-window)":mozilla -remote "openURL(%s,new-window)":xterm -e links %s:xterm -e lynx %s:xterm -e wget %s
+ .\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+ .TP
+ .BI \-bw " width"
diff --git a/source/t/tetex/tetex.dvipdfm.mkstemp.diff b/source/t/tetex/tetex.dvipdfm.mkstemp.diff
new file mode 100644
index 00000000..5cae1bf2
--- /dev/null
+++ b/source/t/tetex/tetex.dvipdfm.mkstemp.diff
@@ -0,0 +1,20 @@
+--- tetex-src-2.0.2/texk/dvipdfm/psimage.c.dvipdfm-security 2001-06-28 20:55:26.000000000 +0100
++++ tetex-src-2.0.2/texk/dvipdfm/psimage.c 2003-03-12 18:12:56.000000000 +0000
+@@ -113,10 +113,15 @@
+ {
+ #ifdef HAVE_SYSTEM
+ pdf_obj *result = NULL;
+- char *tmp, *cmd;
++ char tmp[] = "/tmp/dvipdfm.XXXXXX", *cmd;
++ int tfd;
+ FILE *pdf_file = NULL;
+ /* Get a full qualified tmp name */
+- tmp = tmpnam (NULL);
++ tfd = mkstemp (tmp);
++ if (tfd == -1) {
++ fprintf (stderr, "\nCouldn't create temporary file for output\n");
++ return NULL;
++ } else close (tfd);
+ if ((cmd = build_command_line (file_name, tmp))) {
+ if (!system (cmd) && (pdf_file = MFOPEN (tmp, FOPEN_RBIN_MODE))) {
+ result = pdf_include_page (pdf_file, p, res_name);
diff --git a/source/t/tetex/tetex.etex.diff b/source/t/tetex/tetex.etex.diff
new file mode 100644
index 00000000..0f96a17a
--- /dev/null
+++ b/source/t/tetex/tetex.etex.diff
@@ -0,0 +1,11 @@
+--- ./texk/web2c/fmtutil.cnf.orig 2005-07-17 17:09:33.000000000 -0700
++++ ./texk/web2c/fmtutil.cnf 2005-07-17 17:11:20.000000000 -0700
+@@ -40,7 +40,7 @@
+ # if you want babel support in tex:
+ tex tex - -translate-file=cp227.tcx tex.ini
+ latex pdfetex language.dat -translate-file=cp227.tcx *latex.ini
+-etex pdfetex language.def -translate-file=cp227.tcx *etex.ini
++etex etex language.def -translate-file=cp227.tcx *etex.ini
+ pdftex pdfetex - -translate-file=cp227.tcx *pdftex.ini
+ pdflatex pdfetex language.dat -translate-file=cp227.tcx *pdflatex.ini
+ pdfetex pdfetex language.def -translate-file=cp227.tcx *pdfetex.ini
diff --git a/source/t/tetex/tetex.fontcachedirinhome.diff b/source/t/tetex/tetex.fontcachedirinhome.diff
new file mode 100644
index 00000000..11760a4c
--- /dev/null
+++ b/source/t/tetex/tetex.fontcachedirinhome.diff
@@ -0,0 +1,11 @@
+--- ./texk/kpathsea/texmf.in-teTeX.orig 2005-02-05 18:04:35.000000000 -0600
++++ ./texk/kpathsea/texmf.in-teTeX 2007-06-27 21:44:36.000000000 -0500
+@@ -119,7 +119,7 @@
+ % Where generated fonts may be written. This tree is used when the sources
+ % were found in a system tree and either that tree wasn't writable, or the
+ % varfonts feature was enabled in MT_FEATURES in mktex.cnf.
+-VARTEXFONTS = @vartexfonts@
++VARTEXFONTS = $TEXMFVAR
+
+ % Where to look for ls-R files. There need not be an ls-R in the
+ % directories in this path, but if there is one, Kpathsea will use it.
diff --git a/source/t/tetex/tetex.scripts.mktemp.diff b/source/t/tetex/tetex.scripts.mktemp.diff
new file mode 100644
index 00000000..7d38869c
--- /dev/null
+++ b/source/t/tetex/tetex.scripts.mktemp.diff
@@ -0,0 +1,244 @@
+--- tetex-src-3.0/texk/tetex/allcm.badscript 2004-06-20 21:38:02.000000000 +0900
++++ tetex-src-3.0/texk/tetex/allcm 2005-02-07 15:31:32.578141611 +0900
+@@ -14,7 +14,7 @@
+ test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
+
+ progname=`basename $0`
+-tmpdir=${TMP-/tmp}/$progname.$$
++tmpdir=`mktemp -d ${TMP-/tmp}/$progname.XXXXXX`
+
+ case "$progname" in
+ allec)
+@@ -81,11 +81,6 @@
+ exit 1
+ ' 1 2 3 7 13 15
+
+-(umask 077; mkdir "$tmpdir") || {
+- echo "$progname: failed to create temp directory." >&2
+- exit 1
+-}
+-
+ cd $tmpdir || exit 1
+ echo >&2
+ echo "---------------------------------------------------------------------" >&2
+--- tetex-src-3.0/texk/tetex/fmtutil.badscript 2005-01-30 18:12:16.000000000 +0900
++++ tetex-src-3.0/texk/tetex/fmtutil 2005-02-07 15:31:32.579141429 +0900
+@@ -105,8 +105,6 @@
+
+ trap 'cleanup' 1 2 3 7 13 15
+ needsCleanup=true
+- (umask 077; mkdir "$tmpdir") \
+- || abort "could not create directory \`$tmpdir'"
+ }
+
+ ###############################################################################
+@@ -357,7 +355,7 @@
+ need_find_hyphenfile=false
+ cfgparam=
+ cfgmaint=
+- tmpdir=${TMP-/tmp}/$progname.$$
++ tmpdir=`mktemp -d ${TMP-/tmp}/$progname.XXXXXX`
+ verboseFlag=true
+
+ # mktexfmtMode: if called as mktexfmt, set to true. Will echo the generated
+--- tetex-src-3.0/texk/tetex/texconfig.badscript 2005-02-07 03:20:53.000000000 +0900
++++ tetex-src-3.0/texk/tetex/texconfig 2005-02-07 15:31:32.581141065 +0900
+@@ -35,7 +35,7 @@
+ TEXMFDBS TEXMFINI TEXMFSCRIPTS TEXPICTS TEXPKS TEXPOOL TEXPSHEADERS
+ TEXSOURCES TFMFONTS TRFONTS TTFONTS VFFONTS WEB2C WEBINPUTS
+ "
+-tmpdir=${TMP-/tmp}/tctmp.$$
++tmpdir=`mktemp -d "${TMP-/tmp}/$progname.XXXXXX"` || exit 1
+ needsCleanup=false
+ lastUpdatedFile=
+
+@@ -214,8 +214,6 @@
+
+ trap 'cleanup' 1 2 3 7 13 15
+ needsCleanup=true
+- (umask 077; mkdir "$tmpdir") \
+- || abort "could not create directory \`$tmpdir'"
+ }
+
+ ###############################################################################
+--- tetex-src-3.0/texk/tetex/texlinks.badscript 2004-05-11 03:53:38.000000000 +0900
++++ tetex-src-3.0/texk/tetex/texlinks 2005-02-07 15:31:32.583140701 +0900
+@@ -92,8 +92,6 @@
+
+ trap 'cleanup' 1 2 3 7 13 15
+ needsCleanup=true
+- (umask 077; mkdir "$tmpdir") \
+- || abort "could not create directory \`$tmpdir'"
+ }
+
+
+@@ -209,7 +207,7 @@
+ upd_symlinkdir()
+ {
+ search_symlinkdir || return 0
+- for i in `sed 's@ .*@@' cnf_file_ln.$$`; do
++ for i in `sed 's@ .*@@' $tmpdir/cnf_file_ln`; do
+ install_link "$selfautoloc/$i" "$symlinkdir/$i"
+ done
+ }
+@@ -253,7 +251,7 @@
+ test -f "$cnf_file" || abort "config file \`$cnf' not found"
+
+
+- tmpdir=${TMP-/tmp}/texlinks.$$
++ tmpdir=`mktemp -d ${TMP-/tmp}/$progname.XXXXXX` || exit 1
+ setupTmpDir
+ cd "$tmpdir" || {
+ false # some systems need this to set nonzero $?
+@@ -261,7 +259,7 @@
+ }
+
+ sed '/^[ ]*#/d; /^[ ]*$/d' $cnf_file \
+- | awk '{print $1, $2}' > cnf_file_ln.$$
++ | awk '{print $1, $2}' > $tmpdir/cnf_file_ln
+
+ if test -z "$dirs"; then
+ if test $multiplatform = true; then
+@@ -279,8 +277,8 @@
+ for d in $dirs; do
+ kpseaccess -w $d \
+ || { errmsg "$d: no write permissions. Skipping..."; continue; }
+- # cnf_file_ln.$$ has lines with "format engine" pairs
+- set x `cat cnf_file_ln.$$`; shift
++ # $tmpdir/cnf_file_ln has lines with "format engine" pairs
++ set x `cat $tmpdir/cnf_file_ln`; shift
+ while test $# != 0; do
+ fmt=$1; engine=$2; shift; shift
+
+--- tetex-src-3.0/texk/tetex/updmap.badscript 2005-02-05 06:34:26.000000000 +0900
++++ tetex-src-3.0/texk/tetex/updmap 2005-02-07 15:31:32.585140338 +0900
+@@ -761,7 +761,6 @@
+
+ trap 'cleanup' 1 2 3 7 13 15
+ needsCleanup=true
+- mkdir "$tmpdir" || abort "could not create directory \`$tmpdir'"
+ }
+
+ ###############################################################################
+@@ -1282,7 +1281,8 @@
+ dvipsoutputdir=; pdftexoutputdir=; dvipdfmoutputdir=
+ : ${TEXMFMAIN=`kpsewhich -var-value=TEXMFMAIN`}
+
+- tmpdir=${TMP-/tmp}/$progname.$$
++ tmpdir=`mktemp -d ${TMP-/tmp}/$progname.XXXXXX` || \
++ abort "could not create directory"
+ tmp1=$tmpdir/a
+ tmp2=$tmpdir/b
+ tmp3=$tmpdir/c
+--- tetex-src-3.0/texk/kpathsea/mktexlsr.badscript 2005-01-22 04:13:57.000000000 +0900
++++ tetex-src-3.0/texk/kpathsea/mktexlsr 2005-02-07 15:31:32.586140156 +0900
+@@ -119,9 +119,8 @@
+ # Skip if we cannot write the file:
+ kpseaccess -w "$db_file" || { echo "$progname: $db_file: no write permission. Skipping..." >&2; continue; }
+
+- db_dir_tmp="$db_dir/lsR$$.tmp"
+- (umask 077 && mkdir "$db_dir_tmp" ) \
+- || { echo "$progname: could not create directory '$db_dir_tmp'. Skipping..." >&2; continue; }
++ db_dir_tmp=`mktemp -d "$db_dir/lsR.XXXXXX"` \
++ || { echo "$progname: could not create secure temporary directory. Skipping..." >&2; continue; }
+ db_file_tmp="$db_dir_tmp/lsR$$.tmp"
+ rm -f "$db_file_tmp"
+
+--- tetex-src-3.0/texk/kpathsea/mktexmf.badscript 2005-01-26 02:39:21.000000000 +0900
++++ tetex-src-3.0/texk/kpathsea/mktexmf 2005-02-07 15:31:32.587139974 +0900
+@@ -87,50 +87,52 @@
+ exit 0
+ fi
+
++tmpfile=`mktemp mf.XXXXXX`
++
+ case "$name" in
+ ec*|tc*)
+- cat > "mf$$.tmp" <<END
++ cat > "$tmpfile" <<END
+ if unknown exbase: input exbase fi;
+ gensize:=$realsize;
+ generate $rootname;
+ END
+ ;;
+ dc*)
+- cat > "mf$$.tmp" <<END
++ cat > "$tmpfile" <<END
+ if unknown dxbase: input dxbase fi;
+ gensize:=$realsize;
+ generate $rootname;
+ END
+ ;;
+ cs*|lcsss*|icscsc*|icstt*|ilcsss*)
+- cat > "mf$$.tmp" <<END
++ cat > "$tmpfile" <<END
+ input cscode
+ use_driver;
+ END
+ ;;
+ wn[bcdfirstuv]*|rx[bcdfiorstuvx][bcfhilmostx]*|l[abcdhl][bcdfiorstuvx]*)
+- cat > "mf$$.tmp" <<END
++ cat > "$tmpfile" <<END
+ input fikparm;
+ END
+ ;;
+ g[lmorst][ijmtwx][cilnoru]*)
+ # A small superset of the names of the cbgreek fonts.
+- cat > "mf$$.tmp" <<END
++ cat > "$tmpfile" <<END
+ gensize:=$realsize;
+ input $rootname;
+ END
+ ;;
+ *)
+- cat > "mf$$.tmp" <<END
++ cat > "$tmpfile" <<END
+ design_size := $realsize;
+ input $rootname;
+ END
+ ;;
+ esac
+
+-chmod `kpsestat -xst,go-w .` "mf$$.tmp"
++chmod `kpsestat -xst,go-w .` "$tmpfile"
+ rm -f "$mfname"
+-mv "mf$$.tmp" "$mfname"
++mv "$tmpfile" "$mfname"
+
+ echo "$destdir/$mfname" >$STDOUT
+ echo "$progname: $destdir/$mfname: successfully generated." >&2
+--- tetex-src-3.0/texk/dviljk/dvihp.badscript 2002-07-08 02:49:09.000000000 +0900
++++ tetex-src-3.0/texk/dviljk/dvihp 2005-02-07 15:31:32.588139792 +0900
+@@ -7,9 +7,7 @@
+ : ${SPOOL=lpr} # used to print an LJ file
+ : ${TMP=/tmp} # for the dvicopy output
+
+-TMPDIR="${TMP}"/dvihp$$
+-(umask 077; mkdir "$TMPDIR") \
+- || { echo "cannot create directory \`$TMPDIR'."; exit 1; }
++TMPDIR=`mktemp -d ${TMPDIR}/dvihp.XXXXXX` || { echo "cannot create secure temporary directory."; exit 1; }
+
+ trap '
+ cd "${TMP}"
+--- tetex-src-3.0/texk/dvipdfm/dvipdft.badscript 2004-11-19 06:26:19.000000000 +0900
++++ tetex-src-3.0/texk/dvipdfm/dvipdft 2005-02-07 15:31:32.589139610 +0900
+@@ -31,7 +31,7 @@
+ $progname --help
+ $progname --version"
+
+-tmpdir=${TMP-/tmp}/$progname.$$
++tmpdir=`mktemp -d ${TMP-/tmp}/$progname.XXXXXX`
+
+ quoteit()
+ {
+--- tetex-src-3.0/texk/xdvik/xdvizilla.badscript 2004-02-25 08:08:56.000000000 +0900
++++ tetex-src-3.0/texk/xdvik/xdvizilla 2005-02-07 15:31:32.590139429 +0900
+@@ -61,7 +61,7 @@
+ trap 'do_cleanup' 1 2 3 7 13 15
+
+ ### create a temporary directory only read/writable by user
+-TMP_DIR=${TMP-/tmp}/$progname.$$
++TMP_DIR=`mktmp -d ${TMP-/tmp}/$progname.XXXXXX`
+ (umask 077; mkdir "$TMP_DIR") || do_abort "Could not create directory \`$TMP_DIR'"
+
+ if [ $# -gt 1 -a "x$1" = "x-no-rm" ]; then
diff --git a/source/t/tetex/tetex.tmp.cleanup.diff b/source/t/tetex/tetex.tmp.cleanup.diff
new file mode 100644
index 00000000..e2fb56ea
--- /dev/null
+++ b/source/t/tetex/tetex.tmp.cleanup.diff
@@ -0,0 +1,51 @@
+--- tetex-src-3.0/texk/tetex/texconfig.tmpcleanup 2005-11-04 11:19:47.000000000 +0100
++++ tetex-src-3.0/texk/tetex/texconfig 2005-11-04 14:22:18.000000000 +0100
+@@ -36,7 +36,8 @@
+ TEXSOURCES TFMFONTS TRFONTS TTFONTS VFFONTS WEB2C WEBINPUTS
+ "
+ tmpdir=`mktemp -d "${TMP-/tmp}/$progname.XXXXXX"` || exit 1
+-needsCleanup=false
++trap -- "cleanup;" EXIT 1 2 3 7 13 15
++needsCleanup=true
+ lastUpdatedFile=
+
+ ###############################################################################
+--- tetex-src-3.0/texk/tetex/updmap.tmpcleanup 2005-11-04 11:19:47.000000000 +0100
++++ tetex-src-3.0/texk/tetex/updmap 2005-11-04 14:22:18.000000000 +0100
+@@ -1274,7 +1274,7 @@
+ texhashEnabled=true
+ mkmapEnabled=true
+ verbose=true
+- needsCleanup=false
++ needsCleanup=true
+
+ cnfFileShort=updmap.cfg
+ cnfFile=
+@@ -1282,7 +1282,8 @@
+ : ${TEXMFMAIN=`kpsewhich -var-value=TEXMFMAIN`}
+
+ tmpdir=`mktemp -d ${TMP-/tmp}/$progname.XXXXXX` || \
+- abort "could not create directory"
++ abort "could not create temporary directory"
++ trap -- "cleanup;" EXIT 1 2 3 7 13 15
+ tmp1=$tmpdir/a
+ tmp2=$tmpdir/b
+ tmp3=$tmpdir/c
+--- tetex-src-3.0/texk/tetex/fmtutil.tmpcleanup 2005-11-04 11:19:47.000000000 +0100
++++ tetex-src-3.0/texk/tetex/fmtutil 2005-11-04 14:22:18.000000000 +0100
+@@ -351,11 +351,13 @@
+ destdir= # global variable: where do we put the format files?
+ cnf_file= # global variable: full name of the config file
+ cmd= # desired action from command line
+- needsCleanup=false
++ needsCleanup=true
+ need_find_hyphenfile=false
+ cfgparam=
+ cfgmaint=
+- tmpdir=`mktemp -d ${TMP-/tmp}/$progname.XXXXXX`
++ tmpdir=`mktemp -d ${TMP-/tmp}/$progname.XXXXXX` || \
++ abort "could not create temporary directory"
++ trap -- "cleanup;" EXIT 1 2 3 7 13 15
+ verboseFlag=true
+
+ # mktexfmtMode: if called as mktexfmt, set to true. Will echo the generated
diff --git a/source/t/tetex/tetex.var.fonts.diff b/source/t/tetex/tetex.var.fonts.diff
new file mode 100644
index 00000000..9535ac6f
--- /dev/null
+++ b/source/t/tetex/tetex.var.fonts.diff
@@ -0,0 +1,11 @@
+--- teTeX-1.0/texk/make/paths.mk.varconfig Sun Jan 10 16:42:53 1999
++++ teTeX-1.0/texk/make/paths.mk Wed Aug 25 19:18:13 1999
+@@ -46,7 +46,7 @@
+ texmf = @texmfmain@
+
+ # The directory used by varfonts.
+-vartexfonts = /var/tmp/texfonts
++vartexfonts = /var/lib/texmf
+
+ # Regular input files.
+ texinputdir = $(texmf)/tex