[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
06/06: gnu: Add weasyprint.
From: |
guix-commits |
Subject: |
06/06: gnu: Add weasyprint. |
Date: |
Tue, 22 Oct 2019 11:01:38 -0400 (EDT) |
htgoebel pushed a commit to branch master
in repository guix.
commit 73f0ed8dbfde97341716fd8b156907e4ef800873
Author: Hartmut Goebel <address@hidden>
Date: Mon Sep 30 21:09:49 2019 +0200
gnu: Add weasyprint.
* gnu/packages/pdf.scm (weasyprint): New variable.
---
gnu/packages/pdf.scm | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 7118afc..0fd385d 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -16,6 +16,7 @@
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <address@hidden>
;;; Copyright © 2019 Alex Griffin <address@hidden>
;;; Copyright © 2019 Ben Sturmfels <address@hidden>
+;;; Copyright © 2019 Hartmut Goebel <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -66,6 +67,7 @@
#: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 @@
#: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 @@ manipulating PDF documents from the command line. It
supports
@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)))
- branch master updated (0201e34 -> 73f0ed8), guix-commits, 2019/10/22
- 03/06: gnu: Add python-cssselect2., guix-commits, 2019/10/22
- 05/06: gnu: Add python-pyphen., guix-commits, 2019/10/22
- 01/06: gnu: Add python-pytest-isort., guix-commits, 2019/10/22
- 02/06: gnu: Add python-tinycss2., guix-commits, 2019/10/22
- 04/06: gnu: Add python-cairosvg., guix-commits, 2019/10/22
- 06/06: gnu: Add weasyprint.,
guix-commits <=