pythonPackages.weasyprint: init at 45
This commit is contained in:
parent
f4a847876c
commit
de9b1003a3
67
pkgs/development/python-modules/weasyprint/default.nix
Normal file
67
pkgs/development/python-modules/weasyprint/default.nix
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
{ buildPythonPackage,
|
||||||
|
fetchPypi,
|
||||||
|
cairosvg,
|
||||||
|
pyphen,
|
||||||
|
cffi,
|
||||||
|
cssselect,
|
||||||
|
lxml,
|
||||||
|
html5lib,
|
||||||
|
tinycss,
|
||||||
|
pygobject2,
|
||||||
|
glib,
|
||||||
|
pango,
|
||||||
|
fontconfig,
|
||||||
|
stdenv,
|
||||||
|
pytest,
|
||||||
|
pytestrunner,
|
||||||
|
pytest-isort,
|
||||||
|
pytest-flake8,
|
||||||
|
pytestcov,
|
||||||
|
isPy3k,
|
||||||
|
substituteAll
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "weasyprint";
|
||||||
|
version = "45";
|
||||||
|
disabled = !isPy3k;
|
||||||
|
|
||||||
|
# ignore failing pytest
|
||||||
|
checkPhase = "pytest -k 'not test_font_stretch'";
|
||||||
|
|
||||||
|
# ignore failing flake8-test
|
||||||
|
prePatch = ''
|
||||||
|
substituteInPlace setup.cfg \
|
||||||
|
--replace '[tool:pytest]' '[tool:pytest]\nflake8-ignore = E501'
|
||||||
|
'';
|
||||||
|
|
||||||
|
checkInputs = [ pytest pytestrunner pytest-isort pytest-flake8 pytestcov ];
|
||||||
|
|
||||||
|
FONTCONFIG_FILE = "${fontconfig.out}/etc/fonts/fonts.conf";
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ cairosvg pyphen cffi cssselect lxml html5lib tinycss pygobject2 ];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(substituteAll {
|
||||||
|
src = ./library-paths.patch;
|
||||||
|
fontconfig = "${fontconfig.lib}/lib/libfontconfig${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||||
|
pangoft2 = "${pango.out}/lib/libpangoft2-1.0${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||||
|
gobject = "${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||||
|
pango = "${pango.out}/lib/libpango-1.0${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||||
|
pangocairo = "${pango.out}/lib/libpangocairo-1.0${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit version;
|
||||||
|
pname = "WeasyPrint";
|
||||||
|
sha256 = "04bf2p2x619g4q4scg8v6v57c24vwn7qckvz81rckj8clzifyr82";
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://weasyprint.org/;
|
||||||
|
description = "Converts web documents to PDF";
|
||||||
|
license = licenses.bsd3;
|
||||||
|
maintainers = with maintainers; [ elohmeier ];
|
||||||
|
};
|
||||||
|
}
|
@ -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()
|
||||||
|
|
@ -4502,6 +4502,8 @@ in {
|
|||||||
|
|
||||||
virtualenv = callPackage ../development/python-modules/virtualenv { };
|
virtualenv = callPackage ../development/python-modules/virtualenv { };
|
||||||
|
|
||||||
|
weasyprint = callPackage ../development/python-modules/weasyprint { };
|
||||||
|
|
||||||
webassets = callPackage ../development/python-modules/webassets { };
|
webassets = callPackage ../development/python-modules/webassets { };
|
||||||
|
|
||||||
webcolors = callPackage ../development/python-modules/webcolors { };
|
webcolors = callPackage ../development/python-modules/webcolors { };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user