#!/bin/sh # Slackware build script for mupdf # Originally written by Hubert Hesse (email removed). # Heavily modified by B. Watson (yalhcru@gmail.com). # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # 20180623 bkw: BUILD=2, add patch for dynamic linking. Thanks # to Thomas Morper for pointing me in the right direction. # 20180615 bkw: update for 1.13.0, move old change comments to ChangeLog.old # 20180101 bkw: update for 1.12.0. # 20170711 bkw: update for 1.11. # 20170621 bkw: fix build with -current's newer openjpeg, BUILD=2. # 20170122 bkw: update for 1.10a. PRGNAM=mupdf VERSION=${VERSION:-1.13.0} BUILD=${BUILD:-2} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" fi set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION-source tar xvf $CWD/$PRGNAM-$VERSION-source.tar.gz cd $PRGNAM-$VERSION-source # don't find/chown/chmod until after the thirdparty junk is removed. # Build against system libs instead of bundled ones. If we didn't do this, # libmupdf would be useless for building anything else. # Everything removed from thirdparty/ has to be installed systemwide, and must # either be a Slackware core pkg, or mentioned in REQUIRES= in the .info # file... except mujs, which is mupdf's javascript support lib. If missing, # we end up with a mupdf with no JS support, which is probably a good idea # for the default build. If you want javascript, MUJS=yes in the env. MUJS="${MUJS:-no}" if [ "$MUJS" = "yes" ]; then mv thirdparty/mujs .keep rm -rf thirdparty/* mv .keep thirdparty/mujs WITH=with else rm -rf thirdparty/* sed -i 's,murun\.o,,' Makefile sed -i 's,pdf_drop_js.*,;,' source/pdf/pdf-xref.c sed -i '/murun_main/d' source/tools/mutool.c WITH=without fi chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -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 {} \+ # ref https://bugs.ghostscript.com/show_bug.cgi?id=697175 sed -i '/#define *OPJ_STATIC/d' source/fitz/load-jpx.c # Hard-code the version number so it'll stop trying to use git to retrieve # it and spewing harmless but scary 'fatal: Not a git repository' errors. sed -i "/^VERSION/s,=.*,= $VERSION," Makefile # 20180623 bkw: Finally, dynamic linking again. Patch is based on # http://www.linuxfromscratch.org/patches/blfs/svn/mupdf-1.13.0-shared_libs-1.patch # but I added versioned sonames. See README_shared.txt for the gory details. STATIC=${STATIC:-no} if [ "$STATIC" != "yes" ]; then patch -p1 < $CWD/shared_libs.diff LIBTYPE=shared else LIBTYPE=static fi make verbose=yes \ XCFLAGS="$SLKCFLAGS -DJBIG_NO_MEMENTO" \ HAVE_MUJS="$MUJS" \ build=release \ prefix=/usr \ libdir=/usr/lib$LIBDIRSUFFIX \ mandir=/usr/man \ docdir=/usr/doc/$PRGNAM-$VERSION \ DESTDIR=$PKG \ all extra-apps install # 1.12.0 used to install this stuff with 'make install', 1.13.0 doesn't: for i in mjsgen muraster mupdf-x11-curl; do [ -e build/release/$i ] && install -s -m0755 build/release/$i $PKG/usr/bin done strip $PKG/usr/bin/* 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 # Compatibility symlinks. Older versions, the binary is just "mupdf". # Separate -curl binary exists in 1.5 but not 1.4. ln -s $PRGNAM-x11 $PKG/usr/bin/$PRGNAM ln -s $PRGNAM.1.gz $PKG/usr/man/man1/$PRGNAM-x11.1.gz [ -e $PKG/usr/bin/$PRGNAM-x11-curl ] && \ ln -s $PRGNAM.1.gz $PKG/usr/man/man1/$PRGNAM-x11-curl.1.gz # mujstest is useless if we don't have JS support. Also libmupdfthird.a # ends up 8 bytes long & has no object code in it. [ "$MUJS" = "yes" ] || \ rm -f $PKG/usr/bin/mujstest \ $PKG/usr/lib$LIBDIRSUFFIX/libmupdfthird.a # Installed permissions are atrocious (everything 755). find $PKG -type f | xargs chmod 644 chmod 755 $PKG/usr/bin/* if [ "$STATIC" != "yes" ]; then chmod 755 $PKG/usr/lib$LIBDIRSUFFIX/lib*.so.*.* fi # .desktop taken from debian and modified: # - make it validate. # - add mime types for cbz and xps. mkdir -p $PKG/usr/share/applications cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop # Icon converted from platform/x11/mupdf.ico, with icotool. mkdir -p $PKG/usr/share/pixmaps cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png # .pc file taken from debian and parameterized. PCLIBS="-l$PRGNAM -lfreetype -lharfbuzz -ljbig2dec -ljpeg -lcrypto -lopenjp2 -lz -lm" [ "$MUJS" = "yes" ] && PCLIBS="$PCLIBS -lmupdfthird" mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/pkgconfig/ sed -e "s,@LIB@,lib$LIBDIRSUFFIX,g" \ -e "s,@VERSION@,$VERSION,g" \ -e "s,@PCLIBS@,$PCLIBS,g" \ $CWD/$PRGNAM.pc > $PKG/usr/lib$LIBDIRSUFFIX/pkgconfig/$PRGNAM.pc # 'make install' already installed most of the docs. cp -a CONTRIBUTORS $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild # slack-desc will conveniently say whether javascript is built in, # and whether libs are shared or static. mkdir -p $PKG/install sed -e "s,@WITH@,$WITH," \ -e "s,@LIBTYPE@,$LIBTYPE," \ $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}