Skip to content

Commit 23ab5df

Browse files
committed
Fix issue with simultaneous pg build on darwin
Make sure each build use different port per version. Make sure they use different pgsodium directories.
1 parent 0bd9410 commit 23ab5df

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

flake.nix

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,11 +1125,7 @@
11251125
11261126
TMPDIR_BASE=$(mktemp -d)
11271127
1128-
if [[ "$(uname)" == "Darwin" ]]; then
1129-
KEY_DIR="/private/tmp/pgsodium"
1130-
else
1131-
KEY_DIR="''${PGSODIUM_KEY_DIR:-$TMPDIR_BASE/pgsodium}"
1132-
fi
1128+
KEY_DIR="''${PGSODIUM_KEY_DIR:-$TMPDIR_BASE/pgsodium}"
11331129
KEY_FILE="$KEY_DIR/pgsodium.key"
11341130
11351131
if ! mkdir -p "$KEY_DIR" 2>/dev/null; then
@@ -1165,6 +1161,7 @@
11651161
name = "start-postgres-server-test";
11661162
extraSubstitutions = {
11671163
PGSODIUM_GETKEY = "${getkey-script}/bin/pgsodium-getkey";
1164+
PGSQL_DEFAULT_PORT = pgPort;
11681165
};
11691166
};
11701167

@@ -1217,6 +1214,12 @@
12171214
# Filter SQL test files
12181215
filteredSqlTests = filterTestFiles majorVersion ./nix/tests/sql;
12191216

1217+
pgPort = if (majorVersion == "17") then
1218+
"5535"
1219+
else if (majorVersion == "15") then
1220+
"5536"
1221+
else "5537";
1222+
12201223
# Convert filtered tests to a sorted list of basenames (without extension)
12211224
testList = pkgs.lib.mapAttrsToList
12221225
(name: _:
@@ -1251,7 +1254,7 @@
12511254
substitute ${./nix/tests/postgresql.conf.in} "$PGTAP_CLUSTER"/postgresql.conf \
12521255
--subst-var-by PGSODIUM_GETKEY_SCRIPT "${getkey-script}/bin/pgsodium-getkey"
12531256
echo "listen_addresses = '*'" >> "$PGTAP_CLUSTER"/postgresql.conf
1254-
echo "port = ${pgsqlDefaultPort}" >> "$PGTAP_CLUSTER"/postgresql.conf
1257+
echo "port = ${pgPort}" >> "$PGTAP_CLUSTER"/postgresql.conf
12551258
echo "host all all 127.0.0.1/32 trust" >> $PGTAP_CLUSTER/pg_hba.conf
12561259
echo "Checking shared_preload_libraries setting:"
12571260
grep -rn "shared_preload_libraries" "$PGTAP_CLUSTER"/postgresql.conf
@@ -1272,18 +1275,18 @@
12721275
12731276
# PostgreSQL startup
12741277
if [[ "$(uname)" == "Darwin" ]]; then
1275-
pg_ctl -D "$PGTAP_CLUSTER" -l "$PGTAP_CLUSTER"/postgresql.log -o "-k "$PGTAP_CLUSTER" -p ${pgsqlDefaultPort} -d 5" start 2>&1
1278+
pg_ctl -D "$PGTAP_CLUSTER" -l "$PGTAP_CLUSTER"/postgresql.log -o "-k "$PGTAP_CLUSTER" -p ${pgPort} -d 5" start 2>&1
12761279
else
12771280
mkdir -p "$PGTAP_CLUSTER/sockets"
1278-
pg_ctl -D "$PGTAP_CLUSTER" -l "$PGTAP_CLUSTER"/postgresql.log -o "-k $PGTAP_CLUSTER/sockets -p ${pgsqlDefaultPort} -d 5" start 2>&1
1281+
pg_ctl -D "$PGTAP_CLUSTER" -l "$PGTAP_CLUSTER"/postgresql.log -o "-k $PGTAP_CLUSTER/sockets -p ${pgPort} -d 5" start 2>&1
12791282
fi || {
12801283
echo "pg_ctl failed to start PostgreSQL"
12811284
echo "Contents of postgresql.log:"
12821285
cat "$PGTAP_CLUSTER"/postgresql.log
12831286
exit 1
12841287
}
12851288
for i in {1..60}; do
1286-
if pg_isready -h ${pgsqlDefaultHost} -p ${pgsqlDefaultPort}; then
1289+
if pg_isready -h ${pgsqlDefaultHost} -p ${pgPort}; then
12871290
echo "PostgreSQL is ready"
12881291
break
12891292
fi
@@ -1297,16 +1300,16 @@
12971300
exit 1
12981301
fi
12991302
done
1300-
createdb -p ${pgsqlDefaultPort} -h ${pgsqlDefaultHost} --username=supabase_admin testing
1301-
if ! psql -p ${pgsqlDefaultPort} -h ${pgsqlDefaultHost} --username=supabase_admin -d testing -v ON_ERROR_STOP=1 -Xaf ${./nix/tests/prime.sql}; then
1303+
createdb -p ${pgPort} -h ${pgsqlDefaultHost} --username=supabase_admin testing
1304+
if ! psql -p ${pgPort} -h ${pgsqlDefaultHost} --username=supabase_admin -d testing -v ON_ERROR_STOP=1 -Xf ${./nix/tests/prime.sql}; then
13021305
echo "Error executing SQL file. PostgreSQL log content:"
13031306
cat "$PGTAP_CLUSTER"/postgresql.log
13041307
pg_ctl -D "$PGTAP_CLUSTER" stop
13051308
exit 1
13061309
fi
13071310
SORTED_DIR=$(mktemp -d)
13081311
for t in $(printf "%s\n" ${builtins.concatStringsSep " " sortedTestList}); do
1309-
psql -p ${pgsqlDefaultPort} -h ${pgsqlDefaultHost} --username=supabase_admin -d testing -f "${./nix/tests/sql}/$t.sql" || true
1312+
psql -p ${pgPort} -h ${pgsqlDefaultHost} --username=supabase_admin -d testing -f "${./nix/tests/sql}/$t.sql" || true
13101313
done
13111314
rm -rf "$SORTED_DIR"
13121315
pg_ctl -D "$PGTAP_CLUSTER" stop
@@ -1317,16 +1320,11 @@
13171320
# which is start by the start-postgres-server-bin script
13181321
# start-postgres-server-bin script closely matches our AMI setup, configurations and migrations
13191322
1320-
# Ensure pgsodium key directory exists with proper permissions
1321-
if [[ "$(uname)" == "Darwin" ]]; then
1322-
mkdir -p /private/tmp/pgsodium
1323-
chmod 1777 /private/tmp/pgsodium
1324-
fi
13251323
unset GRN_PLUGINS_DIR
13261324
${start-postgres-server-bin}/bin/start-postgres-server ${getVersionArg pgpkg} --daemonize
13271325
13281326
for i in {1..60}; do
1329-
if pg_isready -h ${pgsqlDefaultHost} -p ${pgsqlDefaultPort} -U supabase_admin -q; then
1327+
if pg_isready -h ${pgsqlDefaultHost} -p ${pgPort} -U supabase_admin -q; then
13301328
echo "PostgreSQL is ready"
13311329
break
13321330
fi
@@ -1337,7 +1335,7 @@
13371335
fi
13381336
done
13391337
1340-
if ! psql -p ${pgsqlDefaultPort} -h ${pgsqlDefaultHost} --no-password --username=supabase_admin -d postgres -v ON_ERROR_STOP=1 -Xaf ${./nix/tests/prime.sql}; then
1338+
if ! psql -p ${pgPort} -h ${pgsqlDefaultHost} --no-password --username=supabase_admin -d postgres -v ON_ERROR_STOP=1 -Xf ${./nix/tests/prime.sql}; then
13411339
echo "Error executing SQL file"
13421340
exit 1
13431341
fi
@@ -1349,7 +1347,7 @@
13491347
--inputdir=${./nix/tests} \
13501348
--outputdir=$out/regression_output \
13511349
--host=${pgsqlDefaultHost} \
1352-
--port=${pgsqlDefaultPort} \
1350+
--port=${pgPort} \
13531351
--user=supabase_admin \
13541352
${builtins.concatStringsSep " " sortedTestList}; then
13551353
echo "pg_regress tests failed"
@@ -1358,7 +1356,7 @@
13581356
fi
13591357
13601358
echo "Running migrations tests"
1361-
pg_prove -p ${pgsqlDefaultPort} -U supabase_admin -h ${pgsqlDefaultHost} -d postgres -v ${./migrations/tests}/test.sql
1359+
pg_prove -p ${pgPort} -U supabase_admin -h ${pgsqlDefaultHost} -d postgres -v ${./migrations/tests}/test.sql
13621360
13631361
# Copy logs to output
13641362
for logfile in $(find /tmp -name postgresql.log -type f); do

0 commit comments

Comments
 (0)