checkInputs used to be added to nativeBuildInputs. Now we have nativeCheckInputs to do that instead. Doing this treewide change allows to keep hashes identical to before the introduction of nativeCheckInputs.
81 lines
3 KiB
Nix
81 lines
3 KiB
Nix
{ pname
|
|
, version
|
|
, disabled
|
|
, src
|
|
, patches ? []
|
|
, meta
|
|
, passthru ? {}
|
|
, ...
|
|
}@args:
|
|
|
|
with args;
|
|
|
|
buildPythonPackage rec {
|
|
inherit pname version format src meta passthru patches;
|
|
|
|
# Disable imagefont tests, because they don't work well with infinality:
|
|
# https://github.com/python-pillow/Pillow/issues/1259
|
|
postPatch = ''
|
|
rm Tests/test_imagefont.py
|
|
'';
|
|
|
|
disabledTests = [
|
|
# Code quality mismathch 9 vs 10
|
|
"test_pyroma"
|
|
|
|
# pillow-simd
|
|
"test_roundtrip"
|
|
"test_basic"
|
|
"test_custom_metadata"
|
|
] ++ lib.optionals stdenv.isDarwin [
|
|
# Disable darwin tests which require executables: `iconutil` and `screencapture`
|
|
"test_grab"
|
|
"test_grabclipboard"
|
|
"test_save"
|
|
];
|
|
|
|
propagatedBuildInputs = [ olefile ]
|
|
++ lib.optionals (lib.versionAtLeast version "8.2.0") [ defusedxml ];
|
|
|
|
nativeCheckInputs = [ pytestCheckHook pyroma numpy ];
|
|
|
|
buildInputs = [ freetype libjpeg openjpeg libimagequant zlib libtiff libwebp libxcrypt tcl lcms2 ]
|
|
++ lib.optionals (lib.versionAtLeast version "7.1.0") [ libxcb ]
|
|
++ lib.optionals (isPyPy) [ tk libX11 ];
|
|
|
|
# NOTE: we use LCMS_ROOT as WEBP root since there is not other setting for webp.
|
|
# NOTE: The Pillow install script will, by default, add paths like /usr/lib
|
|
# and /usr/include to the search paths. This can break things when building
|
|
# on a non-NixOS system that has some libraries installed that are not
|
|
# installed in Nix (for example, Arch Linux has jpeg2000 but Nix doesn't
|
|
# build Pillow with this support). We patch the `disable_platform_guessing`
|
|
# setting here, instead of passing the `--disable-platform-guessing`
|
|
# command-line option, since the command-line option doesn't work when we run
|
|
# tests.
|
|
preConfigure = let
|
|
libinclude' = pkg: ''"${pkg.out}/lib", "${pkg.out}/include"'';
|
|
libinclude = pkg: ''"${pkg.out}/lib", "${pkg.dev}/include"'';
|
|
in ''
|
|
sed -i "setup.py" \
|
|
-e 's|^FREETYPE_ROOT =.*$|FREETYPE_ROOT = ${libinclude freetype}|g ;
|
|
s|^JPEG_ROOT =.*$|JPEG_ROOT = ${libinclude libjpeg}|g ;
|
|
s|^JPEG2K_ROOT =.*$|JPEG2K_ROOT = ${libinclude openjpeg}|g ;
|
|
s|^IMAGEQUANT_ROOT =.*$|IMAGEQUANT_ROOT = ${libinclude' libimagequant}|g ;
|
|
s|^ZLIB_ROOT =.*$|ZLIB_ROOT = ${libinclude zlib}|g ;
|
|
s|^LCMS_ROOT =.*$|LCMS_ROOT = ${libinclude lcms2}|g ;
|
|
s|^TIFF_ROOT =.*$|TIFF_ROOT = ${libinclude libtiff}|g ;
|
|
s|^TCL_ROOT=.*$|TCL_ROOT = ${libinclude' tcl}|g ;
|
|
s|self\.disable_platform_guessing = None|self.disable_platform_guessing = True|g ;'
|
|
export LDFLAGS="$LDFLAGS -L${libwebp}/lib"
|
|
export CFLAGS="$CFLAGS -I${libwebp}/include"
|
|
'' + lib.optionalString (lib.versionAtLeast version "7.1.0") ''
|
|
export LDFLAGS="$LDFLAGS -L${libxcb}/lib"
|
|
export CFLAGS="$CFLAGS -I${libxcb.dev}/include"
|
|
'' + lib.optionalString stdenv.isDarwin ''
|
|
# Remove impurities
|
|
substituteInPlace setup.py \
|
|
--replace '"/Library/Frameworks",' "" \
|
|
--replace '"/System/Library/Frameworks"' ""
|
|
'';
|
|
}
|