summary refs log tree commit diff
path: root/pkgs/development/python-modules/pillow-heif/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/pillow-heif/default.nix')
-rw-r--r--pkgs/development/python-modules/pillow-heif/default.nix93
1 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/pillow-heif/default.nix b/pkgs/development/python-modules/pillow-heif/default.nix
new file mode 100644
index 00000000000..1d0505e22ed
--- /dev/null
+++ b/pkgs/development/python-modules/pillow-heif/default.nix
@@ -0,0 +1,93 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchFromGitHub
+
+# build-system
+, cmake
+, nasm
+
+# native dependencies
+, libheif
+, libaom
+, libde265
+, x265
+
+# dependencies
+, pillow
+
+# tests
+, opencv4
+, numpy
+, pympler
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pillow-heif";
+  version = "0.13.0";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "bigcat88";
+    repo = "pillow_heif";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-GbOW29rGpLMS7AfShuO6UCzcspdHtFS7hyNKori0otI=";
+  };
+
+  postPatch = ''
+    sed -i '/addopts/d' pyproject.toml
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    nasm
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  buildInputs = [
+    libaom
+    libde265
+    libheif
+    x265
+  ];
+
+  propagatedBuildInputs = [
+    pillow
+  ];
+
+  pythonImportsCheck = [
+    "pillow_heif"
+  ];
+
+  nativeCheckInputs = [
+    opencv4
+    numpy
+    pympler
+    pytestCheckHook
+  ];
+
+  disabledTests = lib.optionals stdenv.isDarwin [
+    # https://github.com/bigcat88/pillow_heif/issues/89
+    # not reproducible in nixpkgs
+    "test_opencv_crash"
+  ] ++ lib.optionals (stdenv.isLinux && stdenv.isAarch64) [
+    # RuntimeError: Encoder plugin generated an error: Unsupported bit depth: Bit depth not supported by x265
+    "test_open_heif_compare_non_standard_modes_data"
+    "test_open_save_disable_16bit"
+    "test_save_bgr_16bit_to_10_12_bit"
+    "test_save_bgra_16bit_to_10_12_bit"
+    "test_premultiplied_alpha"
+    "test_hdr_save"
+    "test_I_color_modes_to_10_12_bit"
+  ];
+
+  meta = {
+    changelog = "https://github.com/bigcat88/pillow_heif/releases/tag/v${version}";
+    description = "Python library for working with HEIF images and plugin for Pillow";
+    homepage = "https://github.com/bigcat88/pillow_heif";
+    license = with lib.licenses; [ bsd3 lgpl3 ];
+    maintainers = with lib.maintainers; [ dandellion ];
+  };
+}