diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/hnswlib')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/hnswlib/default.nix | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/hnswlib/default.nix b/nixpkgs/pkgs/development/libraries/hnswlib/default.nix new file mode 100644 index 000000000000..c3a543972e06 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/hnswlib/default.nix @@ -0,0 +1,66 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, python3 +}: +let + python = python3.withPackages(ps: with ps; [ + numpy + ]); +in + +stdenv.mkDerivation (finalAttrs: { + pname = "hnswlib"; + version = "0.7.0"; + + src = fetchFromGitHub { + owner = "nmslib"; + repo = "hnswlib"; + rev = "refs/tags/v${finalAttrs.version}"; + hash = "sha256-XXz0NIQ5dCGwcX2HtbK5NFTalP0TjLO6ll6TmH3oflI="; + }; + + # this is a header-only library, so we don't need to build it + # we need `cmake` only to run tests + nativeBuildInputs = lib.optionals finalAttrs.doCheck [ + cmake + python + ]; + + # we only want to run buildPhase when we run tests + dontBuild = !finalAttrs.doCheck; + + installPhase = '' + runHook preInstall + + install -Dm644 $src/hnswlib/*.h -t $out/include/hnswlib + + runHook postInstall + ''; + + doCheck = true; + + preCheck = '' + pushd ../tests/cpp + ${python.interpreter} update_gen_data.py + popd + ''; + + checkPhase = '' + runHook preCheck + + ./test_updates + + runHook postCheck + ''; + + meta = with lib; { + description = "Header-only C++/python library for fast approximate nearest neighbors"; + homepage = "https://github.com/nmslib/hnswlib"; + changelog = "https://github.com/nmslib/hnswlib/releases/tag/${finalAttrs.src.rev}"; + license = licenses.asl20; + maintainers = with maintainers; [ natsukium ]; + platforms = platforms.unix; + }; +}) |