Skip to content

Commit 772c1ce

Browse files
committed
feat: multi version pg_net including 0.19.5
1 parent a3d559f commit 772c1ce

File tree

5 files changed

+185
-31
lines changed

5 files changed

+185
-31
lines changed

nix/ext/pg_net.nix

Lines changed: 101 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,117 @@
11
{
2+
pkgs,
23
lib,
34
stdenv,
45
fetchFromGitHub,
56
curl,
67
postgresql,
8+
libuv,
79
}:
810

9-
stdenv.mkDerivation rec {
11+
let
1012
pname = "pg_net";
11-
version = "0.14.0";
12-
13-
buildInputs = [
14-
curl
15-
postgresql
16-
];
17-
18-
src = fetchFromGitHub {
19-
owner = "supabase";
20-
repo = pname;
21-
rev = "refs/tags/v${version}";
22-
hash = "sha256-c1pxhTyrE5j6dY+M5eKAboQNofIORS+Dccz+7HKEKQI=";
23-
};
13+
build =
14+
version: hash:
15+
stdenv.mkDerivation rec {
16+
inherit pname version;
17+
18+
buildInputs = [
19+
curl
20+
postgresql
21+
] ++ lib.optional (version == "0.6") libuv;
22+
23+
src = fetchFromGitHub {
24+
owner = "supabase";
25+
repo = pname;
26+
rev = "refs/tags/v${version}";
27+
inherit hash;
28+
};
29+
30+
buildPhase = ''
31+
make PG_CONFIG=${postgresql}/bin/pg_config
32+
'';
33+
34+
postPatch =
35+
lib.optionalString (version == "0.6") ''
36+
# handle collision with pg_net 0.10.0
37+
rm sql/pg_net--0.2--0.3.sql
38+
rm sql/pg_net--0.4--0.5.sql
39+
rm sql/pg_net--0.5.1--0.6.sql
40+
''
41+
+ lib.optionalString (version == "0.7.1") ''
42+
# handle collision with pg_net 0.10.0
43+
rm sql/pg_net--0.5.1--0.6.sql
44+
'';
45+
46+
env.NIX_CFLAGS_COMPILE = "-Wno-error";
47+
48+
installPhase = ''
49+
mkdir -p $out/{lib,share/postgresql/extension}
50+
51+
# Install versioned library
52+
install -Dm755 ${pname}${postgresql.dlSuffix} $out/lib/${pname}-${version}${postgresql.dlSuffix}
53+
54+
if [ -f sql/${pname}.sql ]; then
55+
cp sql/${pname}.sql $out/share/postgresql/extension/${pname}--${version}.sql
56+
else
57+
cp sql/${pname}--${version}.sql $out/share/postgresql/extension/${pname}--${version}.sql
58+
fi
59+
60+
# Install upgrade scripts
61+
find . -name '${pname}--*--*.sql' -exec install -Dm644 {} $out/share/postgresql/extension/ \;
2462
25-
env.NIX_CFLAGS_COMPILE = "-Wno-error";
63+
# Create versioned control file with modified module path
64+
sed -e "/^default_version =/d" \
65+
-e "s|^module_pathname = .*|module_pathname = '\$libdir/${pname}'|" \
66+
${pname}.control > $out/share/postgresql/extension/${pname}--${version}.control
67+
'';
2668

27-
installPhase = ''
28-
mkdir -p $out/{lib,share/postgresql/extension}
69+
meta = with lib; {
70+
description = "Async networking for Postgres";
71+
homepage = "https://github.com/supabase/pg_net";
72+
platforms = postgresql.meta.platforms;
73+
license = licenses.postgresql;
74+
};
75+
};
76+
allVersions = (builtins.fromJSON (builtins.readFile ./versions.json)).pg_net;
77+
# Filter out versions that don't work on current platform
78+
platformFilteredVersions = lib.filterAttrs (
79+
name: _:
80+
# Exclude 0.11.0 on macOS due to epoll.h dependency
81+
!(stdenv.isDarwin && name == "0.11.0")
82+
) allVersions;
83+
supportedVersions = lib.filterAttrs (
84+
_: value: builtins.elem (lib.versions.major postgresql.version) value.postgresql
85+
) platformFilteredVersions;
86+
versions = lib.naturalSort (lib.attrNames supportedVersions);
87+
latestVersion = lib.last versions;
88+
numberOfVersions = builtins.length versions;
89+
packages = builtins.attrValues (
90+
lib.mapAttrs (name: value: build name value.hash) supportedVersions
91+
);
92+
in
93+
pkgs.buildEnv {
94+
name = pname;
95+
paths = packages;
96+
postBuild = ''
97+
{
98+
echo "default_version = '${latestVersion}'"
99+
cat $out/share/postgresql/extension/${pname}--${latestVersion}.control
100+
} > $out/share/postgresql/extension/${pname}.control
101+
ln -sfn ${pname}-${latestVersion}${postgresql.dlSuffix} $out/lib/${pname}${postgresql.dlSuffix}
29102
30-
cp *${postgresql.dlSuffix} $out/lib
31-
cp sql/*.sql $out/share/postgresql/extension
32-
cp *.control $out/share/postgresql/extension
103+
# checks
104+
(set -x
105+
test "$(ls -A $out/lib/${pname}*${postgresql.dlSuffix} | wc -l)" = "${
106+
toString (numberOfVersions + 1)
107+
}"
108+
)
33109
'';
34110

35-
meta = with lib; {
36-
description = "Async networking for Postgres";
37-
homepage = "https://github.com/supabase/pg_net";
38-
platforms = postgresql.meta.platforms;
39-
license = licenses.postgresql;
111+
passthru = {
112+
inherit versions numberOfVersions;
113+
pname = "${pname}-all";
114+
version =
115+
"multi-" + lib.concatStringsSep "-" (map (v: lib.replaceStrings [ "." ] [ "-" ] v) versions);
40116
};
41117
}

nix/ext/versions.json

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,77 @@
2020
],
2121
"hash": "sha256-G0eQk2bY5CNPMeokN/nb05g03CuiplRf902YXFVQFbs="
2222
}
23+
},
24+
"pg_net": {
25+
"0.1": {
26+
"postgresql": [
27+
"15"
28+
],
29+
"hash": "sha256-geXGMb9MxU2vVB3ZBkGEwNqHixPbqjywyUumk7kbdbQ="
30+
},
31+
"0.2": {
32+
"postgresql": [
33+
"15"
34+
],
35+
"hash": "sha256-ArJmZTh7rc6OgvA6RIndMqcDRJl91QPt6pgEeCuHA6M="
36+
},
37+
"0.6": {
38+
"postgresql": [
39+
"15"
40+
],
41+
"hash": "sha256-SpQbF/ZeAVa8zf0+N6uluHrjpmGy0NLd2/hvyiOyNsY="
42+
},
43+
"0.7": {
44+
"postgresql": [
45+
"15"
46+
],
47+
"hash": "sha256-FRaTZPCJQPYAFmsJg22hYJJ0+gH1tMdDQoCQgiqEnaA="
48+
},
49+
"0.7.1": {
50+
"postgresql": [
51+
"15"
52+
],
53+
"hash": "sha256-VScRKzY/skQu9SWGx9iZvifH7pv7SRXcvLfybB+XX4Q="
54+
},
55+
"0.8.0": {
56+
"postgresql": [
57+
"15"
58+
],
59+
"hash": "sha256-ZPsRPWV1G3lMM2mT+H139Wvgoy8QnmeUbzEnGeDJmZA="
60+
},
61+
"0.10.0": {
62+
"postgresql": [
63+
"15"
64+
],
65+
"hash": "sha256-R9Mzw5gvV7b2R59LTOzuOc0AI99+3ncFNzijI4mySUg="
66+
},
67+
"0.11.0": {
68+
"postgresql": [
69+
"15",
70+
"17"
71+
],
72+
"hash": "sha256-XN441jXK1q+I/LZRNwvzbSsebXHgZ8iYsslZvcPFlAs="
73+
},
74+
"0.13.0": {
75+
"postgresql": [
76+
"15",
77+
"17"
78+
],
79+
"hash": "sha256-FRaTZPCJQPYAFmsJg22hYJJ0+gH1tMdDQoCQgiqEnaA="
80+
},
81+
"0.14.0": {
82+
"postgresql": [
83+
"15",
84+
"17"
85+
],
86+
"hash": "sha256-c1pxhTyrE5j6dY+M5eKAboQNofIORS+Dccz+7HKEKQI="
87+
},
88+
"0.19.5": {
89+
"postgresql": [
90+
"15",
91+
"17"
92+
],
93+
"hash": "sha256-Cpi2iASi1QJoED0Qs1dANqg/BNZTsz5S+pw8iYyW03Y="
94+
}
2395
}
2496
}

0 commit comments

Comments
 (0)