diff options
Diffstat (limited to 'source/t/texlive/texlive.SlackBuild')
-rwxr-xr-x | source/t/texlive/texlive.SlackBuild | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/source/t/texlive/texlive.SlackBuild b/source/t/texlive/texlive.SlackBuild new file mode 100755 index 00000000..f41e9fa6 --- /dev/null +++ b/source/t/texlive/texlive.SlackBuild @@ -0,0 +1,252 @@ +#!/bin/bash + +# TeXLive build script for Slackware + +# Copyright 2009, 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2009-2014 Robby Workman, Northport, AL, USA +# Copyright 2016-2017 Johannes Schoepfer, Germany +# 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. + +# URL: ftp://tug.org/historic/systems/texlive/ +# Testrelease: ftp://tug.org/texlive/Images/test/ + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=texlive +SOURCEVERSION=${SOURCEVERSION:-20170520} +VERSION=${VERSION:-2017.171108} +BUILD=${BUILD:-6} + +TMP=${TMP:-/tmp} +PKG=$TMP/package-texlive + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +# NOTE: Using the system version of poppler will require texlive to be +# recompiled with pretty much every poppler update, as they almost always +# bump the shared library version. But sometimes you do what you have +# to do... +SYSTEMPOPPLER=${SYSTEMPOPPLER:-YES} +if [ "$SYSTEMPOPPLER" = "NO" ]; then + POPPLER="--without-system-poppler --without-system-xpdf" +else + POPPLER="--with-system-poppler --with-system-xpdf" +fi + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf texlive-$SOURCEVERSION-source +tar xvf $CWD/texlive-${SOURCEVERSION}-source.tar.xz || exit 1 +cd texlive-$SOURCEVERSION-source || exit 1 +chown -R root:root . +chmod -R u+w,go-w,a+rX-st . + +export LANG=C +export PATH="$PKG/usr/bin:$PATH" +export LD_LIBRARY_PATH="$PKG/usr/lib${LIBDIRSUFFIX}:$LD_LIBRARY_PATH" + +# set TEXMFROOT and TEXMFLOCAL +sed -i \ + -e 's|^TEXMFROOT.*|TEXMFROOT = $SELFAUTODIR/share|' \ + -e 's|^TEXMFLOCAL.*|TEXMFLOCAL = $TEXMFROOT/texmf-local|' \ + texk/kpathsea/texmf.cnf + +# prevent compiling Xdvi with libXp +sed -i 's|-lXp ||' texk/xdvik/configure + +# Thanks to the lfs-folks ... +patch -Np1 -i $CWD/patches/texlive-20170524-source-gcc7-1.patch || exit 1 +patch -Np1 -i $CWD/patches/texlive-20170524-source-upstream_fixes-2.patch || exit 1 + +# Thanks to archlinux for the poppler-0.59 API fixup patch: +if [ ! "$SYSTEMPOPPLER" = "NO" ]; then + patch -Np1 -i $CWD/patches/texlive-poppler-0.59.patch || exit 1 +fi + +# --with-system-harfbuzz requires graphite2 (and harfbuzz linked to it) +mkdir build +cd build + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS -fpermissive" \ + ../configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --with-banner-add=' on Slackware' \ + --disable-native-texlive-build \ + --enable-largefile \ + --enable-shared \ + --disable-static \ + --disable-missing \ + --disable-multiplatform \ + --disable-debug \ + --with-x \ + --enable-xindy \ + --disable-xindy-docs \ + --disable-xindy-rules \ + --with-clisp-runtime=system \ + --enable-gc=system \ + --with-system-zlib \ + --with-system-libpng \ + --with-system-t1lib \ + --with-system-gd \ + --with-system-freetype2 \ + --with-system-libgs \ + --with-system-icu \ + --with-system-pixman \ + --with-system-cairo \ + --with-system-gmp \ + --with-system-mpfr \ + --with-system-fontconfig \ + --with-system-ncurses \ + --without-system-harfbuzz \ + --disable-aleph \ + --disable-dump-share \ + $POPPLER \ + --build=$ARCH-slackware-linux || exit 1 + + make $NUMJOBS || make || exit 1 + # make check || exit 1 + make install-strip DESTDIR=$PKG || exit 1 + + # Don't ship .la files: + rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la + + # Remove all files which are covered by tlnet + rm -rf $PKG/usr/share $PKG/usr/man $PKG/usr/info + + # install the tlnet stuff + mkdir -p $PKG/usr/share + tar xvf $CWD/texlive-base-$VERSION.tar.xz -C $PKG/usr/share || exit 1 + chown -R root:root $PKG + chmod -R u+w,go-w,a+rX-st $PKG + + # Create symlinks + make texlinks DESTDIR=$PKG || exit 1 + +cd .. + +# set some paths +sed -i \ + -e 's|^TEXMFROOT.*|TEXMFROOT = $SELFAUTODIR/share|' \ + -e 's|^TEXMFLOCAL.*|TEXMFLOCAL = $TEXMFROOT/texmf-local|' \ + -e 's|^OSFONTDIR.*|OSFONTDIR = ~/.fonts:/usr/share/fonts|' \ + -e 's|texlive20[0-9][0-9]|texlive|g' \ + $PKG/usr/share/texmf-dist/web2c/texmf.cnf + +# disable obsolete aleph/lamed/cslatex/pdfcslatex +sed -i \ + -e 's|^aleph|#! aleph|' \ + -e 's|^lamed|#! lamed|' \ + -e 's|^cslatex|#! cslatex|' \ + -e 's|^pdfcslatex|#! pdfcslatex|' \ + $PKG/usr/share/texmf-dist/web2c/fmtutil.cnf + +# make ConTeXt work, and remove unused settings +sed -i \ + -e 's|selfautoparent:|/usr/share/|g' \ + -e 's|\(TEXMFLOCAL[ ]*=[ ]*\)[^,]*|\1"/usr/share/texmf-local"|' \ + -e 's|texlive20[0-9][0-9]|texlive|g' \ + -e '/selfautodir/d' \ + -e '/texmflocal/d' \ + $PKG/usr/share/texmf-dist/web2c/texmfcnf.lua + +# provide texlive fonts optionally for other system apps +mkdir -p $PKG/etc/fonts/conf.avail +cat > $PKG/etc/fonts/conf.avail/09-texlive.conf << EOF +<?xml version='1.0'?> +<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> +<fontconfig> + <dir>/usr/share/texmf-dist/fonts/opentype</dir> + <dir>/usr/share/texmf-dist/fonts/truetype</dir> +</fontconfig> +EOF + +# Install the docs while we're still here +mkdir -p $PKG/usr/doc/texlive-$VERSION +cp -a ChangeLog README* $PKG/usr/doc/texlive-$VERSION +# Install index of provided tex packages to the docs +mv $PKG/usr/share/texmf-dist/packages.base.gz $PKG/usr/doc/texlive-$VERSION + +# Put a symlink to /usr/share/texmf-dist/doc in our Slackware docdir +ln -s ../../share/texmf-dist/doc $PKG/usr/doc/texlive-$VERSION/doc + +# We won't make tlmgr easily available; it's still there, but +# we'll make it harder to void the warranty :-) +rm -f $PKG/usr/bin/tlmgr +cat $CWD/README.tlpkg > $PKG/usr/doc/texlive-$VERSION/README.tlpkg + +# Create some directories to make it clear that they're owned by this package +mkdir -p $PKG/usr/share/{texmf-config,texmf-var,texmf-local} + +# Add some perl modules, at least one of which is required by updmap +mkdir -p $PKG/usr/share/perl5 +mv texk/tests/TeXLive $PKG/usr/share/perl5/ + +# Move manual pages to the correct place +mkdir $PKG/usr/man +mv $PKG/usr/share/texmf-dist/doc/man/man1 $PKG/usr/man +mv $PKG/usr/share/texmf-dist/doc/man/man5 $PKG/usr/man +rmdir $PKG/usr/share/texmf-dist/doc/man +mv $PKG/usr/share/texmf-dist/doc/info $PKG/usr + +# Handle the man pages +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $(find $PKG/usr/man -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done + +# Handle the GNU info pages +rm -f $PKG/usr/info/dir +gzip -9 $PKG/usr/info/* + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -p -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz |