nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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 setuptools,
12 vips,
13}:
14
15buildPythonPackage rec {
16 pname = "pyvips";
17 version = "3.1.1";
18 pyproject = true;
19
20 src = fetchFromGitHub {
21 owner = "libvips";
22 repo = "pyvips";
23 tag = "v${version}";
24 hash = "sha256-BPQFndikPSsKU4HPauTAewab32IumckG/y3lhUUNbMU=";
25 };
26
27 nativeBuildInputs = [
28 pkg-config
29 ];
30
31 buildInputs = [
32 glib
33 vips
34 ];
35
36 build-system = [
37 pkgconfig
38 setuptools
39 ];
40
41 dependencies = [ cffi ];
42
43 env = lib.optionalAttrs stdenv.cc.isClang {
44 NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-function-pointer-types";
45 };
46
47 nativeCheckInputs = [ pytestCheckHook ];
48
49 postPatch = ''
50 substituteInPlace pyvips/__init__.py \
51 --replace 'libvips.so.42' '${lib.getLib vips}/lib/libvips${stdenv.hostPlatform.extensions.sharedLibrary}' \
52 --replace 'libvips.42.dylib' '${lib.getLib vips}/lib/libvips${stdenv.hostPlatform.extensions.sharedLibrary}' \
53 --replace 'libgobject-2.0.so.0' '${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}' \
54 --replace 'libgobject-2.0.dylib' '${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}' \
55 '';
56
57 disabledTests = [
58 # flaky due to a race condition
59 # https://github.com/libvips/pyvips/issues/566
60 "test_progress"
61 ];
62
63 disabledTestPaths = [
64 "tests/perf"
65 ];
66
67 pythonImportsCheck = [ "pyvips" ];
68
69 meta = {
70 description = "Python wrapper for libvips";
71 homepage = "https://github.com/libvips/pyvips";
72 changelog = "https://github.com/libvips/pyvips/blob/v${version}/CHANGELOG.rst";
73 license = lib.licenses.mit;
74 maintainers = with lib.maintainers; [
75 ccellado
76 anthonyroussel
77 ];
78 };
79}