Skip to content
Snippets Groups Projects
Unverified Commit 77e0cebc authored by Hartmut Goebel's avatar Hartmut Goebel
Browse files

gnu: Add weasyprint.

Now includs the patch file missed in
73f0ed8d.

* gnu/packages/pdf.scm (weasyprint): New variable.
* gnu/packages/patches/weasyprint-library-paths.patch: New file.
* gnu/local.mk: Add it.
parent 221012ec
No related branches found
No related tags found
No related merge requests found
...@@ -1420,6 +1420,7 @@ dist_patch_DATA = \ ...@@ -1420,6 +1420,7 @@ dist_patch_DATA = \
%D%/packages/patches/wavpack-CVE-2018-6767.patch \ %D%/packages/patches/wavpack-CVE-2018-6767.patch \
%D%/packages/patches/wavpack-CVE-2018-7253.patch \ %D%/packages/patches/wavpack-CVE-2018-7253.patch \
%D%/packages/patches/wavpack-CVE-2018-7254.patch \ %D%/packages/patches/wavpack-CVE-2018-7254.patch \
%D%/packages/patches/weasyprint-library-paths.patch \
%D%/packages/patches/wicd-bitrate-none-fix.patch \ %D%/packages/patches/wicd-bitrate-none-fix.patch \
%D%/packages/patches/wicd-get-selected-profile-fix.patch \ %D%/packages/patches/wicd-get-selected-profile-fix.patch \
%D%/packages/patches/wicd-urwid-1.3.patch \ %D%/packages/patches/wicd-urwid-1.3.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()
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Ben Sturmfels <ben@sturm.com.au> ;;; Copyright © 2019 Ben Sturmfels <ben@sturm.com.au>
;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
...@@ -66,6 +67,7 @@ (define-module (gnu packages pdf) ...@@ -66,6 +67,7 @@ (define-module (gnu packages pdf)
#:use-module (gnu packages imagemagick) #:use-module (gnu packages imagemagick)
#:use-module (gnu packages javascript) #:use-module (gnu packages javascript)
#:use-module (gnu packages lesstif) #:use-module (gnu packages lesstif)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages lua) #:use-module (gnu packages lua)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
...@@ -73,6 +75,8 @@ (define-module (gnu packages pdf) ...@@ -73,6 +75,8 @@ (define-module (gnu packages pdf)
#:use-module (gnu packages photo) #:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz) #:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt) #:use-module (gnu packages qt)
#:use-module (gnu packages sdl) #:use-module (gnu packages sdl)
...@@ -1200,3 +1204,80 @@ (define-public stapler ...@@ -1200,3 +1204,80 @@ (define-public stapler
@item displaying the mapping between logical and physical page numbers @item displaying the mapping between logical and physical page numbers
@end itemize") @end itemize")
(license license:bsd-3))) (license license:bsd-3)))
(define-public weasyprint
(package
(name "weasyprint")
(version "50")
(source
(origin
(method url-fetch)
(uri (pypi-uri "WeasyPrint" version))
(sha256
(base32 "0invs96zvmcr6wh5klj52jrcnr9qg150v9wpmbhcsf3vv1d1hbcw"))
(patches (search-patches "weasyprint-library-paths.patch"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-library-paths
(lambda* (#:key inputs #:allow-other-keys)
(let ((fontconfig (assoc-ref inputs "fontconfig"))
(glib (assoc-ref inputs "glib"))
(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")))
(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
(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"))))))
(inputs
`(("fontconfig" ,fontconfig)
("glib" ,glib)
("pango" ,pango)))
(propagated-inputs
`(("gdk-pixbuf" ,gdk-pixbuf)
("python-cairocffi" ,python-cairocffi)
("python-cairosvg" ,python-cairosvg)
("python-cffi" ,python-cffi)
("python-cssselect2" ,python-cssselect2)
("python-html5lib" ,python-html5lib)
("python-pyphen" ,python-pyphen)
("python-tinycss2" ,python-tinycss2)))
(native-inputs
`(("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")
(description "WeasyPrint helps web developers to create PDF documents. It
turns simple HTML pages into gorgeous statistical reports, invoices, tickets,
etc.
From a technical point of view, WeasyPrint is a visual rendering engine for
HTML and CSS that can export to PDF and PNG. It aims to support web standards
for printing.
It is based on various libraries but not on a full rendering engine like
WebKit or Gecko. The CSS layout engine is written in Python, designed for
pagination, and meant to be easy to hack on. Weasyprint can also be used as a
python library.
Keywords: html2pdf, htmltopdf")
(license license:bsd-3)))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment