nixpkgs/pkgs/development/python-modules/h3/default.nix
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
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.
2023-01-21 12:00:00 +00:00

69 lines
1.8 KiB
Nix

{ autoPatchelfHook
, buildPythonPackage
, cmake
, cython
, fetchFromGitHub
, h3
, lib
, numpy
, pytestCheckHook
, scikit-build
, stdenv
}:
buildPythonPackage rec {
pname = "h3";
version = "3.7.6";
# pypi version does not include tests
src = fetchFromGitHub {
owner = "uber";
repo = "h3-py";
rev = "refs/tags/v${version}";
sha256 = "sha256-QNiuiHJ4IMxpi39iobPSSlYUUj5oxpxO4B2+HXVQ/Zk=";
};
dontConfigure = true;
nativeCheckInputs = [ pytestCheckHook ];
nativeBuildInputs = [
scikit-build cmake cython
] ++ lib.optionals stdenv.hostPlatform.isLinux [
# On Linux the .so files ends up referring to libh3.so instead of the full
# Nix store path. I'm not sure why this is happening! On Darwin it works
# fine.
autoPatchelfHook
];
# This is not needed per-se, it's only added for autoPatchelfHook to work
# correctly. See the note above ^^
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ h3 ];
propagatedBuildInputs = [ numpy ];
# The following prePatch replaces the h3lib compilation with using the h3 packaged in nixpkgs.
#
# - Remove the h3lib submodule.
# - Patch CMakeLists to avoid building h3lib, and use h3 instead.
prePatch =
let
cmakeCommands = ''
include_directories(${h3}/include/h3)
link_directories(${h3}/lib)
'';
in ''
rm -r src/h3lib
substituteInPlace CMakeLists.txt --replace "add_subdirectory(src/h3lib)" "${cmakeCommands}"
'';
# Extra check to make sure we can import it from Python
pythonImportsCheck = [ "h3" ];
meta = with lib; {
homepage = "https://github.com/uber/h3-py";
description = "Hierarchical hexagonal geospatial indexing system";
license = licenses.asl20;
maintainers = [ maintainers.kalbasit ];
};
}