forked from PostgREST/plmustache
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnxpg.nix
85 lines (70 loc) · 2.03 KB
/
nxpg.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
{ writeShellScriptBin, findutils, entr, callPackage, postgresql_16, postgresql_15, postgresql_14, postgresql_13, postgresql_12 } :
let
prefix = "nxpg";
supportedPgs = [
postgresql_16
postgresql_15
postgresql_14
postgresql_13
postgresql_12
];
build =
writeShellScriptBin "${prefix}-build" ''
set -euo pipefail
make clean
make
'';
test =
writeShellScriptBin "${prefix}-test" ''
set -euo pipefail
make clean
make
make installcheck
'';
watch =
writeShellScriptBin "${prefix}-watch" ''
set -euo pipefail
${findutils}/bin/find . -type f \( -name '*.c' -o -name '*.h' \) | ${entr}/bin/entr -dr "$@"
'';
tmpDb =
writeShellScriptBin "${prefix}-tmp" ''
set -euo pipefail
export tmpdir="$(mktemp -d)"
export PGDATA="$tmpdir"
export PGHOST="$tmpdir"
export PGUSER=postgres
export PGDATABASE=postgres
trap 'pg_ctl stop -m i && rm -rf "$tmpdir"' sigint sigterm exit
PGTZ=UTC initdb --no-locale --encoding=UTF8 --nosync -U "$PGUSER"
# pg versions older than 16 don't support adding "-c" to initdb to add these options
# so we just modify the resulting postgresql.conf to avoid an error
echo "dynamic_library_path='\$libdir:$(pwd)'" >> $PGDATA/postgresql.conf
echo "extension_control_path='\$system:$(pwd)'" >> $PGDATA/postgresql.conf
default_options="-F -c listen_addresses=\"\" -k $PGDATA"
pg_ctl start -o "$default_options"
"$@"
'';
allPgPaths = map (pg:
let
ver = builtins.head (builtins.splitVersion pg.version);
patchedPg = pg.overrideAttrs(oldAttrs: {
patches = oldAttrs.patches ++ [
./patches/${ver}-add-extension_control_path-for.patch
];
});
script = ''
set -euo pipefail
export PATH=${patchedPg}/bin:"$PATH"
"$@"
'';
in
writeShellScriptBin "${prefix}-${ver}" script
) supportedPgs;
in
[
build
test
watch
tmpDb
allPgPaths
]