diff options
Diffstat (limited to 'source/t/tetex')
-rwxr-xr-x | source/t/tetex/jadetex.build | 68 | ||||
-rwxr-xr-x | source/t/tetex/profile.d/tetex.csh | 4 | ||||
-rwxr-xr-x | source/t/tetex/profile.d/tetex.sh | 4 | ||||
-rw-r--r-- | source/t/tetex/slack-desc.tetex | 20 | ||||
-rw-r--r-- | source/t/tetex/slack-desc.tetex-doc | 19 | ||||
-rw-r--r-- | source/t/tetex/tetex.CVE-2005-3193.diff | 169 | ||||
-rwxr-xr-x | source/t/tetex/tetex.SlackBuild | 255 | ||||
-rw-r--r-- | source/t/tetex/tetex.amstex.fmtutil.diff | 13 | ||||
-rw-r--r-- | source/t/tetex/tetex.browsers.diff | 39 | ||||
-rw-r--r-- | source/t/tetex/tetex.dvipdfm.mkstemp.diff | 20 | ||||
-rw-r--r-- | source/t/tetex/tetex.etex.diff | 11 | ||||
-rw-r--r-- | source/t/tetex/tetex.fontcachedirinhome.diff | 11 | ||||
-rw-r--r-- | source/t/tetex/tetex.scripts.mktemp.diff | 244 | ||||
-rw-r--r-- | source/t/tetex/tetex.tmp.cleanup.diff | 51 | ||||
-rw-r--r-- | source/t/tetex/tetex.var.fonts.diff | 11 |
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 |