mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-08 20:28:13 +01:00
cf9c4254ca
Signed-off-by: B. Watson <yalhcru@gmail.com>
183 lines
5.7 KiB
Bash
183 lines
5.7 KiB
Bash
#!/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}
|