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