72 lines
2.2 KiB
Bash
72 lines
2.2 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Scripts in this directory are run during the build process.
|
|
# each script will be uploaded to /tmp on your build droplet,
|
|
# given execute permissions and run. The cleanup process will
|
|
# remove the scripts from your build system after they have run
|
|
# if you use the build_image task.
|
|
#
|
|
echo "Commencing Checks"
|
|
|
|
function check_database_is_ready {
|
|
echo -e "\nChecking if database is ready and accepting connections:"
|
|
if [ "$(pg_isready)" = "/tmp:5432 - accepting connections" ]; then
|
|
echo "Database is ready"
|
|
else
|
|
echo "Error: Database is not ready. Exiting"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function check_postgres_owned_dir_exists {
|
|
DIR=$1
|
|
USER="postgres"
|
|
|
|
echo -e "\nChecking if $DIR exists and owned by postgres user:"
|
|
|
|
if [ -d "$DIR" ]; then
|
|
echo "$DIR exists"
|
|
if [ $(stat -c '%U' $DIR) = "$USER" ]; then
|
|
echo "$DIR is owned by $USER"
|
|
else
|
|
echo "Error: $DIR is not owned by $USER"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Error: ${DIR} not found. Exiting."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function check_lse_enabled {
|
|
ARCH=$(uname -m)
|
|
if [ $ARCH = "aarch64" ]; then
|
|
echo -e "\nArchitecture is $ARCH. Checking for LSE:"
|
|
|
|
LSE_COUNT=$(objdump -d /usr/lib/postgresql/bin/postgres | grep -i 'ldxr\|ldaxr\|stxr\|stlxr' | wc -l)
|
|
MOUTLINE_ATOMICS_COUNT=$(nm /usr/lib/postgresql/bin/postgres | grep __aarch64_have_lse_atomics | wc -l)
|
|
|
|
# Checking for load and store exclusives
|
|
if [ $LSE_COUNT -gt 0 ]; then
|
|
echo "Postgres has LSE enabled"
|
|
else
|
|
echo "Error: Postgres failed to be compiled with LSE. Exiting"
|
|
exit 1
|
|
fi
|
|
|
|
# Checking if successfully compiled with -moutline-atomics
|
|
if [ $MOUTLINE_ATOMICS_COUNT -gt 0 ]; then
|
|
echo "Postgres has been compiled with -moutline-atomics"
|
|
else
|
|
echo "Error: Postgres failed to be compiled with -moutline-atomics. Exiting"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Architecture is $ARCH. Not checking for LSE."
|
|
fi
|
|
}
|
|
|
|
check_database_is_ready
|
|
check_postgres_owned_dir_exists "/var/lib/postgresql"
|
|
check_postgres_owned_dir_exists "/etc/postgresql"
|
|
check_lse_enabled |