mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-23 09:47:30 -08:00
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
139 lines
4.1 KiB
Plaintext
139 lines
4.1 KiB
Plaintext
#!/sbin/runscript
|
|
# Copyright 1999-2014 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
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 \
|
|
--exec /usr/@LIBDIR@/postgresql-@SLOT@/bin/pg_ctl \
|
|
-- start -s -w -t ${START_TIMEOUT} -l ${DATA_DIR%/}/postmaster.log \
|
|
-D ${PGDATA} -o "--data-directory=${DATA_DIR} ${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 $?
|
|
}
|