diff options
Diffstat (limited to 'patches/source/texlive/texlive.SlackBuild')
-rwxr-xr-x | patches/source/texlive/texlive.SlackBuild | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/patches/source/texlive/texlive.SlackBuild b/patches/source/texlive/texlive.SlackBuild new file mode 100755 index 000000000..53c772768 --- /dev/null +++ b/patches/source/texlive/texlive.SlackBuild @@ -0,0 +1,216 @@ +#!/bin/bash + +# TeXLive build script for Slackware + +# Copyright 2009, 2017 - 2023 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: https://tug.org/texlive/Images/test/ +# Upstream stable fixes: svn://tug.org/texlive/branches/branch2023/Build/source + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=texlive +SOURCEVERSION=${SOURCEVERSION:-20230311} +TEXMFVERSION=${TEXMFVERSION:-230322} +VERSION=${VERSION:-2023.$TEXMFVERSION} +BUILD=${BUILD:-1_slack15.0} + +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:-" -j$(expr $(nproc) + 1) "} + +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 + +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 . + +# CVE-2023-32700: +zcat $CWD/texlive-20230313-source-security_fix-1.patch.gz | patch -p1 --verbose || exit 1 + +# Define a few new symbols since the Slackware 15.0 release: +zcat $CWD/texlive.unicode5.0.diff.gz | patch -p1 --verbose || exit 1 + +mkdir build +cd build + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + ../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 \ + --disable-dialog \ + --disable-xz \ + --disable-texdoctk \ + --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 \ + --with-system-harfbuzz \ + --disable-linked-scripts \ + --build=$ARCH-slackware-linux || exit 1 + + make $NUMJOBS || make || exit 1 + #make check || exit 1 + make install-strip DESTDIR=$PKG || exit 1 + +cd .. + +# Don't ship .la files: +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la + +TEXMFROOT=/usr/share + +# Remove all files which are covered by tlnet +rm -rf $PKG$TEXMFROOT $PKG/usr/man $PKG/usr/info + +# install the tlnet stuff +mkdir -p $PKG$TEXMFROOT +tar xvf $CWD/texlive-base-$TEXMFVERSION.tar.xz -C $PKG$TEXMFROOT || exit 1 +chown -R root:root $PKG +chmod -R u+w,go-w,a+rX-st $PKG + +# use symlinks/scripts from tlnet +mv $PKG$TEXMFROOT/texmf-dist/linked_scripts/* $PKG/usr/bin +rmdir $PKG$TEXMFROOT/texmf-dist/linked_scripts + +# set some paths +sed -i \ + -e "s|^TEXMFROOT.*|TEXMFROOT = $TEXMFROOT|" \ + -e "s|^TEXMFLOCAL.*|TEXMFLOCAL = \$TEXMFROOT/texmf-local|" \ + -e "s|^OSFONTDIR.*|OSFONTDIR = ~/.fonts:/usr/share/fonts|" \ + $PKG$TEXMFROOT/texmf-dist/web2c/texmf.cnf + +# 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>$TEXMFROOT/texmf-dist/fonts/opentype</dir> + <dir>$TEXMFROOT/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$TEXMFROOT/texmf-dist/packages.base.gz $PKG/usr/doc/texlive-$VERSION + +# Put a symlink to $TEXMFROOT/texmf-dist/doc in our Slackware docdir +ln -srf $PKG$TEXMFROOT/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$TEXMFROOT/{texmf-config,texmf-var,texmf-local} + +# Add texlive perl modules +mkdir -p $PKG/usr/share/perl5 +mv $PKG$TEXMFROOT/texmf-dist/scripts/texlive/TeXLive $PKG/usr/share/perl5/ + +# Move manual pages to the correct place +mkdir $PKG/usr/man +mv $PKG$TEXMFROOT/texmf-dist/doc/man/man1 $PKG/usr/man +mv $PKG$TEXMFROOT/texmf-dist/doc/man/man5 $PKG/usr/man +rmdir $PKG$TEXMFROOT/texmf-dist/doc/man + +# 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 +mv $PKG$TEXMFROOT/texmf-dist/doc/info $PKG/usr +rm -f $PKG/usr/info/dir +gzip -9 $PKG/usr/info/* + +mkdir -p $PKG/install +# Don't demand a global lock when running the install script: +echo "# This install script should not collide with any other script's activities," > $PKG/install/doinst.sh +echo "# so don't demand a lock by installpkg: NOLOCK" >> $PKG/install/doinst.sh +zcat $CWD/doinst.sh.gz >> $PKG/install/doinst.sh +cat $CWD/douninst.sh > $PKG/install/douninst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -p -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz |