From fec634c25aaca599a087933774303251f9a87451 Mon Sep 17 00:00:00 2001 From: Kirill Elagin Date: Sat, 17 May 2014 16:14:07 +0400 Subject: [PATCH 1/4] mupdf: build with -fpic --- pkgs/applications/misc/mupdf/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/misc/mupdf/default.nix b/pkgs/applications/misc/mupdf/default.nix index 81bd9e1e97e..1ea2db812a4 100644 --- a/pkgs/applications/misc/mupdf/default.nix +++ b/pkgs/applications/misc/mupdf/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; preBuild = '' - export makeFlags="prefix=$out build=release" + export makeFlags="prefix=$out build=release XCFLAGS=-fpic" export NIX_CFLAGS_COMPILE=" $NIX_CFLAGS_COMPILE -I$(echo ${openjpeg}/include/openjpeg-*) " ''; From a422c021b66a6dbf21dd3b425ef3d19ea4606671 Mon Sep 17 00:00:00 2001 From: Kirill Elagin Date: Sat, 17 May 2014 16:14:42 +0400 Subject: [PATCH 2/4] mupdf: build a shared library instead --- pkgs/applications/misc/mupdf/default.nix | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pkgs/applications/misc/mupdf/default.nix b/pkgs/applications/misc/mupdf/default.nix index 1ea2db812a4..a89735c093f 100644 --- a/pkgs/applications/misc/mupdf/default.nix +++ b/pkgs/applications/misc/mupdf/default.nix @@ -19,12 +19,42 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; + my_soname = "libmupdf.so.1.3"; + my_soname_js_none = "libmupdf-js-none.so.1.3"; preBuild = '' export makeFlags="prefix=$out build=release XCFLAGS=-fpic" export NIX_CFLAGS_COMPILE=" $NIX_CFLAGS_COMPILE -I$(echo ${openjpeg}/include/openjpeg-*) " + + # Copied from Gentoo ebuild + rm -rf thirdparty + sed -e "\$a\$(MUPDF_LIB): \$(MUPDF_JS_NONE_LIB)" \ + -e "\$a\\\t\$(QUIET_LINK) \$(CC) \$(LDFLAGS) --shared -Wl,-soname -Wl,${my_soname} -Wl,--no-undefined -o \$@ \$^ \$(MUPDF_JS_NONE_LIB) \$(LIBS)" \ + -e "/^MUPDF_LIB :=/s:=.*:= \$(OUT)/${my_soname}:" \ + -e "\$a\$(MUPDF_JS_NONE_LIB):" \ + -e "\$a\\\t\$(QUIET_LINK) \$(CC) \$(LDFLAGS) --shared -Wl,-soname -Wl,${my_soname_js_none} -Wl,--no-undefined -o \$@ \$^ \$(LIBS)" \ + -e "/^MUPDF_JS_NONE_LIB :=/s:=.*:= \$(OUT)/${my_soname_js_none}:" \ + -i Makefile + + sed -e "s/libopenjpeg1/libopenjp2/" -i Makerules ''; postInstall = '' + ln -s ${my_soname} $out/lib/libmupdf.so + + mkdir -p "$out/lib/pkgconfig" + cat >"$out/lib/pkgconfig/mupdf.pc" < $out/share/applications/mupdf.desktop < Date: Sat, 17 May 2014 16:15:19 +0400 Subject: [PATCH 3/4] openjpeg: provide .pc --- pkgs/development/libraries/openjpeg/default.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/openjpeg/default.nix b/pkgs/development/libraries/openjpeg/default.nix index 75999f18d62..97981218478 100644 --- a/pkgs/development/libraries/openjpeg/default.nix +++ b/pkgs/development/libraries/openjpeg/default.nix @@ -15,7 +15,21 @@ stdenv.mkDerivation rec { nativebuildInputs = [ pkgconfig ]; propagatedBuildInputs = [ libpng libtiff lcms ]; # in closure anyway - postInstall = glib.flattenInclude; + postInstall = glib.flattenInclude + '' + mkdir -p "$out/lib/pkgconfig" + cat >"$out/lib/pkgconfig/libopenjp2.pc" < Date: Sat, 17 May 2014 16:16:50 +0400 Subject: [PATCH 4/4] zathura: mupdf plugin --- pkgs/applications/misc/zathura/default.nix | 8 +++-- .../misc/zathura/pdf-mupdf/config.patch | 17 +++++++++++ .../misc/zathura/pdf-mupdf/default.nix | 29 +++++++++++++++++++ .../misc/zathura/pdf-poppler/default.nix | 8 ++--- pkgs/top-level/all-packages.nix | 5 +++- 5 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 pkgs/applications/misc/zathura/pdf-mupdf/config.patch create mode 100644 pkgs/applications/misc/zathura/pdf-mupdf/default.nix diff --git a/pkgs/applications/misc/zathura/default.nix b/pkgs/applications/misc/zathura/default.nix index f943bff7bf0..1a4ab3d772c 100644 --- a/pkgs/applications/misc/zathura/default.nix +++ b/pkgs/applications/misc/zathura/default.nix @@ -1,4 +1,4 @@ -{ callPackage, pkgs, fetchurl }: +{ callPackage, pkgs, fetchurl, useMupdf }: rec { inherit (pkgs) stdenv; @@ -12,6 +12,10 @@ rec { zathura_pdf_poppler = callPackage ./pdf-poppler { }; + zathura_pdf_mupdf = callPackage ./pdf-mupdf { + gtk = pkgs.gtk3; + }; + zathura_djvu = callPackage ./djvu { gtk = pkgs.gtk3; }; @@ -27,9 +31,9 @@ rec { name = "zathura-${zathura_core.version}"; plugins_path = stdenv.lib.makeSearchPath "lib" [ - zathura_pdf_poppler zathura_djvu zathura_ps + (if useMupdf then zathura_pdf_mupdf else zathura_pdf_poppler) ]; builder = ./builder.sh; diff --git a/pkgs/applications/misc/zathura/pdf-mupdf/config.patch b/pkgs/applications/misc/zathura/pdf-mupdf/config.patch new file mode 100644 index 00000000000..c7d172c9263 --- /dev/null +++ b/pkgs/applications/misc/zathura/pdf-mupdf/config.patch @@ -0,0 +1,17 @@ +--- zathura-pdf-mupdf-0.2.6/config.mk ++++ zathura-pdf-mupdf-0.2.6/config.mk +@@ -32,10 +32,11 @@ + OPENSSL_INC ?= $(shell pkg-config --cflags libcrypto) + OPENSSL_LIB ?= $(shell pkg-config --libs libcrypto) + +-MUPDF_LIB ?= -lmupdf -lmupdf-js-none ++MUPDF_INC ?= $(shell pkg-config --cflags mupdf) ++MUPDF_LIB ?= $(shell pkg-config --libs mupdf) + +-INCS = ${GTK_INC} ${GIRARA_INC} ${OPENSSL_INC} ${ZATHURA_INC} +-LIBS = ${GTK_LIB} ${GIRARA_LIB} ${MUPDF_LIB} ${OPENSSL_LIB} -ljbig2dec -lopenjp2 -ljpeg ++INCS = ${GTK_INC} ${GIRARA_INC} ${OPENSSL_INC} ${ZATHURA_INC} ${MUPDF_INC} ++LIBS = ${GTK_LIB} ${GIRARA_LIB} ${OPENSSL_LIB} ${MUPDF_LIB} -ljbig2dec -ljpeg + + # flags + CFLAGS += -std=c99 -fPIC -pedantic -Wall -Wno-format-zero-length $(INCS) diff --git a/pkgs/applications/misc/zathura/pdf-mupdf/default.nix b/pkgs/applications/misc/zathura/pdf-mupdf/default.nix new file mode 100644 index 00000000000..4e585d852a2 --- /dev/null +++ b/pkgs/applications/misc/zathura/pdf-mupdf/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, zathura_core, gtk, girara, mupdf, openssl, openjpeg, libjpeg, jbig2dec }: + +stdenv.mkDerivation rec { + version = "0.2.6"; + name = "zathura-pdf-mupdf-${version}"; + + src = fetchurl { + url = "http://pwmt.org/projects/zathura/plugins/download/${name}.tar.gz"; + sha256 = "5df94b6f906008b5f3bca770a552da6d2917d6b8d3e4b3049cb7001302041b20"; + }; + + buildInputs = [ pkgconfig zathura_core gtk girara openssl mupdf openjpeg libjpeg jbig2dec ]; + + makeFlags = "PREFIX=$(out) PLUGINDIR=$(out)/lib"; + + preConfigure = "patch -p1 < ${./config.patch}"; + + meta = { + homepage = http://pwmt.org/projects/zathura/; + description = "A zathura PDF plugin (mupdf)"; + longDescription = '' + The zathura-pdf-mupdf plugin adds PDF support to zathura by + using the mupdf rendering library. + ''; + license = stdenv.lib.licenses.zlib; + platforms = stdenv.lib.platforms.linux; +# maintainers = [ ]; + }; +} diff --git a/pkgs/applications/misc/zathura/pdf-poppler/default.nix b/pkgs/applications/misc/zathura/pdf-poppler/default.nix index ce4894e6c0f..6625bf47194 100644 --- a/pkgs/applications/misc/zathura/pdf-poppler/default.nix +++ b/pkgs/applications/misc/zathura/pdf-poppler/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, zathura_core, girara, poppler, gettext }: +{ stdenv, fetchurl, pkgconfig, zathura_core, girara, poppler }: stdenv.mkDerivation rec { version = "0.2.5"; @@ -9,16 +9,16 @@ stdenv.mkDerivation rec { sha256 = "1b0chsds8iwjm4g629p6a67nb6wgra65pw2vvngd7g35dmcjgcv0"; }; - buildInputs = [ pkgconfig poppler gettext zathura_core girara ]; + buildInputs = [ pkgconfig poppler zathura_core girara ]; makeFlags = "PREFIX=$(out) PLUGINDIR=$(out)/lib"; meta = { homepage = http://pwmt.org/projects/zathura/; - description = "A zathura PDF plugin"; + description = "A zathura PDF plugin (poppler)"; longDescription = '' The zathura-pdf-poppler plugin adds PDF support to zathura by - using the poppler rendering engine. + using the poppler rendering library. ''; license = stdenv.lib.licenses.zlib; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b3ee044e9b6..614381ce2dc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9739,7 +9739,10 @@ let zathuraCollection = recurseIntoAttrs (let callPackage = newScope pkgs.zathuraCollection; in - import ../applications/misc/zathura { inherit callPackage pkgs fetchurl; }); + import ../applications/misc/zathura { + inherit callPackage pkgs fetchurl; + useMupdf = config.zathura.useMupdf or false; + }); zathura = zathuraCollection.zathuraWrapper;