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