mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
gnu: Add weasyprint.
Now includs the patch file missed in
73f0ed8dbf
.
* gnu/packages/pdf.scm (weasyprint): New variable.
* gnu/packages/patches/weasyprint-library-paths.patch: New file.
* gnu/local.mk: Add it.
This commit is contained in:
parent
221012ec2d
commit
77e0cebcad
3 changed files with 120 additions and 0 deletions
|
@ -1420,6 +1420,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/wavpack-CVE-2018-6767.patch \
|
||||
%D%/packages/patches/wavpack-CVE-2018-7253.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-get-selected-profile-fix.patch \
|
||||
%D%/packages/patches/wicd-urwid-1.3.patch \
|
||||
|
|
38
gnu/packages/patches/weasyprint-library-paths.patch
Normal file
38
gnu/packages/patches/weasyprint-library-paths.patch
Normal file
|
@ -0,0 +1,38 @@
|
|||
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 @@
|
|||
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
|
||||
;;; Copyright © 2019 Ben Sturmfels <ben@sturm.com.au>
|
||||
;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -66,6 +67,7 @@ (define-module (gnu packages pdf)
|
|||
#:use-module (gnu packages imagemagick)
|
||||
#:use-module (gnu packages javascript)
|
||||
#:use-module (gnu packages lesstif)
|
||||
#:use-module (gnu packages libffi)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages pcre)
|
||||
|
@ -73,6 +75,8 @@ (define-module (gnu packages pdf)
|
|||
#:use-module (gnu packages photo)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#: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 qt)
|
||||
#:use-module (gnu packages sdl)
|
||||
|
@ -1200,3 +1204,80 @@ (define-public stapler
|
|||
@item displaying the mapping between logical and physical page numbers
|
||||
@end itemize")
|
||||
(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)))
|
||||
|
|
Loading…
Reference in a new issue