summaryrefslogtreecommitdiff
path: root/office/mupdf/mupdf.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'office/mupdf/mupdf.SlackBuild')
-rw-r--r--office/mupdf/mupdf.SlackBuild172
1 files changed, 121 insertions, 51 deletions
diff --git a/office/mupdf/mupdf.SlackBuild b/office/mupdf/mupdf.SlackBuild
index cbf900b1f1..8253dde59c 100644
--- a/office/mupdf/mupdf.SlackBuild
+++ b/office/mupdf/mupdf.SlackBuild
@@ -2,22 +2,29 @@
# Slackware build script for mupdf
-# Written by Hubert Hesse (slackbuilds@hubertscorner.de)
-
-# Modified 20130618 by B. Watson (yalhcru@gmail.com):
-# - Took over maintenance
-# - Updated for mupdf 1.2
-# - Build library shared, not static
-# - Build with system zlib, libjpeg, openjpeg, jbig2dec, libtiff, libpng,
-# liblcms2 instead of bundled sources (which made the lib + exes *huge*).
-# Also, the included libjpeg is too new (it broke zathura-pdf-mupdf).
-# - Include mutool in package (instead of just its man page)
-# - Add CHANGES CONTRIBUTORS doc/* to /usr/doc
-# - Use DESTDIR libdir mandir instead of patching makefile
-# - Updated README & slack-desc to mention XPS and CBZ
-# - Fix the man pages slightly
-
-# Modified 20140224 by B. Watson (yalhcru@gmail.com):
+# Originally written by Hubert Hesse (slackbuilds@hubertscorner.de).
+# Heavily modified by B. Watson (yalhcru@gmail.com).
+
+# 20140822 bkw:
+# - Updated for mupdf-1.5.
+# - Hosting the source on my server, so I know it won't get moved
+# to an archive/ dir when a new release comes out.
+# - Script also tested with 1.4:
+# DOWNLOAD="http://urchlay.naptime.net/~urchlay/src/mupdf-1.4-source.tar.gz"
+# MD5SUM="0f6840a7020db0c833b0c090ca1864ec"
+# - Add .desktop, .pc, icon
+# - Got rid of CVE-2014-2013 patch (integrated by upstream in 1.4).
+# - Remove man page patch (not needed for 1.4 and up).
+# - Replace openjpeg dep with newly-submitted openjpeg2.
+# - Small patch to allow building with openjpeg 2.1.0 (rather than 2.0.0).
+# - For now, revert to static libmupdf. Upstream doesn't support
+# shared libs, they hate it when distro packages create them,
+# and rolling my own shared libs is more PITA than it's worth.
+# - Upstream renamed the binary to mupdf-x11, add symlinks so scripts
+# or .desktop files can still run it as mupdf, and "man mupdf" will
+# still work.
+
+# 20140224 bkw:
# - backported security fix for CVE-2014-2013. I will be upgrading this
# build to mupdf-1.3, but it'll take more work than I currently have
# time for:
@@ -31,11 +38,24 @@
# The security fix is needed now, it's a tiny patch, and shouldn't have
# to wait on all that other stuff.
-# 20140318 bkw: fix permissions on headers and man pages
+# 20140318 bkw: fix permissions on headers and man pages.
+
+# 20130618 bkw:
+# - Took over maintenance.
+# - Updated for mupdf 1.2.
+# - Build library shared, not static.
+# - Build with system zlib, libjpeg, openjpeg, jbig2dec, libtiff, libpng,
+# liblcms2 instead of bundled sources (which made the lib + exes *huge*).
+# Also, the included libjpeg is too new (it broke zathura-pdf-mupdf).
+# - Include mutool in package (instead of just its man page).
+# - Add CHANGES CONTRIBUTORS doc/* to /usr/doc.
+# - Use DESTDIR libdir mandir instead of patching makefile.
+# - Updated README & slack-desc to mention XPS and CBZ.
+# - Fix the man pages slightly.
PRGNAM=mupdf
-VERSION=${VERSION:-1.2}
-BUILD=${BUILD:-3}
+VERSION=${VERSION:-1.5}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
@@ -70,36 +90,45 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION-source
-unzip $CWD/$PRGNAM-$VERSION-source.zip
+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.a 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}"
+[ "$MUJS" = "yes" ] && mv thirdparty/mujs .keep
+rm -rf thirdparty/*
+[ "$MUJS" = "yes" ] && mv .keep thirdparty/mujs
+
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 {} \;
-
-# We want a shared library, not static.
-# This patch based on http://bugs.ghostscript.com/show_bug.cgi?id=693009
-# with the following changes:
-# - actually applies to mupdf-1.2
-# - links the applications dynamically
-# - doesn't even build/install the static lib by default
-# - adds mutool to list of stuff installed to $prefix/bin
-patch -p1 < $CWD/shared_libfitz.diff
-
-# 'see also' mentions nonexistent stuff (mupdfclean, mupdfshow), also
-# the -b option to mupdf was missing.
-patch -p1 < $CWD/man_page.diff
-
-# Build against system libs instead of shipped ones
-sed -i 's,libopenjpeg,libopenjpeg1,' Makerules
-rm -rf thirdparty
-
-# patch from upstream git, fix security vulnerability CVE-2014-2013.
-# from here: http://git.ghostscript.com/?p=user/zeniko/mupdf.git;h=60dabde18d
-# Patch is for mupdf-1.3, I've backported it to 1.2 for now.
-patch -p1 < $CWD/xps_parse_color_overflow_fix.diff
+ \( -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 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# opj_stream_set_user_data() now takes 3 args in openjpeg 2.1.
+# Patch applies to both 1.4 and 1.5.
+patch -p1 < $CWD/openjpeg-2.1-api-change.diff
+
+# Makerules incorrectly tries to build with openjpeg-1.x system lib, while
+# the bundled version is 2.0, and the code uses the 2.0 API.
+# Actually this was fixed in 1.5, but I leave this here in case someone
+# wants to use this script to build mupdf-1.4 for some reason.
+sed -i 's,libopenjpeg1,libopenjp2,g' Makerules
+
+# 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
make build=release prefix=/usr XCFLAGS="$SLKCFLAGS"
make \
@@ -110,20 +139,61 @@ make \
DESTDIR=$PKG \
install
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+if [ "$MUJS" = "yes" ]; then
+ # If JS support included, applications will need to link with this:
+ install -m0664 build/release/libmujs.a $PKG/usr/lib$LIBDIRSUFFIX/
+ install -m0664 thirdparty/mujs/mujs.h $PKG/usr/include/
+else
+ # Don't need mujstest if no javascript support.
+ rm -f $PKG/usr/bin/mujstest
+fi
+
+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
-chmod -x $PKG/usr/include/*.h $PKG/usr/man/man?/*
+# 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
+
+# Installed permissions are atrocious (everything 755).
+find $PKG -type f | xargs chmod 644
+chmod 755 $PKG/usr/bin/*
+
+# .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"
+[ "$MUJS" = "yes" ] && PCLIBS="$PCLIBS -lmujs"
+
+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
+
+# slack-desc will conveniently say whether javascript is built in.
+WITH=without
+[ "$MUJS" = "yes" ] && WITH=with
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a README COPYING CHANGES CONTRIBUTORS doc/* $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README COPYING CHANGES CONTRIBUTORS docs/*.* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
+sed "s,@WITH@,$WITH," < $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}