Skip to content

Commit cb223f1

Browse files
authored
Merge branch 'develop' into PSQL-773
2 parents 7d4e051 + 1e598fb commit cb223f1

File tree

6 files changed

+397
-52
lines changed

6 files changed

+397
-52
lines changed

ansible/vars.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ postgres_major:
1010

1111
# Full version strings for each major version
1212
postgres_release:
13-
postgresorioledb-17: "17.5.1.070-orioledb"
14-
postgres17: "17.6.1.049"
15-
postgres15: "15.14.1.049"
13+
postgresorioledb-17: "17.5.1.073-orioledb"
14+
postgres17: "17.6.1.052"
15+
postgres15: "15.14.1.052"
1616

1717
# Non Postgres Extensions
1818
pgbouncer_release: 1.19.0

nix/ext/pg_stat_monitor.nix

Lines changed: 89 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,103 @@
33
stdenv,
44
fetchFromGitHub,
55
postgresql,
6+
buildEnv,
67
}:
7-
8-
stdenv.mkDerivation rec {
8+
let
99
pname = "pg_stat_monitor";
10-
version = "2.1.0";
1110

12-
buildInputs = [ postgresql ];
11+
# Load version configuration from external file
12+
allVersions = (builtins.fromJSON (builtins.readFile ./versions.json)).${pname};
1313

14-
src = fetchFromGitHub {
15-
owner = "percona";
16-
repo = pname;
17-
rev = "refs/tags/${version}";
18-
hash = "sha256-STJVvvrLVLe1JevNu6u6EftzAWv+X+J8lu66su7Or2s=";
19-
};
14+
# Filter versions compatible with current PostgreSQL version
15+
supportedVersions = lib.filterAttrs (
16+
_: value: builtins.elem (lib.versions.major postgresql.version) value.postgresql
17+
) allVersions;
18+
19+
# Derived version information
20+
versions = lib.naturalSort (lib.attrNames supportedVersions);
21+
latestVersion = lib.last versions;
22+
numberOfVersions = builtins.length versions;
23+
packages = builtins.attrValues (
24+
lib.mapAttrs (name: value: build name value.hash value.revision) supportedVersions
25+
);
26+
27+
# Build function for individual versions
28+
build =
29+
version: hash: revision:
30+
stdenv.mkDerivation rec {
31+
inherit pname version;
32+
33+
buildInputs = [ postgresql ];
34+
35+
src = fetchFromGitHub {
36+
owner = "percona";
37+
repo = pname;
38+
rev = "refs/tags/${revision}";
39+
inherit hash;
40+
};
41+
42+
makeFlags = [ "USE_PGXS=1" ];
43+
44+
installPhase = ''
45+
mkdir -p $out/{lib,share/postgresql/extension}
46+
47+
# Install shared library with version suffix
48+
mv ${pname}${postgresql.dlSuffix} $out/lib/${pname}-${version}${postgresql.dlSuffix}
49+
50+
# Create version-specific control file
51+
sed -e "/^default_version =/d" \
52+
-e "s|^module_pathname = .*|module_pathname = '\$libdir/${pname}-${version}'|" \
53+
${pname}.control > $out/share/postgresql/extension/${pname}--${version}.control
54+
55+
# For the latest version, create default control file and symlink and copy SQL upgrade scripts
56+
if [[ "${version}" == "${latestVersion}" ]]; then
57+
{
58+
echo "default_version = '${version}'"
59+
cat $out/share/postgresql/extension/${pname}--${version}.control
60+
} > $out/share/postgresql/extension/${pname}.control
61+
ln -sfn ${pname}-${latestVersion}${postgresql.dlSuffix} $out/lib/${pname}${postgresql.dlSuffix}
62+
cp *.sql $out/share/postgresql/extension
63+
else
64+
mv ./pg_stat_monitor--${version}.sql.in $out/share/postgresql/extension/pg_stat_monitor--${version}.sql
65+
fi
66+
'';
67+
68+
meta = with lib; {
69+
description = "Query Performance Monitoring Tool for PostgreSQL";
70+
homepage = "https://github.com/percona/${pname}";
71+
license = licenses.postgresql;
72+
broken = lib.versionOlder postgresql.version "15";
73+
inherit (postgresql.meta) platforms;
74+
};
75+
};
76+
in
77+
buildEnv {
78+
name = pname;
79+
paths = packages;
2080

21-
makeFlags = [ "USE_PGXS=1" ];
81+
pathsToLink = [
82+
"/lib"
83+
"/share/postgresql/extension"
84+
];
2285

23-
installPhase = ''
24-
mkdir -p $out/{lib,share/postgresql/extension}
86+
postBuild = ''
87+
# Verify all expected library files are present
88+
expectedFiles=${toString (numberOfVersions + 1)}
89+
actualFiles=$(ls -l $out/lib/${pname}*${postgresql.dlSuffix} | wc -l)
2590
26-
cp *${postgresql.dlSuffix} $out/lib
27-
cp *.sql $out/share/postgresql/extension
28-
cp *.control $out/share/postgresql/extension
91+
if [[ "$actualFiles" != "$expectedFiles" ]]; then
92+
echo "Error: Expected $expectedFiles library files, found $actualFiles"
93+
echo "Files found:"
94+
ls -la $out/lib/*${postgresql.dlSuffix} || true
95+
exit 1
96+
fi
2997
'';
3098

31-
meta = with lib; {
32-
description = "Query Performance Monitoring Tool for PostgreSQL";
33-
homepage = "https://github.com/percona/${pname}";
34-
platforms = postgresql.meta.platforms;
35-
license = licenses.postgresql;
36-
broken = lib.versionOlder postgresql.version "15";
99+
passthru = {
100+
inherit versions numberOfVersions;
101+
pname = "${pname}-all";
102+
version =
103+
"multi-" + lib.concatStringsSep "-" (map (v: lib.replaceStrings [ "." ] [ "-" ] v) versions);
37104
};
38105
}

nix/ext/pgjwt.nix

Lines changed: 73 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,85 @@
11
{
2+
buildEnv,
23
lib,
34
stdenv,
45
fetchFromGitHub,
56
postgresql,
67
unstableGitUpdater,
78
}:
8-
9-
stdenv.mkDerivation rec {
9+
let
1010
pname = "pgjwt";
11-
version = "9742dab1b2f297ad3811120db7b21451bca2d3c9";
11+
allVersions = (builtins.fromJSON (builtins.readFile ./versions.json)).${pname};
12+
supportedVersions = lib.filterAttrs (
13+
_: value: builtins.elem (lib.versions.major postgresql.version) value.postgresql
14+
) allVersions;
15+
versions = lib.naturalSort (lib.attrNames supportedVersions);
16+
latestVersion = lib.last versions;
17+
numberOfVersions = builtins.trace "Versions: ${toString (builtins.length versions)}" (
18+
builtins.length versions
19+
);
20+
build =
21+
version: hash: revision:
22+
stdenv.mkDerivation {
23+
inherit pname version;
1224

13-
src = fetchFromGitHub {
14-
owner = "michelp";
15-
repo = "pgjwt";
16-
rev = "${version}";
17-
hash = "sha256-Hw3R9bMGDmh+dMzjmqZSy/rT4mX8cPU969OJiARFg10=";
18-
};
25+
src = fetchFromGitHub {
26+
owner = "michelp";
27+
repo = "pgjwt";
28+
rev = revision;
29+
inherit hash;
30+
};
31+
32+
dontBuild = true;
33+
installPhase = ''
34+
mkdir -p $out/share/postgresql/extension
35+
create_sql_files() {
36+
echo "Creating SQL files for previous versions..."
37+
if [[ "${version}" == "${latestVersion}" ]]; then
38+
cp *.sql $out/share/postgresql/extension
39+
fi
40+
}
41+
42+
create_control_files() {
43+
sed -e "/^default_version =/d" \
44+
-e "s|^module_pathname = .*|module_pathname = '\$libdir/${pname}'|" \
45+
${pname}.control > $out/share/postgresql/extension/${pname}--${version}.control
46+
47+
if [[ "${version}" == "${latestVersion}" ]]; then
48+
{
49+
echo "default_version = '${latestVersion}'"
50+
cat $out/share/postgresql/extension/${pname}--${latestVersion}.control
51+
} > $out/share/postgresql/extension/${pname}.control
52+
fi
53+
}
54+
55+
create_sql_files
56+
create_control_files
57+
'';
58+
59+
passthru.updateScript = unstableGitUpdater { };
60+
61+
meta = with lib; {
62+
description = "PostgreSQL implementation of JSON Web Tokens";
63+
longDescription = ''
64+
sign() and verify() functions to create and verify JSON Web Tokens.
65+
'';
66+
license = licenses.mit;
67+
platforms = postgresql.meta.platforms;
68+
};
69+
};
70+
packages = builtins.attrValues (
71+
lib.mapAttrs (name: value: build name value.hash value.revision) supportedVersions
72+
);
73+
in
74+
buildEnv {
75+
name = pname;
76+
paths = packages;
77+
pathsToLink = [ "/share/postgresql/extension" ];
1978

20-
dontBuild = true;
21-
installPhase = ''
22-
mkdir -p $out/share/postgresql/extension
23-
cp pg*sql *.control $out/share/postgresql/extension
24-
'';
25-
26-
passthru.updateScript = unstableGitUpdater { };
27-
28-
meta = with lib; {
29-
description = "PostgreSQL implementation of JSON Web Tokens";
30-
longDescription = ''
31-
sign() and verify() functions to create and verify JSON Web Tokens.
32-
'';
33-
license = licenses.mit;
34-
platforms = postgresql.meta.platforms;
79+
passthru = {
80+
inherit versions numberOfVersions;
81+
pname = "${pname}-all";
82+
version =
83+
"multi-" + lib.concatStringsSep "-" (map (v: lib.replaceStrings [ "." ] [ "-" ] v) versions);
3584
};
3685
}

nix/ext/tests/default.nix

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,13 @@ builtins.listToAttrs (
217217
"hypopg"
218218
"index_advisor"
219219
"pg_cron"
220-
"pg_hashids"
221220
"pg_graphql"
221+
"pg_hashids"
222222
"pg_jsonschema"
223223
"pg_net"
224-
"pgaudit"
224+
"pg_stat_monitor"
225225
"pg_tle"
226+
"pgaudit"
226227
"vector"
227228
"wal2json"
228229
"wrappers"

0 commit comments

Comments
 (0)