at 23.11-beta 74 lines 2.3 kB view raw
1{ lib, stdenv, bison, fetchFromGitHub, flex, perl, postgresql }: 2 3let 4 hashes = { 5 "15" = "sha256-1vmwoflbU3++PFDcsLt9gyLkuzMRGNCD7vWl7/6Q+SE="; 6 "14" = "sha256-w93Q499sZRk4q85A9yqKQjGUd9Pl8UL8K1D3W7mHRTU="; 7 "13" = "sha256-Sot7FR0oW7kWA680pNCMCmlflu4RfJTSWZn9mrXrpzw="; 8 "12" = "sha256-XezcXoHHLCD1/2OHmKhxome2pdjOsYAfZlpvOoU3aS4="; 9 }; 10in 11stdenv.mkDerivation rec { 12 pname = "age"; 13 version = "1.4.0-rc0"; 14 15 src = fetchFromGitHub { 16 owner = "apache"; 17 repo = "age"; 18 rev = "PG${lib.versions.major postgresql.version}/v${builtins.replaceStrings ["."] ["_"] version}"; 19 hash = hashes.${lib.versions.major postgresql.version} or (throw "Source for Age is not available for ${postgresql.version}"); 20 }; 21 22 buildInputs = [ postgresql ]; 23 24 makeFlags = [ 25 "BISON=${bison}/bin/bison" 26 "FLEX=${flex}/bin/flex" 27 "PERL=${perl}/bin/perl" 28 ]; 29 30 installPhase = '' 31 install -D -t $out/lib *.so 32 install -D -t $out/share/postgresql/extension *.sql 33 install -D -t $out/share/postgresql/extension *.control 34 ''; 35 36 passthru.tests = stdenv.mkDerivation { 37 inherit version src; 38 39 pname = "age-regression"; 40 41 dontConfigure = true; 42 43 buildPhase = let 44 postgresqlAge = postgresql.withPackages (ps: [ ps.age ]); 45 in '' 46 # The regression tests need to be run in the order specified in the Makefile. 47 echo -e "include Makefile\nfiles:\n\t@echo \$(REGRESS)" > Makefile.regress 48 REGRESS_TESTS=$(make -f Makefile.regress files) 49 50 ${postgresql}/lib/pgxs/src/test/regress/pg_regress \ 51 --inputdir=./ \ 52 --bindir='${postgresqlAge}/bin' \ 53 --encoding=UTF-8 \ 54 --load-extension=age \ 55 --inputdir=./regress --outputdir=./regress --temp-instance=./regress/instance \ 56 --port=61958 --dbname=contrib_regression \ 57 $REGRESS_TESTS 58 ''; 59 60 installPhase = '' 61 touch $out 62 ''; 63 }; 64 65 meta = with lib; { 66 broken = !builtins.elem (versions.major postgresql.version) (builtins.attrNames hashes); 67 description = "A graph database extension for PostgreSQL"; 68 homepage = "https://age.apache.org/"; 69 changelog = "https://github.com/apache/age/raw/v${src.rev}/RELEASE"; 70 maintainers = with maintainers; [ ]; 71 platforms = postgresql.meta.platforms; 72 license = licenses.asl20; 73 }; 74}