Skip to content

Commit 924ce92

Browse files
committed
wip toward fixing for all systems
1 parent d04658b commit 924ce92

File tree

3 files changed

+90
-12
lines changed

3 files changed

+90
-12
lines changed

flake.nix

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@
438438
pkgs.runCommand "start-postgres-server" {
439439
inherit migrationsDir postgresqlSchemaSql pgbouncerAuthSchemaSql statExtensionSql;
440440
} ''
441+
set -x
441442
mkdir -p $out/bin $out/etc/postgresql-custom $out/etc/postgresql $out/extension-custom-scripts
442443
cp ${supautilsConfigFile} $out/etc/postgresql-custom/supautils.conf || { echo "Failed to copy supautils.conf"; exit 1; }
443444
cp ${pgconfigFile} $out/etc/postgresql/postgresql.conf || { echo "Failed to copy postgresql.conf"; exit 1; }
@@ -452,6 +453,7 @@
452453
chmod 644 $out/etc/postgresql-custom/logging.conf
453454
chmod 644 $out/etc/postgresql/pg_hba.conf
454455
substitute ${./nix/tools/run-server.sh.in} $out/bin/start-postgres-server \
456+
--subst-var-by 'SHELL_PATH' '${pkgs.bash}/bin/bash' \
455457
--subst-var-by 'PGSQL_DEFAULT_PORT' '${pgsqlDefaultPort}' \
456458
--subst-var-by 'PGSQL_SUPERUSER' '${pgsqlSuperuser}' \
457459
--subst-var-by 'PSQL15_BINDIR' '${basePackages.psql_15.bin}' \
@@ -594,8 +596,7 @@
594596
sqlTests = ./nix/tests/smoke;
595597
pg_prove = pkgs.perlPackages.TAPParserSourceHandlerpgTAP;
596598
pg_regress = basePackages.pg_regress;
597-
getkeyScript = ./nix/tests/util/pgsodium_getkey.sh;
598-
599+
start-postgres-server-bin = basePackages.start-server;
599600
getVersionArg = pkg:
600601
let
601602
name = pkg.version;
@@ -609,13 +610,29 @@
609610
{
610611
nativeBuildInputs = with pkgs; [
611612
coreutils bash pgpkg pg_prove pg_regress procps
612-
basePackages.start-server
613+
start-postgres-server-bin which
613614
];
614615
} ''
615616
set -e
616-
617-
export KEY_FILE="${getkeyScript}"
618-
start-postgres-server ${getVersionArg pgpkg} --daemonize
617+
echo "Contents of nativeBuildInputs PATH:"
618+
echo $PATH
619+
echo "Checking start-postgres-server:"
620+
which start-postgres-server
621+
ls -l $(which start-postgres-server)
622+
file $(which start-postgres-server)
623+
# echo "Creating the getKeyScript..."
624+
# cat > getKeyScript.sh <<'EOF'
625+
# #!/usr/bin/env bash
626+
# set -euo pipefail
627+
628+
# if [[ ! -f "$KEY_FILE" ]]; then
629+
# head -c 32 /dev/urandom | od -A n -t x1 | tr -d ' \n' > "$KEY_FILE"
630+
# fi
631+
# cat "$KEY_FILE"
632+
# EOF
633+
634+
# Make the script executable
635+
${start-postgres-server-bin}/bin/start-postgres-server ${getVersionArg pgpkg} --daemonize
619636
620637
for i in {1..60}; do
621638
if pg_isready -h localhost -p 5435 -U supabase_admin -q; then
@@ -692,7 +709,6 @@
692709
pg-restore = mkApp "pg-restore" "pg-restore";
693710
local-infra-bootstrap = mkApp "local-infra-bootstrap" "local-infra-bootstrap";
694711
dbmate-tool = mkApp "dbmate-tool" "dbmate-tool";
695-
migration-unit-tests = mkApp "migration-unit-tests" "migration-unit-tests";
696712
};
697713

698714
# 'devShells.default' lists the set of packages that are included in the

nix/tests/util/pgsodium_getkey.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22

33
set -euo pipefail
44

nix/tools/run-server.sh.in

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env bash
1+
#!@SHELL_PATH@
22
# shellcheck shell=bash
33
[ ! -z "$DEBUG" ] && set -x
44

@@ -7,6 +7,7 @@ SKIP_MIGRATIONS=false
77
PSQL_USER="postgres"
88
MIGRATION_FILE=""
99
DAEMONIZE=false
10+
GETKEY_SCRIPT=""
1011

1112
# Function to display help
1213
print_help() {
@@ -16,16 +17,61 @@ print_help() {
1617
echo " --skip-migrations Skip running migrations and SQL statements"
1718
echo " --migration-file FILE Provide a custom migration script"
1819
echo " --user USER Specify the user/role to use (default: postgres)"
20+
echo " --getkey-script SCRIPT Provide a custom path to the PGSODIUM_GETKEY_SCRIPT"
1921
echo " -h, --help Show this help message"
2022
echo
2123
echo "VERSION must be one of: 15, 16, orioledb-17"
2224
echo "PORT is optional (default: @PGSQL_DEFAULT_PORT@)"
2325
}
2426

27+
# start_postgres() {
28+
# local mode=$1
29+
# local LOG_DIR="${DATDIR}_logs"
30+
# mkdir -p "$LOG_DIR"
31+
# local LOG_FILE="$LOG_DIR/postgres.log"
32+
# touch "$LOG_FILE"
33+
34+
# if [ "$mode" = "daemon" ]; then
35+
# # Start in background but follow logs
36+
# pg_ctl start -D "$DATDIR" -l "$LOG_FILE" -W \
37+
# -o "--config-file=$DATDIR/postgresql.conf -p $PORTNO -k $DATDIR/tmp"
38+
# local PG_STATUS=$?
39+
40+
# echo "PostgreSQL startup output:"
41+
# cat "$LOG_FILE"
42+
43+
# return $PG_STATUS
44+
# else
45+
# # Foreground mode
46+
# exec postgres --config-file="$DATDIR/postgresql.conf" -p "$PORTNO" -D "$DATDIR" -k "/tmp" -F
47+
# fi
48+
# }
49+
2550
start_postgres() {
2651
local mode=$1
52+
local LOG_DIR="${DATDIR}_logs"
53+
mkdir -p "$LOG_DIR"
54+
local LOG_FILE="$LOG_DIR/postgres.log"
55+
touch "$LOG_FILE"
2756
if [ "$mode" = "daemon" ]; then
28-
pg_ctl start -D "$DATDIR" -l "$DATDIR/logfile" -o "--config-file=$DATDIR/postgresql.conf -p $PORTNO -k $DATDIR/tmp"
57+
# Start the server
58+
pg_ctl start -D "$DATDIR" -l "$LOG_FILE" \
59+
-o "--config-file=$DATDIR/postgresql.conf -p $PORTNO -k $DATDIR/tmp"
60+
61+
# Give it a moment to write logs
62+
sleep 1
63+
64+
# Check server status and logs
65+
if ! pg_ctl status -D "$DATDIR"; then
66+
echo "PostgreSQL failed to start. Full logs:"
67+
cat "$LOG_FILE"
68+
# You might also want to see the postmaster.pid if it exists
69+
if [ -f "$DATDIR/postmaster.pid" ]; then
70+
echo "postmaster.pid contents:"
71+
cat "$DATDIR/postmaster.pid"
72+
fi
73+
return 1
74+
fi
2975
else
3076
# Foreground mode
3177
exec postgres --config-file="$DATDIR/postgresql.conf" -p "$PORTNO" -D "$DATDIR" -k "/tmp" -F
@@ -38,6 +84,7 @@ stop_postgres() {
3884

3985
trap 'stop_postgres' SIGINT SIGTERM
4086

87+
# Parse arguments
4188
# Parse arguments
4289
while [[ "$#" -gt 0 ]]; do
4390
case "$1" in
@@ -63,6 +110,15 @@ while [[ "$#" -gt 0 ]]; do
63110
exit 1
64111
fi
65112
;;
113+
--getkey-script)
114+
if [[ -n "$2" && ! "$2" =~ ^- ]]; then
115+
GETKEY_SCRIPT="$2"
116+
shift 2
117+
else
118+
echo "Error: --getkey-script requires a script path"
119+
exit 1
120+
fi
121+
;;
66122
--daemonize)
67123
DAEMONIZE=true
68124
shift
@@ -90,7 +146,11 @@ while [[ "$#" -gt 0 ]]; do
90146
;;
91147
esac
92148
done
93-
149+
if [[ -n "${GETKEY_SCRIPT:-}" ]]; then
150+
export PGSODIUM_GETKEY_SCRIPT="$GETKEY_SCRIPT"
151+
else
152+
PGSODIUM_GETKEY_SCRIPT="${PGSODIUM_GETKEY_SCRIPT:-@PGSODIUM_GETKEY@}"
153+
fi
94154
# Verify version and set binary directory
95155
if [ "$VERSION" == "15" ]; then
96156
echo "Starting server for PSQL 15"
@@ -113,7 +173,6 @@ fi
113173
export PATH=$BINDIR/bin:$PATH
114174
PGSQL_SUPERUSER=@PGSQL_SUPERUSER@
115175
PSQL_CONF_FILE=@PSQL_CONF_FILE@
116-
PGSODIUM_GETKEY_SCRIPT=@PGSODIUM_GETKEY@
117176
PORTNO="${PORTNO:-@PGSQL_DEFAULT_PORT@}"
118177
SUPAUTILS_CONFIG_FILE=@SUPAUTILS_CONF_FILE@
119178
LOGGING_CONFIG_FILE=@LOGGING_CONF_FILE@
@@ -140,6 +199,9 @@ export LANGUAGE=en_US.UTF-8
140199
export LC_ALL=en_US.UTF-8
141200
export LC_CTYPE=en_US.UTF-8
142201
export KEY_FILE="$DATDIR/pgsodium.key"
202+
echo "KEY_FILE: $KEY_FILE"
203+
echo "KEY_FILE contents:"
204+
cat "$KEY_FILE"
143205

144206
echo "PGSODIUM_GETKEY_SCRIPT: $PGSODIUM_GETKEY_SCRIPT"
145207
echo "NOTE: using port $PORTNO for server"

0 commit comments

Comments
 (0)