1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 cffi,
6 fetchFromGitHub,
7 glib,
8 pkg-config, # from pkgs
9 pkgconfig, # from pythonPackages
10 pytestCheckHook,
11 pythonOlder,
12 setuptools,
13 vips,
14}:
15
16buildPythonPackage rec {
17 pname = "pyvips";
18 version = "3.0.0";
19 pyproject = true;
20
21 disabled = pythonOlder "3.7";
22
23 src = fetchFromGitHub {
24 owner = "libvips";
25 repo = "pyvips";
26 tag = "v${version}";
27 hash = "sha256-dyous0EahUR7pkr2siBBJwzcoC4TOsnsbRo+rVE8/QQ=";
28 };
29
30 nativeBuildInputs = [
31 pkg-config
32 ];
33
34 buildInputs = [
35 glib
36 vips
37 ];
38
39 build-system = [
40 pkgconfig
41 setuptools
42 ];
43
44 dependencies = [ cffi ];
45
46 env = lib.optionalAttrs stdenv.cc.isClang {
47 NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-function-pointer-types";
48 };
49
50 nativeCheckInputs = [ pytestCheckHook ];
51
52 postPatch = ''
53 substituteInPlace pyvips/__init__.py \
54 --replace 'libvips.so.42' '${lib.getLib vips}/lib/libvips${stdenv.hostPlatform.extensions.sharedLibrary}' \
55 --replace 'libvips.42.dylib' '${lib.getLib vips}/lib/libvips${stdenv.hostPlatform.extensions.sharedLibrary}' \
56 --replace 'libgobject-2.0.so.0' '${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}' \
57 --replace 'libgobject-2.0.dylib' '${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}' \
58 '';
59
60 pythonImportsCheck = [ "pyvips" ];
61
62 meta = with lib; {
63 description = "Python wrapper for libvips";
64 homepage = "https://github.com/libvips/pyvips";
65 changelog = "https://github.com/libvips/pyvips/blob/v${version}/CHANGELOG.rst";
66 license = licenses.mit;
67 maintainers = with maintainers; [
68 ccellado
69 anthonyroussel
70 ];
71 };
72}