slackware-current/source/t/texlive/texlive.SlackBuild
Patrick J Volkerding 7aa0551f5b Fri Mar 29 18:24:36 UTC 2019
a/aaa_elflibs-15.0-x86_64-6.txz:  Rebuilt.
  Upgraded: libelf-0.176.so, libpcre.so.1.2.11, libglib-2.0.so.0.6000.0,
  libgmodule-2.0.so.0.6000.0, libgobject-2.0.so.0.6000.0,
  libgthread-2.0.so.0.6000.0, libtdb.so.1.4.0.
  Temporarily added: libicudata.so.63.1, libicui18n.so.63.1, libicuio.so.63.1,
  libicutest.so.63.1, libicutu.so.63.1, libicuuc.so.63.1.
a/xfsprogs-4.20.0-x86_64-2.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
ap/sqlite-3.27.2-x86_64-2.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
kde/calligra-2.9.11-x86_64-29.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
kde/kdepimlibs-4.14.10-x86_64-7.txz:  Rebuilt.
  Recompiled to pull in new gpgme++ header files.
l/boost-1.69.0-x86_64-2.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
l/ffmpeg-3.4.6-x86_64-1.txz:  Upgraded.
l/giflib-5.1.9-x86_64-1.txz:  Upgraded.
l/harfbuzz-2.3.1-x86_64-2.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
l/icu4c-64.1-x86_64-1.txz:  Upgraded.
  Shared library .so-version bump.
l/libical-3.0.4-x86_64-2.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
l/libvisio-0.1.6-x86_64-6.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
l/qt-4.8.7-x86_64-12.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
l/raptor2-2.0.15-x86_64-7.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
l/v4l-utils-1.16.5-x86_64-1.txz:  Upgraded.
n/dovecot-2.3.5.1-x86_64-1.txz:  Upgraded.
  Missing input buffer size validation leads into arbitrary buffer overflow
  when reading fts or pop3 uidl header from Dovecot index. Exploiting this
  requires direct write access to the index files.
  For more information, see:
    https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-7524
  (* Security fix *)
  Compiled against icu4c-64.1.
n/gpgme-1.13.0-x86_64-1.txz:  Upgraded.
n/php-7.2.16-x86_64-2.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
n/postfix-3.4.4-x86_64-2.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
n/tin-2.4.3-x86_64-2.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
n/whois-5.4.2-x86_64-1.txz:  Upgraded.
t/texlive-2018.180822-x86_64-5.txz:  Rebuilt.
  Recompiled against icu4c-64.1.
x/libinput-1.13.0-x86_64-1.txz:  Upgraded.
x/mesa-19.0.1-x86_64-1.txz:  Upgraded.
x/vulkan-sdk-1.1.101.0-x86_64-1.txz:  Upgraded.
extra/pure-alsa-system/ffmpeg-3.4.6-x86_64-1_alsa.txz:  Upgraded.
2019-03-30 08:59:44 +01:00

262 lines
8.3 KiB
Bash
Executable file

#!/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/
# Upstream stable fixes: svn://tug.org/texlive/branches/branch2018/Build/source
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=texlive
SOURCEVERSION=${SOURCEVERSION:-20180414}
VERSION=${VERSION:-2018.180822}
BUILD=${BUILD:-5}
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
# 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
# Upstream stable fixes
patch -Np0 -i $CWD/patches/20180625.diff || exit 1
# Add missing synctex header
patch -Np0 -i $CWD/patches/synctex-missing-header.patch || exit 1
# prevent compiling Xdvi with libXp
sed -i 's|-lXp ||' texk/xdvik/configure
# The 2018 version of texlive ships with support for poppler-0.57.0 and older,
# but it includes alternative newpoppler files which enable building with
# poppler-0.62.0 or newer.
if [ ! "$SYSTEMPOPPLER" = "NO" ]; then
mv -v texk/web2c/pdftexdir/pdftoepdf{-newpoppler,}.cc || exit 1
mv -v texk/web2c/pdftexdir/pdftosrc{-newpoppler,}.cc || exit 1
fi
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 \
--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}
# 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