From 167ce06eaa4b66a2abc565465010b05a059a87c5 Mon Sep 17 00:00:00 2001 From: Robert Scott Date: Fri, 3 Dec 2021 17:00:22 +0000 Subject: [PATCH] python3Packages.mahotas: fix freeimage support use a much stronger binding to our specific freeimage that works reliably on linux. previously it didn't and the tests covering freeimage support were just being skipped as they assumed it to be disabled. once the binding works it reveals slight breakage in the tests themselves, mostly fixed with an upstream patch (skipping one remaining breakage). these breakages were already revealing themselves on darwin as the freeimage binding was "working" there. (cherry picked from c81cf6a24297fcde7783d01cf4b8d87b8920c693 with modifications) --- .../python-modules/mahotas/default.nix | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/mahotas/default.nix b/pkgs/development/python-modules/mahotas/default.nix index 707ad9f3c8f6..321435bdd4a5 100644 --- a/pkgs/development/python-modules/mahotas/default.nix +++ b/pkgs/development/python-modules/mahotas/default.nix @@ -1,4 +1,15 @@ -{ buildPythonPackage, fetchFromGitHub, pillow, scipy, numpy, pytestCheckHook, imread, freeimage, lib, stdenv }: +{ buildPythonPackage +, fetchFromGitHub +, fetchpatch +, pillow +, scipy +, numpy +, pytestCheckHook +, imread +, freeimage +, lib +, stdenv +}: buildPythonPackage rec { pname = "mahotas"; @@ -11,11 +22,22 @@ buildPythonPackage rec { sha256 = "029gvy1fb855pvxvy8zwj44k4s7qpqi0161bg5wldfiprrysn1kw"; }; + patches = [ + (fetchpatch { + name = "fix-freeimage-tests.patch"; + url = "https://github.com/luispedro/mahotas/commit/08cc4aa0cbd5dbd4c37580d52b822810c03b2c69.patch"; + sha256 = "0389sz7fyl8h42phw8sn4pxl4wc3brcrj9d05yga21gzil9bfi23"; + excludes = [ "ChangeLog" ]; + }) + ]; + propagatedBuildInputs = [ numpy imread pillow scipy freeimage ]; checkInputs = [ pytestCheckHook ]; postPatch = '' - substituteInPlace mahotas/io/freeimage.py --replace "/opt/local/lib" "${freeimage}/lib" + substituteInPlace mahotas/io/freeimage.py \ + --replace "ctypes.util.find_library('freeimage')" 'True' \ + --replace 'ctypes.CDLL(libname)' 'np.ctypeslib.load_library("libfreeimage", "${freeimage}/lib")' ''; # tests must be run in the build directory @@ -29,6 +51,12 @@ buildPythonPackage rec { "test_ellipse_axes" "test_normalize" "test_haralick3d" + "test_uint16" + ]; + + pythonImportsCheck = [ + "mahotas" + "mahotas.freeimage" ]; disabled = stdenv.isi686; # Failing tests