1{ lib, stdenv, fetchFromGitHub, bison, flex, postgresql }:
2
3stdenv.mkDerivation rec {
4 pname = "age";
5 version = "1.1.0-rc0";
6
7 src = fetchFromGitHub {
8 owner = "apache";
9 repo = "age";
10 rev = "v${version}";
11 sha256 = "sha256-7qQGiiFkGbS/j7ouP2Joj5EGT+ferIgYYMoTe9jmTqQ=";
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 # Only supports PostgreSQL 11 https://github.com/apache/age/issues/225
58 broken = versions.major postgresql.version != "11";
59 description = "A graph database extension for PostgreSQL";
60 homepage = "https://age.apache.org/";
61 changelog = "https://github.com/apache/age/raw/v${version}/RELEASE";
62 maintainers = with maintainers; [ ];
63 platforms = postgresql.meta.platforms;
64 license = licenses.asl20;
65 };
66}