titanofold 14/12/28 18:07:22
Added: postgresql.init-pre_9.2 postgresql.service
postgresql-check-db-dir postgresql.confd
postgresql.init postgresql.tmpfilesd
Log:
Eliminate the patch, initscript, and systemd tarball maintained out
of tree, and:
- Fix bug 460956 by changing directory mask to 1775 which allows
all to access sockets, users within the group to create a socket,
and restricts the deletion or modification to the socket owner or
directory owner.
- Fix bug 488246 by creating symbolic links to the configuration
files when PGDATA and DATADIR differ.
- Fix bug 511942 by warning if CONFIG_SYSVIPC is not enabled.
- Fix bug 518522 by appending the plperl.on_init workaround to
postgresql.conf. (This only affects new installs.)
- Fix bug 529680 by removing the autotools inherit, and removing
the sed statement. We don't change anything in configure.in, which
means we don't need to regenerate the configure script.
- Fix bug 530790 by correcting the typo.
- Fix bug 531820 by removing the pre-initdb tests.
(Portage version: 2.2.14/cvs/Linux x86_64, signed Manifest commit with key
D1BBFDA0)
Revision Changes Path
1.1 dev-db/postgresql/files/postgresql.init-pre_9.2
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.init-pre_9.2?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.init-pre_9.2?rev=1.1&content-type=text/plain
Index: postgresql.init-pre_9.2
===================================================================
#!/sbin/runscript
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header:
/var/cvsroot/gentoo-x86/dev-db/postgresql/files/postgresql.init-pre_9.2,v 1.1
2014/12/28 18:07:22 titanofold Exp $
extra_started_commands="reload"
get_config() {
[ -f ${PGDATA%/}/postgresql.conf ] || return 1
eval echo $(sed -e 's:#.*::' ${PGDATA%/}/postgresql.conf \
| awk '$1 == "'$1'" { print ($2 == "=" ? $3 : $2) }')
}
depend() {
use net
provide postgresql
if [ "$(get_config log_destination)" = "syslog" ]; then
use logger
fi
}
configured_port=$(get_config port)
: ${configured_port:=${PGPORT}}
socket_path=$(get_config unix_socket_directory)
: ${socket_path:=/run/postgresql}
checkconfig() {
# Check that DATA_DIR has been set
if [ -z ${DATA_DIR} ] ; then
eerror "DATA_DIR not set"
eerror "HINT: Perhaps you need to update /etc/conf.d/postgresql-@SLOT@"
return 1
fi
# Check that DATA_DIR exists
if [ ! -d ${DATA_DIR} ] ; then
eerror "Directory not found: ${DATA_DIR}"
eerror "HINT: Ensure that DATA_DIR points to the right path."
eerror "HINT: Or perhaps you need to create the database cluster:"
eerror " emerge --config dev-db/postgresql:@SLOT@"
return 1
fi
# Check for the existence of PostgreSQL's config files, and set the
# proper mode and ownership.
# Only three files should be checked as potentially other files
# may be in PGDATA that should not be touched.
local file
for file in postgresql pg_hba pg_ident ; do
file="${PGDATA%/}/${file}.conf"
if [ -f ${file} ] ; then
checkpath -f -m 0600 -o postgres:postgres ${file}
else
eerror "${file} not found"
eerror "HINT: mv ${DATA_DIR%/}/*.conf ${PGDATA}"
return 1
fi
done
# Set the proper permission for the socket path and create it if
# it doesn't exist.
checkpath -d -m 1775 -o postgres:postgres ${socket_path}
if [ -e ${socket_path%/}/.s.PGSQL.${configured_port} ] ; then
eerror "Socket conflict."
eerror "A server is already listening on:"
eerror " ${socket_path%/}/.s.PGSQL.${configured_port}"
eerror "HINT: Change PGPORT to listen on a different socket."
return 1
fi
}
start() {
checkconfig || return 1
ebegin "Starting PostgreSQL"
rm -f ${DATA_DIR%/}/postmaster.pid
local extraenv
local x
for x in ${PG_EXTRA_ENV} ; do
extraenv="${extraenv} --env ${x}"
done
start-stop-daemon --start \
--user postgres \
--env "PGPORT=${configured_port}" \
${extraenv} \
--pidfile ${DATA_DIR%/}/postmaster.pid \
--wait $((${START_TIMEOUT}*1000)) \
--exec /usr/@LIBDIR@/postgresql-@SLOT@/bin/postgres \
-- -D ${PGDATA} --data-directory=${DATA_DIR} --silent-mode=true \
${PGOPTS}
local retval=$?
if [ $retval -ne 0 ] ; then
eerror "Check the log for a possible explanation of the above error.
The log may be"
eerror " ${DATA_DIR%/}/postmaster.log"
eerror "Or wherever you configured PostgreSQL @SLOT@ log messages to be
sent."
eend $retval
return $retval
fi
eend $retval
}
stop() {
local seconds=$(( ${NICE_TIMEOUT} + ${RUDE_TIMEOUT} + ${FORCE_TIMEOUT} ))
ebegin "Stopping PostgreSQL (this can take up to ${seconds} seconds)"
local retval
local retries=SIGTERM/${NICE_TIMEOUT}
if [ "${RUDE_QUIT}" != "NO" ] ; then
einfo "RUDE_QUIT enabled."
retries="${retries}/SIGINT/${RUDE_TIMEOUT}"
fi
if [ "${FORCE_QUIT}" = "YES" ] ; then
einfo "FORCE_QUIT enabled."
ewarn "A recover-run might be executed on next startup."
retries="${retries}/SIGQUIT/${FORCE_TIMEOUT}"
fi
# Loops through nice, rude, and force quit in one go.
start-stop-daemon --stop \
--exec /usr/@LIBDIR@/postgresql-@SLOT@/bin/postgres \
--retry ${retries} \
--pidfile ${DATA_DIR%/}/postmaster.pid
eend
}
reload() {
ebegin "Reloading PostgreSQL configuration"
kill -HUP $(head -n1 ${DATA_DIR%/}/postmaster.pid)
eend $?
}
1.1 dev-db/postgresql/files/postgresql.service
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.service?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.service?rev=1.1&content-type=text/plain
Index: postgresql.service
===================================================================
# It's not recommended to modify this file in-place, because it will be
# overwritten during package upgrades. If you want to customize, the
# best way is to create file
# "/etc/systemd/system/postgresql-@[email protected]/*.conf"
# containing your changes
# For example, if you want to change the server's port number to 5433,
# create a file named
# "/etc/systemd/system/postgresql-@[email protected]/port.conf"
# containing:
# [Service]
# Environment=PGPORT=5433
# This will override the setting appearing below.
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
# Port number for server to listen on
Environment=PGPORT=5432
# Location of configuration files
Environment=PGDATA=/etc/postgresql-@SLOT@
# Where the data directory is located
Environment=DATA_DIR=/var/lib/postgresql/@SLOT@/data
# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog
ExecStartPre=/usr/bin/postgresql-@SLOT@-check-db-dir
ExecStart=/usr/@LIBDIR@/postgresql-@SLOT@/bin/pg_ctl start -D ${DATA_DIR} -s -l
${DATA_DIR}/postmaster.log -o "-p ${PGPORT} -D ${PGDATA}
--data-directory=${DATA_DIR}" -w -t 300
ExecStop=/usr/@LIBDIR@/postgresql-@SLOT@/bin/pg_ctl stop -D ${DATA_DIR} -s -m
fast
ExecReload=/usr/@LIBDIR@/postgresql-@SLOT@/bin/pg_ctl reload -D ${DATA_DIR} -s
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300
# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
[Install]
WantedBy=multi-user.target
1.1 dev-db/postgresql/files/postgresql-check-db-dir
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql-check-db-dir?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql-check-db-dir?rev=1.1&content-type=text/plain
Index: postgresql-check-db-dir
===================================================================
#!/bin/sh
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header:
/var/cvsroot/gentoo-x86/dev-db/postgresql/files/postgresql-check-db-dir,v 1.1
2014/12/28 18:07:22 titanofold Exp $
eerror() {
echo "$@" >&2
}
# Check that DATA_DIR has been set
if [ -z ${DATA_DIR} ] ; then
eerror "DATA_DIR not set"
exit 1
fi
# Check that DATA_DIR exists
if [ ! -d ${DATA_DIR} ] ; then
eerror "Directory not found: ${DATA_DIR}"
eerror "HINT: Ensure that DATA_DIR points to the right path."
eerror "HINT: Or perhaps you need to create the database cluster:"
eerror " emerge --config dev-db/postgresql:@SLOT@"
exit 1
fi
# Check for the existence of PostgreSQL's config files, and set the
# proper mode and ownership.
# Only three files should be checked as potentially other files
# may be in PGDATA that should not be touched.
for file in postgresql pg_hba pg_ident ; do
file="${PGDATA%/}/${file}.conf"
if [ ! -f ${file} ] ; then
eerror "${file} not found"
eerror "HINT: mv ${DATA_DIR%/}/*.conf ${PGDATA}"
exit 1
fi
done
1.1 dev-db/postgresql/files/postgresql.confd
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.confd?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.confd?rev=1.1&content-type=text/plain
Index: postgresql.confd
===================================================================
# Which port and socket to bind PostgreSQL
PGPORT="5432"
# How long to wait for server to start in seconds
START_TIMEOUT=10
# NICE_QUIT ignores new connections and wait for clients to disconnect from
# server before shutting down. NICE_TIMEOUT in seconds determines how long to
# wait for this to succeed.
NICE_TIMEOUT=60
# Forecfully disconnect clients from server and shut down. This is performed
# after NICE_QUIT. Terminated client connections have their open transactions
# rolled back.
# Set RUDE_QUIT to "NO" to disable. RUDE_TIMEOUT in seconds.
RUDE_QUIT="YES"
RUDE_TIMEOUT=30
# If the server still fails to shutdown, you can force it to quit by setting
# this to YES and a recover-run will execute on the next startup.
# Set FORCE_QUIT to "YES" to enable. FORCE_TIMEOUT in seconds.
FORCE_QUIT="NO"
FORCE_TIMEOUT=2
# Extra options to run postmaster with, e.g.:
# -N is the maximal number of client connections
# -B is the number of shared buffers and has to be at least 2x the value for -N
# Please read the man-page to postmaster for more options. Many of these
# options can be set directly in the configuration file.
#PGOPTS="-N 512 -B 1024"
# Pass extra environment variables. If you have to export environment variables
# for the database process, this can be done here.
# Don't forget to escape quotes.
#PG_EXTRA_ENV="PGPASSFILE=\"/path/to/.pgpass\""
##############################################################################
#
# The following values should not be arbitrarily changed.
#
# `emerge --config dev-db/postgresql:@SLOT@' uses these values to
# determine where to create the data directory, where to place the
# configuration files, and any additional options to pass to initdb.
#
# The initscript also uses these variables to inform PostgreSQL where to find
# its data directory and configuration files.
#
##############################################################################
# Location of configuration files
PGDATA="/etc/postgresql-@SLOT@/"
# Where the data directory is located/to be created
DATA_DIR="/var/lib/postgresql/@SLOT@/data"
# Additional options to pass to initdb.
# See `man initdb' for available options.
PG_INITDB_OPTS="--encoding=UTF8"
1.4 dev-db/postgresql/files/postgresql.init
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.init?rev=1.4&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.init?rev=1.4&content-type=text/plain
diff :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.init?r1=1.3&r2=1.4
1.1 dev-db/postgresql/files/postgresql.tmpfilesd
file :
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.tmpfilesd?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-db/postgresql/files/postgresql.tmpfilesd?rev=1.1&content-type=text/plain
Index: postgresql.tmpfilesd
===================================================================
d /run/postgresql 1775 postgres postgres -