summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--office/zathura/README12
-rw-r--r--office/zathura/dlopen_hack.diff19
-rw-r--r--office/zathura/zathura.SlackBuild37
-rw-r--r--office/zathura/zathura.info10
4 files changed, 68 insertions, 10 deletions
diff --git a/office/zathura/README b/office/zathura/README
index b2adeee322..54666e6200 100644
--- a/office/zathura/README
+++ b/office/zathura/README
@@ -3,5 +3,13 @@ poppler rendering library and the gtk+ toolkit. The idea behind zathura
is an application that provides a minimalistic and space saving interface
as well as an easy usage that mainly focuses on keyboard interaction.
-This package includes the zathura core and the zathura-pdf-poppler plugin.
-If you need PostScript support, see the zathura-ps package.
+This build includes the zathura core and the zathura-pdf-poppler plugin.
+
+Other plugins exist to support other file types:
+
+zathura-pdf-mupdf - Alternate PDF renderer (faster, maybe more accurate)
+zathura-ps - PostScript
+zathura-cb - Comic book archives (cbz/cbr/cb7/cbt)
+zathura-djvu - DjVu
+
+When upgrading
diff --git a/office/zathura/dlopen_hack.diff b/office/zathura/dlopen_hack.diff
new file mode 100644
index 0000000000..6f4ef64c1f
--- /dev/null
+++ b/office/zathura/dlopen_hack.diff
@@ -0,0 +1,19 @@
+diff -Naur zathura-0.2.7/zathura.c zathura-0.2.7.patched/zathura.c
+--- zathura-0.2.7/zathura.c 2014-02-17 11:16:57.000000000 -0500
++++ zathura-0.2.7.patched/zathura.c 2014-08-22 02:39:14.000000000 -0400
+@@ -3,6 +3,7 @@
+ #define _BSD_SOURCE
+ #define _XOPEN_SOURCE 700
+
++#include <dlfcn.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+@@ -101,6 +102,7 @@
+ }
+
+ /* load plugins */
++ dlopen("libjpeg.so", RTLD_NOW | RTLD_GLOBAL); /* dirty hack! */
+ zathura_plugin_manager_load(zathura->plugins.manager);
+
+ /* configuration */
diff --git a/office/zathura/zathura.SlackBuild b/office/zathura/zathura.SlackBuild
index e9692133ef..60fe4cfc83 100644
--- a/office/zathura/zathura.SlackBuild
+++ b/office/zathura/zathura.SlackBuild
@@ -37,7 +37,7 @@
# - fix homepage URL
PRGNAM=zathura
-VERSION=${VERSION:-0.2.3}
+VERSION=${VERSION:-0.2.7}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -74,7 +74,8 @@ set -eu
# plugins. This build includes the default PDF plugin, without which zathura
# is completely useless.
PLUGIN=$PRGNAM-pdf-poppler
-PLUGINVER=${PLUGINVER:-$VERSION}
+#PLUGINVER=${PLUGINVER:-$VERSION}
+PLUGINVER=${PLUGINVER-0.2.5}
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
@@ -89,6 +90,34 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Work around a bug in Slackware's ghostscript.
+# http://bugs.ghostscript.com/show_bug.cgi?id=692891
+#
+# Supposedly this was fixed, but I'm getting stack traces that look just
+# like those. The trouble is, if any of the plugins depends on libgs.so,
+# that library gets loaded during zathura's "scan for plugins" phase.
+# If libjpeg.so wasn't already loaded, it gets loaded and mangled by
+# libgs. This happens *before* zathura knows which plugin matches the file
+# we're trying to view. Now, the plugin is chosen based on the file's
+# mime type. If said plugin *isn't* the one using libgs, but it *does*
+# use libjpeg, *boom* segfault.
+#
+# What I found is that the postscript plugin uses libsceptre, which uses
+# libgs... and the mupdf and comicbook plugins use libjpeg. The end result
+# is that the mupdf and cb plugins crash the first time they try to load
+# a jpeg from the pdf/cbr, *but* only if the ps plugin is installed!
+# Both plugins work fine if the ps plugin is removed.
+#
+# I found that 'export LD_PRELOAD=/usr/lib/libjpeg.so' stops the
+# segfaulting, while not affecting the ps plugin. The patch below is
+# basically just the C equivalent: use dlopen() to load libjpeg.so before
+# scanning for plugins. Yes, it's a hack, that depends on implementation
+# specific details, but the alternative would be to try and talk Pat V
+# into patching and rebuilding his ghostscript and/or libsceptre packages,
+# which he won't be doing this late in the release cycle (I wouldn't either).
+
+patch -p1 < $CWD/dlopen_hack.diff
+
sed -i "s/-pedantic/$SLKCFLAGS/" config.mk
make LIBDIR=/usr/lib$LIBDIRSUFFIX
@@ -101,6 +130,7 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
# Now build the plugin.
cd $TMP
+
# Hack, lets #include <zathura/document.h> in pdf.h work with an uninstalled
# copy of zathura by saying "-I.."
rm -f $PRGNAM
@@ -116,13 +146,14 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# ZATHURA_VERSION_CHECK=0 shouldn't be required :(
+# ZATHURA_VERSION_CHECK=0 is required because zathura.pc isn't installed.
sed -i "s/-fPIC/$SLKCFLAGS/" config.mk
make install \
ZATHURA_INC=-I.. \
PLUGINDIR=/usr/lib$LIBDIRSUFFIX/$PRGNAM \
DESTDIR=$PKG \
+ ZATHURA_GTK_VERSION=3 \
ZATHURA_VERSION_CHECK=0
strip $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM/*.so
diff --git a/office/zathura/zathura.info b/office/zathura/zathura.info
index b21adc1d1b..73154ba96c 100644
--- a/office/zathura/zathura.info
+++ b/office/zathura/zathura.info
@@ -1,10 +1,10 @@
PRGNAM="zathura"
-VERSION="0.2.3"
+VERSION="0.2.7"
HOMEPAGE="http://www.pwmt.org/projects/zathura"
-DOWNLOAD="http://www.pwmt.org/projects/zathura/download/zathura-0.2.3.tar.gz \
- http://www.pwmt.org/projects/zathura/plugins/download/zathura-pdf-poppler-0.2.3.tar.gz"
-MD5SUM="c0265fd9fa64a37b01d729efb75a7c32 \
- 1d8deb2d2ee5a6847267f977b8f2e542"
+DOWNLOAD="http://www.pwmt.org/projects/zathura/download/zathura-0.2.7.tar.gz \
+ http://www.pwmt.org/projects/zathura-pdf-poppler/download/zathura-pdf-poppler-0.2.5.tar.gz"
+MD5SUM="53124af80e974283a6678319a62e6666 \
+ e314b8b136e71aa4925a864141f12d15"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="girara"