8000 Sam/pljava nix (#976) · lukemarsden/postgres@429d89a · GitHub
[go: up one dir, main page]

Skip to content

Commit 429d89a

Browse files
authored
Sam/pljava nix (supabase#976)
* feat: package pljava * feat: pljava psql nix package * feat: package and smoke test pljava extension into the bundle run on openjdk11 * chore: cleanup nix expression
1 parent 64db8d6 commit 429d89a

File tree

6 files changed

+70
-5
lines changed

6 files changed

+70
-5
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,8 @@ __pycache__/
1717
result*
1818
.env-local
1919
.history
20+
21+
22+
#IDE
23+
.idea/
24+
.vscode/

flake.nix

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
./nix/ext/wrappers/default.nix
129129
./nix/ext/supautils.nix
130130
./nix/ext/plv8.nix
131+
./nix/ext/pljava.nix
131132
];
132133

133134
#Where we import and build the orioledb extension, we add on our custom extensions
@@ -412,7 +413,8 @@
412413
--subst-var-by 'PGSQL_SUPERUSER' '${pgsqlSuperuser}' \
413414
--subst-var-by 'PSQL15_BINDIR' '${basePackages.psql_15.bin}' \
414415
--subst-var-by 'PSQL_CONF_FILE' '${configFile}' \
415-
--subst-var-by 'PGSODIUM_GETKEY' '${getkeyScript}'
416+
--subst-var-by 'PGSODIUM_GETKEY' '${getkeyScript}' \
417+
--subst-var-by 'LIBJVM_LOCATION' '${pkgs.openjdk11}/lib/openjdk/lib/server/libjvm.so'
416418
417419
chmod +x $out/bin/start-postgres-server
418420
'';
@@ -475,13 +477,16 @@
475477
pkgs.runCommand "postgres-${pgpkg.version}-check-harness"
476478
{
477479
nativeBuildInputs = with pkgs; [ coreutils bash pgpkg pg_prove procps ];
480+
propagatedBuildInputs = with pkgs; [ openjdk11 ];
478481
} ''
479482
export PGDATA=/tmp/pgdata
480483
mkdir -p $PGDATA
481484
initdb --locale=C
482485
483486
substitute ${./nix/tests/postgresql.conf.in} $PGDATA/postgresql.conf \
484-
--subst-var-by PGSODIUM_GETKEY_SCRIPT "${./nix/tests/util/pgsodium_getkey.sh}"
487+
--subst-var-by PGSODIUM_GETKEY_SCRIPT "${./nix/tests/util/pgsodium_getkey.sh}" \
488+
--subst-var-by PLJAVA_LIBJVM_LOCATION "${pkgs.openjdk11}/lib/openjdk/lib/server/libjvm.so"
489+
485490
486491
postgres -k /tmp >logfile 2>&1 &
487492
sleep 2

nix/ext/pljava.nix

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{ stdenv, lib, fetchFromGitHub, openssl, openjdk, maven, postgresql, libkrb5, makeWrapper, gcc, pkg-config, which }:
2+
3+
maven.buildMavenPackage rec {
4+
pname = "pljava";
5+
6+
version = "1.6.7";
7+
8+
src = fetchFromGitHub {
9+
owner = "tada";
10+
repo = "pljava";
11+
rev = "V1_6_7";
12+
sha256 = "sha256-M17adSLsw47KZ2BoUwxyWkXKRD8TcexDAy61Yfw4fNU=";
13+
14+
};
15+
16+
mvnParameters = "clean install -Dmaven.test.skip -DskipTests -Dmaven.javadoc.skip=true";
17+
mvnHash = "sha256-lcxRduh/nKcPL6YQIVTsNH0L4ga0LgJpQKgX5IPkRzs=";
18+
19+
nativeBuildInputs = [ makeWrapper maven openjdk postgresql openssl postgresql gcc libkrb5 pkg-config ];
20+
buildInputs = [ stdenv.cc.cc.lib which];
21+
buildPhase = ''
22+
export PATH=$(lib.makeBinPath [ postgresql ]):$PATH
23+
24+
'';
25+
buildOffline = true;
26+
27+
installPhase = ''
28+
mkdir -p $out/pljavabuild
29+
cp -r * $out/pljavabuild
30+
mkdir -p $out/share/postgresql/extension/pljava
31+
mkdir -p $out/share/postgresql/pljava
32+
mkdir -p $out/lib
33+
mkdir -p $out/etc
34+
java -Dpgconfig=${postgresql}/bin/pg_config \
35+
-Dpgconfig.sharedir=$out/share \
36+
-Dpgconfig.sysconfdir=$out/etc/pljava.policy \
37+
-Dpgconfig.pkglibdir=$out/lib \
38+
-jar $out/pljavabuild/pljava-packaging/target/pljava-pg15.jar
39+
cp $out/share/pljava/* $out/share/postgresql/extension/pljava
40+
cp $out/share/pljava/* $out/share/postgresql/pljava
41+
cp $out/share/extension/*.control $out/share/postgresql/extension
42+
rm -r $out/pljavabuild
43+
'';
44+
45+
meta = with lib; {
46+
description = "PL/Java extension for PostgreSQL";
47+
homepage = https://github.com/tada/pljava;
48+
license = licenses.bsd3;
49+
maintainers = [ maintainers.samrose ]; # Update with actual maintainer info
50+
};
51+
}

nix/tests/postgresql.conf.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -793,3 +793,4 @@ shared_preload_libraries = 'auto_explain,pgsodium'
793793
# Add settings for extensions here
794794

795795
pgsodium.getkey_script = '@PGSODIUM_GETKEY_SCRIPT@'
796+
pljava.libjvm_location = '@PLJAVA_LIBJVM_LOCATION@'

nix/tests/prime.sql

Lines changed: 1 addition & 9E81 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ CREATE EXTENSION IF NOT EXISTS pg_graphql;
2020
CREATE EXTENSION IF NOT EXISTS pg_jsonschema;
2121
CREATE EXTENSION IF NOT EXISTS hypopg;
2222
CREATE EXTENSION IF NOT EXISTS index_advisor;
23+
CREATE EXTENSION IF NOT EXISTS pljava;

nix/tools/run-server.sh.in

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ PGSQL_SUPERUSER=@PGSQL_SUPERUSER@
2727
PSQL_CONF_FILE=@PSQL_CONF_FILE@
2828
PGSODIUM_GETKEY_SCRIPT=@PGSODIUM_GETKEY@
2929
PORTNO="${2:-@PGSQL_DEFAULT_PORT@}"
30+
PLJAVA_LIBJVM_LOCATION=@LIBJVM_LOCATION@
3031
DATDIR=$(mktemp -d)
3132
mkdir -p "$DATDIR"
3233

@@ -38,8 +39,9 @@ echo
3839
initdb -U "$PGSQL_SUPERUSER" -D "$DATDIR" --locale=C
3940

4041
echo "NOTE: patching postgresql.conf files"
41-
sed \
42-
"s#@PGSODIUM_GETKEY_SCRIPT@#$PGSODIUM_GETKEY_SCRIPT#g" \
43-
$PSQL_CONF_FILE > "$DATDIR/postgresql.conf"
42+
echo "pljava libjvm location: $PLJAVA_LIBJVM_LOCATION"
43+
sed -e "s#@PGSODIUM_GETKEY_SCRIPT@#$PGSODIUM_GETKEY_SCRIPT#g" \
44+
-e "s#@PLJAVA_LIBJVM_LOCATION@#$PLJAVA_LIBJVM_LOCATION#g" \
45+
$PSQL_CONF_FILE > "$DATDIR/postgresql.conf"
4446

4547
exec postgres -p "$PORTNO" -D "$DATDIR" -k /tmp

0 commit comments

Comments
 (0)
0