3
0
Fork 0
forked from mirrors/nixpkgs

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, fixed with an upstream patch. this breakage was already
revealing itsef on darwin as the freeimage binding was "working"
there.
This commit is contained in:
Robert Scott 2021-12-03 17:00:22 +00:00
parent 61a8fae2cb
commit c81cf6a242

View file

@ -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 = "1n19yha1cqyx7hnlici1wkl7n68dh0vbpsyydfhign2c0w9jvg42";
};
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
@ -31,6 +53,11 @@ buildPythonPackage rec {
"test_haralick3d"
];
pythonImportsCheck = [
"mahotas"
"mahotas.freeimage"
];
disabled = stdenv.isi686; # Failing tests
meta = with lib; {