summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/weasyprint-library-paths.patch43
-rw-r--r--gnu/packages/pdf.scm66
3 files changed, 42 insertions, 68 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 4ea3d506f5..80f87691fe 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1695,7 +1695,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/vte-CVE-2012-2738-pt1.patch			\
   %D%/packages/patches/vte-CVE-2012-2738-pt2.patch			\
   %D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch	\
-  %D%/packages/patches/weasyprint-library-paths.patch		\
   %D%/packages/patches/webkitgtk-share-store.patch		\
   %D%/packages/patches/webkitgtk-bind-all-fonts.patch		\
   %D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch	\
diff --git a/gnu/packages/patches/weasyprint-library-paths.patch b/gnu/packages/patches/weasyprint-library-paths.patch
deleted file mode 100644
index 317f0c542e..0000000000
--- a/gnu/packages/patches/weasyprint-library-paths.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Make weasyprint load dynamic libraries from hard-coded path.
-
-From NixOS
-pkgs/development/python-modules/weasyprint/library-paths.patch
-
-diff --git a/weasyprint/fonts.py b/weasyprint/fonts.py
-index 377716c1..2016e01c 100644
---- a/weasyprint/fonts.py
-+++ b/weasyprint/fonts.py
-@@ -48,11 +48,8 @@ else:
-     # with OSError: dlopen() failed to load a library: cairo / cairo-2
-     # So let's hope we find the same file as cairo already did ;)
-     # Same applies to pangocairo requiring pangoft2
--    fontconfig = dlopen(ffi, 'fontconfig', 'libfontconfig',
--                        'libfontconfig-1.dll',
--                        'libfontconfig.so.1', 'libfontconfig-1.dylib')
--    pangoft2 = dlopen(ffi, 'pangoft2-1.0', 'libpangoft2-1.0-0',
--                      'libpangoft2-1.0.so', 'libpangoft2-1.0.dylib')
-+    fontconfig = dlopen(ffi, '@fontconfig@')
-+    pangoft2 = dlopen(ffi, '@pangoft2@')
- 
-     ffi.cdef('''
-         // FontConfig
-diff --git a/weasyprint/text.py b/weasyprint/text.py
-index 035074e9..08e40395 100644
---- a/weasyprint/text.py
-+++ b/weasyprint/text.py
-@@ -243,12 +243,9 @@ def dlopen(ffi, *names):
-     return ffi.dlopen(names[0])  # pragma: no cover
- 
- 
--gobject = dlopen(ffi, 'gobject-2.0', 'libgobject-2.0-0', 'libgobject-2.0.so',
--                 'libgobject-2.0.dylib')
--pango = dlopen(ffi, 'pango-1.0', 'libpango-1.0-0', 'libpango-1.0.so',
--               'libpango-1.0.dylib')
--pangocairo = dlopen(ffi, 'pangocairo-1.0', 'libpangocairo-1.0-0',
--                    'libpangocairo-1.0.so', 'libpangocairo-1.0.dylib')
-+gobject = dlopen(ffi, '@gobject@')
-+pango = dlopen(ffi, '@pango@')
-+pangocairo = dlopen(ffi, '@pangocairo@')
- 
- gobject.g_type_init()
- 
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 879bc7f93f..a06f351aae 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -59,6 +60,7 @@
   #:use-module (gnu packages cups)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages djvu)
+  #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages game-development)
   #:use-module (gnu packages gcc)
@@ -1428,14 +1430,17 @@ manipulating PDF documents from the command line.  It supports
 (define-public weasyprint
   (package
     (name "weasyprint")
-    (version "51")
+    (version "52.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (pypi-uri "WeasyPrint" version))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/FelixSchwarz/WeasyPrint")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0skdzwq7cd715dnnds6abx0k0xmmnmsqp0vb1r1w20sg7abp3sdk"))
-       (patches (search-patches "weasyprint-library-paths.patch"))))
+        (base32
+         "0rcj9yah3bp6bbvkmny3w4csx4l5v49lc7mrk29g0x77qnwswjy7"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1447,27 +1452,39 @@ manipulating PDF documents from the command line.  It supports
                    (pango (assoc-ref inputs "pango"))
                    (pangoft2 (assoc-ref inputs "pangoft2")))
                (substitute* "weasyprint/fonts.py"
-                 (("@fontconfig@")
-                  (string-append fontconfig "/lib/libfontconfig.so"))
-                 (("@pangoft2@")
-                  (string-append pango "/lib/libpangoft2-1.0.so")))
+                 (("'fontconfig'")
+                  (format #f "'~a/lib/libfontconfig.so'" fontconfig))
+                 (("'pangoft2-1.0'")
+                  (format #f "'~a/lib/libpangoft2-1.0.so'" pango)))
                (substitute* "weasyprint/text.py"
-                 (("@gobject@")
-                  (string-append glib "/lib/libgobject-2.0.so"))
-                 (("@pango@")
-                  (string-append pango "/lib/libpango-1.0.so"))
-                 (("@pangocairo@")
-                  (string-append pango "/lib/libpangocairo-1.0.so"))))))
-         (add-after 'unpack 'remove-pytest-options
+                 (("'gobject-2.0'")
+                  (format #f "'~a/lib/libgobject-2.0.so'" glib))
+                 (("'pango-1.0'")
+                  (format #f "'~a/lib/libpango-1.0.so'" pango))
+                 (("'pangocairo-1.0'")
+                  (format #f "'~a/lib/libpangocairo-1.0.so'" pango)))
+               #t)))
+         (add-after 'unpack 'disable-linters
+           ;; Their check fails; none of our business.
            (lambda _
              (substitute* "setup.cfg"
-               ;; flake8 and isort syntax checks fail, which is not our
-               ;; business.
-               (("addopts = --flake8 --isort") ""))))
-         (replace 'check
-           (lambda _
-             ;; Run pytest, excluding one failing test.
-             (invoke "pytest" "-k" "not test_flex_column_wrap_reverse"))))))
+               ((".*pytest-flake8.*") "")
+               ((".*pytest-isort.*") "")
+               (("--flake8") "")
+               (("--isort") ""))
+             #t))
+         (add-before 'check 'register-dejavu-font
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; TODO: fix FreeType so that fonts found in XDG_DATA_DIRS are
+             ;; honored.
+             (let* ((HOME "/tmp")
+                    (dejavu (assoc-ref inputs "font-dejavu"))
+                    (fonts-dir (string-append HOME "/.fonts")))
+               (setenv "HOME" HOME)
+               (mkdir-p fonts-dir)
+               (symlink (string-append dejavu "/share/fonts/truetype")
+                        (string-append fonts-dir "/truetype"))
+               (invoke "fc-cache" "-rv")))))))
     (inputs
      `(("fontconfig" ,fontconfig)
        ("glib" ,glib)
@@ -1482,7 +1499,8 @@ manipulating PDF documents from the command line.  It supports
        ("python-pyphen" ,python-pyphen)
        ("python-tinycss2" ,python-tinycss2)))
     (native-inputs
-     `(("python-pytest-cov" ,python-pytest-cov)
+     `(("font-dejavu" ,font-dejavu)     ;tests depend on it
+       ("python-pytest-cov" ,python-pytest-cov)
        ("python-pytest-runner" ,python-pytest-runner)))
     (home-page "https://weasyprint.org/")
     (synopsis "Document factory for creating PDF files from HTML")