1# FIXME: make gdk-pixbuf dependency optional 2{ 3 stdenv, 4 buildPythonPackage, 5 pythonOlder, 6 fetchPypi, 7 lib, 8 replaceVars, 9 pikepdf, 10 pytestCheckHook, 11 cairo, 12 cffi, 13 flit-core, 14 numpy, 15 withXcffib ? false, 16 xcffib, 17 glib, 18 gdk-pixbuf, 19}: 20 21buildPythonPackage rec { 22 pname = "cairocffi"; 23 version = "1.7.1"; 24 format = "pyproject"; 25 26 disabled = pythonOlder "3.7"; 27 28 src = fetchPypi { 29 inherit pname version; 30 hash = "sha256-LkjuhkiE7Eo6NL+oyauZmfaIKG63FKFaQ+ydBow2VXs="; 31 }; 32 33 patches = [ 34 # OSError: dlopen() failed to load a library: gdk-pixbuf-2.0 / gdk-pixbuf-2.0-0 35 (replaceVars ./dlopen-paths.patch { 36 ext = stdenv.hostPlatform.extensions.sharedLibrary; 37 cairo = cairo.out; 38 glib = glib.out; 39 gdk_pixbuf = gdk-pixbuf.out; 40 }) 41 ./fix_test_scaled_font.patch 42 ]; 43 44 nativeBuildInputs = [ flit-core ]; 45 46 propagatedBuildInputs = [ 47 cairo 48 cffi 49 ] ++ lib.optional withXcffib xcffib; 50 51 nativeCheckInputs = [ 52 numpy 53 pikepdf 54 pytestCheckHook 55 ]; 56 57 pythonImportsCheck = [ "cairocffi" ]; 58 59 # Cairo tries to load system fonts by default. 60 # It's surfaced as a Cairo "out of memory" error in tests. 61 __impureHostDeps = [ "/System/Library/Fonts" ]; 62 63 meta = with lib; { 64 changelog = "https://github.com/Kozea/cairocffi/blob/v${version}/NEWS.rst"; 65 homepage = "https://github.com/SimonSapin/cairocffi"; 66 license = licenses.bsd3; 67 maintainers = [ ]; 68 description = "cffi-based cairo bindings for Python"; 69 }; 70}