ports/databases/postgresql13-server/files/postgresql.in
Palle Girgensohn ab83f2b4bb databases/postgresql??-*: Upgrade to latest version
PostgreSQL 13.3, 12.7, 11.12, 10.17, and 9.6.22 Released!

The PostgreSQL Global Development Group has released an update to all supported
versions of our database system, including 13.3, 12.7, 11.12, 10.17, and
9.6.22. This release closes three security vulnerabilities and fixes over 45
bugs reported over the last three months.

Security fixes in this release:

CVE-2021-32027: Buffer overrun from integer overflow in array subscripting
                calculations

CVE-2021-32028: Memory disclosure in INSERT ... ON CONFLICT ... DO UPDATE

CVE-2021-32029: Memory disclosure in partitioned-table UPDATE ... RETURNING

Also plenty of bug fixes. See the release note for details.

Changes to the port:

Make sure we use the matching version of llvm. This fixes a problem with the
llvm version string not being monotonically increasing with the version
number. [1]

Better pkg message about checksums for postgresql 12+. [2] [4]

Adjust login class parameter to adhere to the documentation in rc.subr(8) [3]:
  The rc.conf parameter for the login class of the postgresql daemon has
  changed name from postgresql_class to postgresql_login_class, since
  rc.subr(8) states that the parameter should be named ${name}_login_class.

Allow parallel builds. [5]

Correct the directory name for the user postgres in pkg message. [6]

PR:		250824 [1], 253558 [2], 236060 [3], 233106 [4],  230656 [5]
PR:		226674 [6]
Submitted by:	Michael Zhilin [2], Michael Zhilin [3], Dmitry Chestnykh [4]
Submitted by:	Steve Wills [5], knezour [6]

Security:	76e0bb86-b4cb-11eb-b9c9-6cc21735f730
Security:	62da9702-b4cc-11eb-b9c9-6cc21735f730

Release notes:	https://www.postgresql.org/docs/release/
2021-05-15 11:12:17 +02:00

115 lines
3.2 KiB
Bash

#!/bin/sh
# PROVIDE: postgresql
# REQUIRE: SERVERS
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable PostgreSQL:
#
# postgresql_enable="YES"
# # optional
# postgresql_data="/var/db/%%PG_USER%%/data13"
# postgresql_flags="-w -s -m fast"
# postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C"
# postgresql_login_class="default"
# postgresql_profiles=""
#
# See %%PREFIX%%/share/doc/postgresql/README-server for more info
#
# This scripts takes one of the following commands:
#
# start stop restart reload status initdb
#
# For postmaster startup options, edit ${postgresql_data}/postgresql.conf
command=%%PREFIX%%/bin/pg_ctl
. /etc/rc.subr
load_rc_config postgresql
# set defaults
postgresql_enable=${postgresql_enable:-"NO"}
postgresql_flags=${postgresql_flags:-"-w -s -m fast"}
postgresql_user=${postgresql_user:-"%%PG_USER%%"}
eval postgresql_data=${postgresql_data:-"~${postgresql_user}/data13"}
postgresql_login_class=${postgresql_login_class:-"default"}
postgresql_initdb_flags=${postgresql_initdb_flags:-"--encoding=utf-8 --lc-collate=C"}
name=postgresql
rcvar=postgresql_enable
extra_commands="reload initdb"
start_cmd="postgresql_command start"
stop_cmd="postgresql_command stop"
restart_cmd="postgresql_command restart"
reload_cmd="postgresql_command reload"
status_cmd="postgresql_command status"
promote_cmd="postgresql_command promote"
initdb_cmd="postgresql_initdb"
su_cmd="/usr/bin/su"
if [ -n "$2" ]; then
profile="$2"
if [ "x${postgresql_profiles}" != "x" ]; then
eval postgresql_data="\${postgresql_${profile}_data:-}"
if [ "x${postgresql_data}" = "x" ]; then
echo "You must define a data directory (postgresql_${profile}_data)"
exit 1
fi
eval postgresql_enable="\${postgresql_${profile}_enable:-${postgresql_enable}}"
eval postgresql_data="\${postgresql_${profile}_data:-${postgresql_data}}"
eval postgresql_flags="\${postgresql_${profile}_flags:-${postgresql_flags}}"
eval postgresql_initdb_flags="\${postgresql_${profile}_initdb_flags:-${postgresql_initdb_flags}}"
fi
else
if [ "x${postgresql_profiles}" != "x" -a "x$1" != "x" ]; then
for profile in ${postgresql_profiles}; do
eval _enable="\${postgresql_${profile}_enable}"
case "x${_enable:-${postgresql_enable}}" in
x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
continue
;;
x[Yy][Ee][Ss])
;;
*)
if test -z "$_enable"; then
_var=postgresql_enable
else
_var=postgresql_"${profile}"_enable
fi
echo "Bad value" \
"'${_enable:-${postgresql_enable}}'" \
"for ${_var}. " \
"Profile ${profile} skipped."
continue
;;
esac
echo "===> postgresql profile: ${profile}"
%%PREFIX%%/etc/rc.d/postgresql $1 ${profile}
retcode="$?"
if [ "0${retcode}" -ne 0 ]; then
failed="${profile} (${retcode}) ${failed:-}"
else
success="${profile} ${success:-}"
fi
done
exit 0
fi
fi
command_args="-D ${postgresql_data} ${postgresql_flags}"
postgresql_command()
{
${su_cmd} -l ${postgresql_user} -c "exec ${command} ${command_args} ${rc_arg}"
}
postgresql_initdb()
{
${su_cmd} -l -c ${postgresql_login_class} ${postgresql_user} -c "exec %%PREFIX%%/bin/initdb ${postgresql_initdb_flags} -D ${postgresql_data} -U ${postgresql_user}"
}
run_rc_command "$1"