From c0b390ed72425bb0856b00b6826f89dc2978a525 Mon Sep 17 00:00:00 2001 From: Marek Benc Date: Mon, 15 Sep 2014 08:03:03 +0200 Subject: gnu: Add mupdf. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/pdf.scm (mupdf): New variable. * gnu/packages/patches/mupdf-buildsystem-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Added the above patch. Signed-off-by: Ludovic Courtès --- gnu-system.am | 1 + gnu/packages/patches/mupdf-buildsystem-fix.patch | 69 ++++++++++++++++++++++++ gnu/packages/pdf.scm | 67 +++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 gnu/packages/patches/mupdf-buildsystem-fix.patch diff --git a/gnu-system.am b/gnu-system.am index bf896bf792..87cb122553 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -372,6 +372,7 @@ dist_patch_DATA = \ gnu/packages/patches/mit-krb5-init-fix.patch \ gnu/packages/patches/mpc123-initialize-ao.patch \ gnu/packages/patches/module-init-tools-moduledir.patch \ + gnu/packages/patches/mupdf-buildsystem-fix.patch \ gnu/packages/patches/nvi-assume-preserve-path.patch \ gnu/packages/patches/orpheus-cast-errors-and-includes.patch \ gnu/packages/patches/ots-no-include-missing-file.patch \ diff --git a/gnu/packages/patches/mupdf-buildsystem-fix.patch b/gnu/packages/patches/mupdf-buildsystem-fix.patch new file mode 100644 index 0000000000..0b17dda911 --- /dev/null +++ b/gnu/packages/patches/mupdf-buildsystem-fix.patch @@ -0,0 +1,69 @@ +Since openjpeg doesn't seem to ship with a .pc file, provide an alternative. + +--- a/ojp2_cppflags.sh 1970-01-01 01:00:00.000000000 +0100 ++++ b/ojp2_cppflags.sh 2014-09-13 22:56:38.842418777 +0200 +@@ -0,0 +1,7 @@ ++#!/bin/sh ++ ++# Return the preprocessor flags to link against openjpeg. ++ ++cpppath=$(echo ${NIX_STORE}/*-openjpeg-*/include/openjpeg-*) ++ ++echo -I$cpppath + +--- a/ojp2_ldflags.sh 1970-01-01 01:00:00.000000000 +0100 ++++ b/ojp2_ldflags.sh 2014-09-13 22:56:38.842418777 +0200 +@@ -0,0 +1,7 @@ ++#!/bin/sh ++ ++# Return the linker flags to link against openjpeg. ++ ++ldpath=$(echo ${NIX_STORE}/*-openjpeg-*/lib) ++ ++echo -L$ldpath -lopenjp2 + +Make use of the above alternatives, compile with gcc. + +--- a/Makerules 2014-09-14 09:13:40.729149860 +0200 ++++ b/Makerules 2014-09-14 09:17:06.425156595 +0200 +@@ -75,12 +75,14 @@ + + SYS_FREETYPE_CFLAGS = $(shell pkg-config --cflags freetype2) + SYS_FREETYPE_LIBS = $(shell pkg-config --libs freetype2) +-SYS_OPENJPEG_CFLAGS = $(shell pkg-config --cflags libopenjp2) +-SYS_OPENJPEG_LIBS = $(shell pkg-config --libs libopenjp2) ++SYS_OPENJPEG_CFLAGS = $(shell ./ojp2_cppflags.sh) ++SYS_OPENJPEG_LIBS = $(shell ./ojp2_ldflags.sh) + SYS_JBIG2DEC_LIBS = -ljbig2dec + SYS_JPEG_LIBS = -ljpeg + SYS_ZLIB_LIBS = -lz + ++CC = gcc ++ + endif + + # The following section is an example of how to simply do cross-compilation + +Remove the -x11 from the built binaries, since X11 is implied on GNU. (This +might change when Wayland gets more popular) + +--- a/Makefile 2014-06-10 17:09:28.000000000 +0200 ++++ b/Makefile 2014-09-14 09:57:10.381235299 +0200 +@@ -255,7 +255,7 @@ + $(LINK_CMD) + + ifeq "$(HAVE_X11)" "yes" +-MUVIEW_X11 := $(OUT)/mupdf-x11 ++MUVIEW_X11 := $(OUT)/mupdf + MUVIEW_X11_OBJ := $(addprefix $(OUT)/platform/x11/, x11_main.o x11_image.o pdfapp.o) + $(MUVIEW_X11_OBJ) : $(FITZ_HDR) $(PDF_HDR) + $(MUVIEW_X11) : $(MUPDF_LIB) $(THIRD_LIBS) +@@ -263,7 +263,7 @@ + $(LINK_CMD) $(X11_LIBS) + + ifeq "$(HAVE_CURL)" "yes" +-MUVIEW_X11_CURL := $(OUT)/mupdf-x11-curl ++MUVIEW_X11_CURL := $(OUT)/mupdf-curl + MUVIEW_X11_CURL_OBJ := $(addprefix $(OUT)/platform/x11/curl/, x11_main.o x11_image.o pdfapp.o curl_stream.o) + $(MUVIEW_X11_CURL_OBJ) : $(FITZ_HDR) $(PDF_HDR) + $(MUVIEW_X11_CURL) : $(MUPDF_LIB) $(THIRD_LIBS) $(CURL_LIB) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 82331a1d0a..a547530148 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -35,6 +35,7 @@ (define-module (gnu packages pdf) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) #:use-module (gnu packages lua) + #:use-module (gnu packages curl) #:use-module (srfi srfi-1)) (define-public poppler @@ -159,3 +160,69 @@ (define-public podofo for applications that wish to do lower level manipulation of PDF, such as extracting content or merging files.") (license license:lgpl2.0+))) + +(define-public mupdf + (package + (name "mupdf") + (version "1.5") + (source + (origin + (method url-fetch) + (uri (string-append "http://mupdf.com/downloads/" name "-" version + "-source.tar.gz")) + (sha256 + (base32 "0sl47zqf4c9fhs4h5zg046vixjmwgy4vhljhr5g4md733nash7z4")) + (patches + (list (search-patch "mupdf-buildsystem-fix.patch"))) + (modules '((guix build utils))) + (snippet + '(begin + ;; Don't build the bundled-in third party libraries. + (delete-file-recursively "thirdparty") + + ;; Make the scripts for finding openjpeg build details executable. + (chmod "ojp2_cppflags.sh" #o0755) + (chmod "ojp2_ldflags.sh" #o0755))))) + + (build-system gnu-build-system) + (inputs + `(("curl" ,curl) + ("freetype" ,freetype) + ("jbig2dec" ,jbig2dec) + ("libjpeg" ,libjpeg) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("openjpeg" ,openjpeg) + ("openssl" ,openssl) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (arguments + ;; Trying to run `$ make check' results in a no rule fault. + '(#:tests? #f + + #:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases (alist-replace + 'build + (lambda _ (zero? (system* "make" "XCFLAGS=-fpic"))) + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (zero? (system* "make" (string-append "prefix=" out) + "install")))) + (alist-delete 'configure %standard-phases))))) + (home-page "http://mupdf.com") + (synopsis "A lightweight PDF viewer and toolkit") + (description + "MuPDF is a C library that implements a PDF and XPS parsing and +rendering engine. It is used primarily to render pages into bitmaps, +but also provides support for other operations such as searching and +listing the table of contents and hyperlinks. + +The library ships with a rudimentary X11 viewer, and a set of command +line tools for batch rendering (pdfdraw), examining the file structure +(pdfshow), and rewriting files (pdfclean).") + (license license:agpl3+))) -- cgit v1.2.3