diff options
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/h3/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/h3/default.nix | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/h3/default.nix b/nixpkgs/pkgs/development/python-modules/h3/default.nix new file mode 100644 index 000000000000..e66a3f5e9fcb --- /dev/null +++ b/nixpkgs/pkgs/development/python-modules/h3/default.nix @@ -0,0 +1,69 @@ +{ autoPatchelfHook +, buildPythonPackage +, cmake +, cython +, fetchFromGitHub +, h3 +, lib +, numpy +, pytestCheckHook +, scikit-build +, stdenv +}: + +buildPythonPackage rec { + pname = "h3"; + version = "3.7.1"; + + # pypi version does not include tests + src = fetchFromGitHub { + owner = "uber"; + repo = "h3-py"; + rev = "v${version}"; + sha256 = "sha256-MIVV3kZGsIsaJ/ccJOK3+j1VwkUsZGHS5d1sGOBa1Ec="; + }; + + dontConfigure = true; + + checkInputs = [ 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 ]; + }; +} |