evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / hn / hnswlib / package.nix
blob59cd69f9629e4e47e82ea28017c36ee1531cbfcc
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , cmake
5 , python3
6 }:
7 let
8   python = python3.withPackages(ps: with ps; [
9     numpy
10   ]);
13 stdenv.mkDerivation (finalAttrs: {
14   pname = "hnswlib";
15   version = "0.8.0";
17   src = fetchFromGitHub {
18     owner = "nmslib";
19     repo = "hnswlib";
20     rev = "refs/tags/v${finalAttrs.version}";
21     hash = "sha256-1KkAX42j/I06KO4wCnDsDifN1JiENqYKR5NNHBjyuVA=";
22   };
24   # this is a header-only library, so we don't need to build it
25   # we need `cmake` only to run tests
26   nativeCheckInputs = [
27     cmake
28     python
29   ];
31   # we only want to run buildPhase when we run tests
32   dontBuild = !finalAttrs.finalPackage.doCheck;
34   installPhase = ''
35     runHook preInstall
37     install -Dm644 $src/hnswlib/*.h -t $out/include/hnswlib
39     runHook postInstall
40   '';
42   doCheck = true;
44   preCheck = ''
45     pushd ../tests/cpp
46     ${python.interpreter} update_gen_data.py
47     popd
48   '';
50   checkPhase = ''
51     runHook preCheck
53     ./test_updates
55     runHook postCheck
56   '';
58   meta = with lib; {
59     description = "Header-only C++/python library for fast approximate nearest neighbors";
60     homepage = "https://github.com/nmslib/hnswlib";
61     changelog = "https://github.com/nmslib/hnswlib/releases/tag/${lib.removePrefix "refs/tags/" finalAttrs.src.rev}";
62     license = licenses.asl20;
63     maintainers = with maintainers; [ natsukium ];
64     platforms = platforms.unix;
65   };