at 24.11-pre 79 lines 2.1 kB view raw
1{ lib 2, stdenv 3, cmake 4, fetchFromGitHub 5, postgresql 6, postgresqlTestHook 7}: 8 9stdenv.mkDerivation (finalAttrs: { 10 pname = "postgresql-lantern"; 11 version = "0.2.4"; 12 13 src = fetchFromGitHub { 14 owner = "lanterndata"; 15 repo = "lantern"; 16 rev = "v${finalAttrs.version}"; 17 hash = "sha256-d5CdS11Z0u8+oPvjH6gVx6k8y05SS6wU3PnafcEgQeY="; 18 fetchSubmodules = true; 19 }; 20 21 nativeBuildInputs = [ 22 cmake 23 ]; 24 25 buildInputs = [ 26 postgresql 27 ]; 28 29 installPhase = '' 30 runHook preInstall 31 32 install -D -t $out/lib lantern${postgresql.dlSuffix} 33 install -D -t $out/share/postgresql/extension lantern-*.sql 34 install -D -t $out/share/postgresql/extension lantern.control 35 36 runHook postInstall 37 ''; 38 39 cmakeFlags = [ 40 "-DBUILD_FOR_DISTRIBUTING=ON" 41 ]; 42 43 passthru.tests.extension = stdenv.mkDerivation { 44 name = "lantern-pg-test"; 45 dontUnpack = true; 46 doCheck = true; 47 buildInputs = [ postgresqlTestHook ]; 48 nativeCheckInputs = [ (postgresql.withPackages (_: [ finalAttrs.finalPackage ])) ]; 49 postgresqlTestUserOptions = "LOGIN SUPERUSER"; 50 passAsFile = [ "sql" ]; 51 sql = '' 52 CREATE EXTENSION lantern; 53 54 CREATE TABLE small_world (id integer, vector real[3]); 55 INSERT INTO small_world (id, vector) VALUES (0, '{0,0,0}'), (1, '{0,0,1}'); 56 57 CREATE INDEX ON small_world USING hnsw (vector dist_l2sq_ops) 58 WITH (M=2, ef_construction=10, ef=4, dim=3); 59 ''; 60 failureHook = "postgresqlStop"; 61 checkPhase = '' 62 runHook preCheck 63 psql -a -v ON_ERROR_STOP=1 -f $sqlPath 64 runHook postCheck 65 ''; 66 installPhase = "touch $out"; 67 }; 68 69 meta = with lib; { 70 description = "PostgreSQL vector database extension for building AI applications"; 71 homepage = "https://lantern.dev/"; 72 changelog = "https://github.com/lanterndata/lantern/blob/${finalAttrs.src.rev}/CHANGELOG.md"; 73 license = licenses.bsl11; 74 maintainers = [ ]; 75 platforms = postgresql.meta.platforms; 76 # error: use of undeclared identifier 'aligned_alloc' 77 broken = stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13"; 78 }; 79})