package/mupdf: new package.
authorRaphaël Mélotte <raphael.melotte@essensium.com>
Fri, 7 Feb 2020 09:37:04 +0000 (10:37 +0100)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Wed, 26 May 2021 19:47:50 +0000 (21:47 +0200)
MuPDF is a lightweight PDF, XPS, and E-book viewer.

Note: some packages, like PyMuPDF, depend on mupdf's libraries, hence
the patch.

Signed-off-by: Raphaël Mélotte <raphael.melotte@essensium.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[Arnout:
 - propagate harfbuzz dependencies;
 - correct version number in hash file;
 - patch on post-patch hook instead of post-extract;
 - nicer line splitting]

DEVELOPERS
package/Config.in
package/mupdf/0001-Makefile-add-an-install_libs-target.patch [new file with mode: 0644]
package/mupdf/Config.in [new file with mode: 0644]
package/mupdf/mupdf.hash [new file with mode: 0644]
package/mupdf/mupdf.mk [new file with mode: 0644]

index 845089736b9235d2d08006e325ecc0187c6ecf8c..2a7a64ce15cda9406a80a71eb1025c0a411cff5e 100644 (file)
@@ -2250,6 +2250,7 @@ F:        package/bitwise/
 
 N:     Raphaël Mélotte <raphael.melotte@essensium.com>
 F:     package/jbig2dec/
+F:     package/mupdf/
 F:     package/python-boto3/
 F:     package/python-botocore/
 F:     package/python-jmespath/
index 4dac63ab90fdd9c44bae7bc58a7e83b0a5700d41..c30ceb03b4d238b39438a767258d895977dcf624 100644 (file)
@@ -375,6 +375,7 @@ comment "X applications"
        source "package/gtkperf/Config.in"
        source "package/leafpad/Config.in"
        source "package/midori/Config.in"
+       source "package/mupdf/Config.in"
        source "package/nodm/Config.in"
        source "package/pcmanfm/Config.in"
        source "package/qt-webkit-kiosk/Config.in"
diff --git a/package/mupdf/0001-Makefile-add-an-install_libs-target.patch b/package/mupdf/0001-Makefile-add-an-install_libs-target.patch
new file mode 100644 (file)
index 0000000..9cb5a2f
--- /dev/null
@@ -0,0 +1,41 @@
+From 0989f13ecbc2155b05da0cb091801d32d750d2d4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rapha=C3=ABl=20M=C3=A9lotte?=
+ <raphael.melotte@essensium.com>
+Date: Thu, 29 Aug 2019 09:51:02 +0200
+Subject: [PATCH] Makefile: add an install_libs target.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This allows to install only the library files (if you need pymupdf but
+not mupdf binaries for example).
+
+Signed-off-by: Raphaël Mélotte <raphael.melotte@essensium.com>
+---
+ Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index c5bc541ac..e14f88526 100644
+--- a/Makefile
++++ b/Makefile
+@@ -322,7 +322,7 @@ libs: $(INSTALL_LIBS)
+ tools: $(TOOL_APPS)
+ apps: $(TOOL_APPS) $(VIEW_APPS)
+-install: libs apps
++install_libs:
+       install -d $(DESTDIR)$(incdir)/mupdf
+       install -d $(DESTDIR)$(incdir)/mupdf/fitz
+       install -d $(DESTDIR)$(incdir)/mupdf/pdf
+@@ -333,6 +333,7 @@ install: libs apps
+       install -d $(DESTDIR)$(libdir)
+       install -m 644 $(INSTALL_LIBS) $(DESTDIR)$(libdir)
++install: libs apps install_libs
+       install -d $(DESTDIR)$(bindir)
+       install -m 755 $(TOOL_APPS) $(VIEW_APPS) $(DESTDIR)$(bindir)
+-- 
+2.21.0
+
diff --git a/package/mupdf/Config.in b/package/mupdf/Config.in
new file mode 100644 (file)
index 0000000..dc296b3
--- /dev/null
@@ -0,0 +1,23 @@
+config BR2_PACKAGE_MUPDF
+       bool "mupdf"
+       depends on BR2_INSTALL_LIBSTDCPP # harfbuzz
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz
+       depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # harfbuzz
+       depends on BR2_PACKAGE_XORG7
+       select BR2_PACKAGE_FREETYPE
+       select BR2_PACKAGE_HARFBUZZ
+       select BR2_PACKAGE_JBIG2DEC
+       select BR2_PACKAGE_JPEG
+       select BR2_PACKAGE_LCMS2
+       select BR2_PACKAGE_OPENJPEG
+       select BR2_PACKAGE_XLIB_LIBX11
+       select BR2_PACKAGE_ZLIB
+       help
+         MuPDF is a lightweight PDF, XPS, and E-book viewer.
+
+         https://www.mupdf.com/index.html
+
+comment "mupdf needs a toolchain w/ C++, gcc >= 4.8"
+       depends on BR2_TOOLCHAIN_HAS_SYNC_4
+       depends on !BR2_INSTALL_LIBSTDCPP || \
+               !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
diff --git a/package/mupdf/mupdf.hash b/package/mupdf/mupdf.hash
new file mode 100644 (file)
index 0000000..ec48930
--- /dev/null
@@ -0,0 +1,8 @@
+# From https://mupdf.com/downloads/index.html:
+sha1 18f069b7cc125e53f541163ac305c588c94dea97 mupdf-1.16.0-source.tar.gz
+
+# Locally computed:
+sha256 64d537895641b711737cc58fe762481b07ea71d1506e8bd8a13434e093b0068d  mupdf-1.16.0-source.tar.gz
+
+# Hash for license files:
+sha256 57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6  COPYING
diff --git a/package/mupdf/mupdf.mk b/package/mupdf/mupdf.mk
new file mode 100644 (file)
index 0000000..6058b85
--- /dev/null
@@ -0,0 +1,64 @@
+################################################################################
+#
+# mudpf
+#
+################################################################################
+
+MUPDF_VERSION = 1.16.0
+MUPDF_SOURCE = mupdf-$(MUPDF_VERSION)-source.tar.gz
+MUPDF_SITE = https://mupdf.com/downloads/archive
+MUPDF_LICENSE = AGPL-3.0+
+MUPDF_LICENSE_FILES = COPYING
+MUPDF_INSTALL_STAGING = YES
+MUPDF_DEPENDENCIES = \
+       freetype \
+       harfbuzz \
+       host-pkgconf \
+       jbig2dec jpeg \
+       lcms2 openjpeg \
+       xlib_libX11 \
+       zlib
+
+MUPDF_PKG_CONFIG_PACKAGES = \
+       freetype2 \
+       harfbuzz \
+       libjpeg \
+       zlib
+
+MUPDF_CFLAGS = \
+       $(TARGET_CFLAGS) \
+       `$(PKG_CONFIG_HOST_BINARY) --cflags $(MUPDF_PKG_CONFIG_PACKAGES)` \
+       -fPIC # -fPIC is needed because the Makefile doesn't append it.
+
+MUPDF_LDFLAGS = \
+       $(TARGET_LDFLAGS) \
+       `$(PKG_CONFIG_HOST_BINARY) --libs $(MUPDF_PKG_CONFIG_PACKAGES)`
+
+# mupdf doesn't use CFLAGS and LIBS but XCFLAGS and XLIBS instead.
+# with USE_SYSTEM_LIBS it will try to use system libraries instead of the bundled ones.
+MUPDF_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \
+       XCFLAGS="$(MUPDF_CFLAGS)" \
+       XLIBS="$(MUPDF_LDFLAGS)" \
+       USE_SYSTEM_LIBS=yes
+
+# Modern versions of mupdf depend on OpenGL,
+# we disable it because it may not be available:
+define MUPDF_DISABLE_OPENGL
+       sed -i 's/HAVE_GLUT := yes/HAVE_GLUT := no/g' $(@D)/Makerules
+endef
+
+MUPDF_POST_PATCH_HOOKS = MUPDF_DISABLE_OPENGL
+
+define MUPDF_BUILD_CMDS
+       $(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) all
+endef
+
+define MUPDF_INSTALL_STAGING_CMDS
+       $(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)" prefix="/usr" install_libs
+endef
+
+define MUPDF_INSTALL_TARGET_CMDS
+       $(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" prefix="/usr" install
+endef
+
+$(eval $(generic-package))