1{ lib, stdenv, fetchFromGitHub, bison, flex, postgresql }:
2
3stdenv.mkDerivation rec {
4 pname = "age";
5 version = "0.6.0";
6
7 src = fetchFromGitHub {
8 owner = "apache";
9 repo = "incubator-age";
10 rev = "v${version}";
11 sha256 = "1cl6p9qz2yhgm603ljlyjdn0msk3hzga1frjqsmqmpp3nw4dbkka";
12 };
13
14 buildInputs = [ postgresql ];
15
16 makeFlags = [
17 "BISON=${bison}/bin/bison"
18 "FLEX=${flex}/bin/flex"
19 ];
20
21 installPhase = ''
22 install -D -t $out/lib *.so
23 install -D -t $out/share/postgresql/extension *.sql
24 install -D -t $out/share/postgresql/extension *.control
25 '';
26
27 passthru.tests = stdenv.mkDerivation {
28 inherit version src;
29
30 pname = "age-regression";
31
32 dontConfigure = true;
33
34 buildPhase = let
35 postgresqlAge = postgresql.withPackages (ps: [ ps.age ]);
36 in ''
37 # The regression tests need to be run in the order specified in the Makefile.
38 echo -e "include Makefile\nfiles:\n\t@echo \$(REGRESS)" > Makefile.regress
39 REGRESS_TESTS=$(make -f Makefile.regress files)
40
41 ${postgresql}/lib/pgxs/src/test/regress/pg_regress \
42 --inputdir=./ \
43 --bindir='${postgresqlAge}/bin' \
44 --encoding=UTF-8 \
45 --load-extension=age \
46 --inputdir=./regress --outputdir=./regress --temp-instance=./regress/instance \
47 --port=61958 --dbname=contrib_regression \
48 $REGRESS_TESTS
49 '';
50
51 installPhase = ''
52 touch $out
53 '';
54 };
55
56 meta = with lib; {
57 description = "A graph database extension for PostgreSQL";
58 homepage = "https://age.apache.org/";
59 changelog = "https://github.com/apache/incubator-age/releases/tag/v${version}";
60 maintainers = with maintainers; [ ];
61 platforms = postgresql.meta.platforms;
62 license = licenses.asl20;
63 broken = versionOlder postgresql.version "11.0";
64 };
65}