slackware-current/source/t/texlive/texlive.SlackBuild

260 lines
8.2 KiB
Text
Raw Normal View History

#!/bin/bash
# TeXLive build script for Slackware
# Copyright 2009, 2017 - 2019 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/
# Upstream stable fixes: svn://tug.org/texlive/branches/branch2019/Build/source
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=texlive
SOURCEVERSION=${SOURCEVERSION:-20190410}
VERSION=${VERSION:-2019.190626}
2019-10-07 06:41:29 +02:00
BUILD=${BUILD:-3}
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
Fri Sep 21 18:51:07 UTC 2018 a/eudev-3.2.6-x86_64-1.txz: Upgraded. a/glibc-solibs-2.28-x86_64-2.txz: Upgraded. a/grub-2.02-x86_64-3.txz: Rebuilt. Patched to fix compatibility with recent xfsprogs. Thanks to Markus Wiesner. a/kernel-generic-4.14.71-x86_64-1.txz: Upgraded. a/kernel-huge-4.14.71-x86_64-1.txz: Upgraded. a/kernel-modules-4.14.71-x86_64-1.txz: Upgraded. ap/opus-tools-0.2-x86_64-1.txz: Upgraded. ap/sqlite-3.25.1-x86_64-1.txz: Upgraded. d/icecream-20180905_cdc6ff8-x86_64-1.txz: Upgraded. d/kernel-headers-4.14.71-x86-1.txz: Upgraded. d/llvm-7.0.0-x86_64-1.txz: Upgraded. Shared library .so-version bump. k/kernel-source-4.14.71-noarch-1.txz: Upgraded. l/ffmpeg-3.4.4-x86_64-2.txz: Rebuilt. Don't try to link with Samba since the latest version is not compatible. l/glibc-2.28-x86_64-2.txz: Upgraded. All packages have been patched where needed for glibc-2.28 and compile tested here. Thanks to nobodino for the help. l/glibc-i18n-2.28-x86_64-2.txz: Upgraded. l/glibc-profile-2.28-x86_64-2.txz: Upgraded. l/gst-plugins-base-1.14.3-x86_64-1.txz: Upgraded. l/gst-plugins-good-1.14.3-x86_64-1.txz: Upgraded. l/gst-plugins-libav-1.14.3-x86_64-1.txz: Upgraded. l/gstreamer-1.14.3-x86_64-1.txz: Upgraded. l/imagemagick-6.9.10_11-x86_64-1.txz: Upgraded. l/libopusenc-0.2-x86_64-1.txz: Added. l/librsvg-2.44.3-x86_64-1.txz: Upgraded. l/opus-1.3_rc2-x86_64-1.txz: Upgraded. l/opusfile-0.11-x86_64-1.txz: Upgraded. l/soprano-2.9.4-x86_64-3.txz: Rebuilt. Recompiled to drop virtuoso dependency. l/virtuoso-ose-6.1.8-x86_64-9.txz: Removed. Even KDE4 has migrated away from actually using this for anything. The last thing in Slackware that was dependent on it was Soprano, which has been recompiled to no longer use it. n/postfix-3.3.1-x86_64-2.txz: Rebuilt. Recompiled so that it quits whining about OpenSSL. Thanks to shastah. x/mesa-18.2.1-x86_64-1.txz: Upgraded. Compiled against llvm-7.0.0. x/xf86-video-vmware-13.3.0-x86_64-2.txz: Rebuilt. Recompiled against llvm-7.0.0. x/xterm-336-x86_64-1.txz: Upgraded. extra/pure-alsa-system/ffmpeg-3.4.4-x86_64-2_alsa.txz: Rebuilt. Don't try to link with Samba since the latest version is not compatible. extra/pure-alsa-system/gst-plugins-good-1.14.3-x86_64-1_alsa.txz: Upgraded. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
2018-09-21 20:51:07 +02:00
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
# 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:-NO}
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
# Upstream stable fixes
patch -Np1 -i $CWD/patches/texlive-20190410-source-upstream_fixes-1.patch || exit 1
# prevent compiling Xdvi with libXp
sed -i 's|-lXp ||' texk/xdvik/configure
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 \
--disable-dialog \
--disable-bibtexu \
--disable-xz \
--with-x \
--disable-dvisvgm \
--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-aleph \
--disable-dump-share \
--disable-linked-scripts \
$POPPLER \
--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
# 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
# use symlinks/scripts from tlnet
mv $PKG/usr/share/texmf-dist/linked_scripts/* $PKG/usr/bin
rmdir $PKG/usr/share/texmf-dist/linked_scripts
# 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|' \
$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 '/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}
# Use patch for tabu.sty from https://github.com/tabu-fixed/tabu to fix
# breakage when compiling doxygen:
( cd $PKG/usr/share/texmf-dist/tex/latex/tabu
cat $CWD/patches/tabu.sty.diff | patch -p1 --verbose || exit 1
) || exit 1
# 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
# 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/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -p -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz