1{ stdenv
2, buildPythonPackage
3, pythonOlder
4, fetchFromGitHub
5, pytestCheckHook
6, glib
7, vips
8, cffi
9, pkgconfig # from pythonPackages
10, pkg-config # from pkgs
11, lib }:
12
13buildPythonPackage rec {
14 pname = "pyvips";
15 version = "2.2.1";
16
17 disabled = pythonOlder "3.7";
18
19 src = fetchFromGitHub {
20 owner = "libvips";
21 repo = "pyvips";
22 rev = "v${version}";
23 hash = "sha256-9S7h3bkm+QP78cpemYS7l3c8t+wXsJ5MUAP2T50R/Mc=";
24 };
25
26 nativeBuildInputs = [ pkgconfig pkg-config ];
27
28 buildInputs = [ glib vips ];
29
30 propagatedBuildInputs = [ cffi ];
31
32 env = lib.optionalAttrs stdenv.cc.isClang {
33 NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-function-pointer-types";
34 };
35
36 nativeCheckInputs = [ pytestCheckHook ];
37
38 postPatch = ''
39 substituteInPlace pyvips/__init__.py \
40 --replace 'libvips.so.42' '${lib.getLib vips}/lib/libvips${stdenv.hostPlatform.extensions.sharedLibrary}' \
41 --replace 'libvips.42.dylib' '${lib.getLib vips}/lib/libvips${stdenv.hostPlatform.extensions.sharedLibrary}' \
42 --replace 'libgobject-2.0.so.0' '${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}' \
43 --replace 'libgobject-2.0.dylib' '${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}' \
44 '';
45
46 pythonImportsCheck = [ "pyvips" ];
47
48 meta = with lib; {
49 description = "A python wrapper for libvips";
50 homepage = "https://github.com/libvips/pyvips";
51 changelog = "https://github.com/libvips/pyvips/blob/v${version}/CHANGELOG.rst";
52 license = licenses.mit;
53 maintainers = with maintainers; [ ccellado anthonyroussel ];
54 };
55}