diff --git a/conf.d/postgresql-9.4 b/conf.d/postgresql-9.4 new file mode 100644 index 0000000..d83491e --- /dev/null +++ b/conf.d/postgresql-9.4 @@ -0,0 +1,58 @@ +# 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:9.4' 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-9.4/" + +# Where the data directory is located/to be created +DATA_DIR="/var/lib/postgresql/9.4/data" + +# Additional options to pass to initdb. +# See `man initdb' for available options. +PG_INITDB_OPTS="--encoding=UTF8" diff --git a/env.d/50postgresql b/env.d/50postgresql new file mode 100644 index 0000000..c72ad59 --- /dev/null +++ b/env.d/50postgresql @@ -0,0 +1,4 @@ +# Configuration file for eselect +# This file has been automatically generated. +LDPATH="/usr/lib/postgresql:/usr/lib64/postgresql:/usr/lib64/postgresql-9.4/lib64/" +MANPATH="/usr/share/postgresql/man/:/usr/share/postgresql-9.4/man/" diff --git a/eselect/postgresql/active b/eselect/postgresql/active new file mode 100644 index 0000000..0359f24 --- /dev/null +++ b/eselect/postgresql/active @@ -0,0 +1 @@ +9.4 diff --git a/eselect/postgresql/active.links b/eselect/postgresql/active.links new file mode 100644 index 0000000..aebfefe --- /dev/null +++ b/eselect/postgresql/active.links @@ -0,0 +1,55 @@ +usr/include/postgresql +usr/include/libpq-fe.h +usr/include/pg_config_ext.h +usr/include/pg_config_manual.h +usr/include/libpq +usr/include/postgres_ext.h +usr/lib64/postgresql +usr/lib64/libpq.so.5 +usr/lib64/libpgtypes.so.3 +usr/lib64/libpqwalreceiver.so +usr/lib64/libecpg_compat.so.3 +usr/lib64/libpgtypes.so +usr/lib64/libpgtypes.so.3.5 +usr/lib64/libecpg_compat.so +usr/lib64/libpq.so +usr/lib64/libpq.so.5.7 +usr/lib64/libecpg.so.6.6 +usr/lib64/libecpg.so +usr/lib64/libecpg.so.6 +usr/lib64/libecpg_compat.so.3.6 +usr/bin/pg_receivexlog +usr/bin/droplang +usr/bin/pg_basebackup +usr/bin/vacuumdb +usr/bin/pg_standby +usr/bin/pg_xlogdump +usr/bin/pg_resetxlog +usr/bin/clusterdb +usr/bin/pg_archivecleanup +usr/bin/postgres +usr/bin/vacuumlo +usr/bin/pgbench +usr/bin/pg_controldata +usr/bin/initdb +usr/bin/pg_upgrade +usr/bin/pg_ctl +usr/bin/createlang +usr/bin/oid2name +usr/bin/pg_test_fsync +usr/bin/ecpg +usr/bin/pg_recvlogical +usr/bin/pg_dump +usr/bin/dropdb +usr/bin/pg_dumpall +usr/bin/createuser +usr/bin/pg_isready +usr/bin/pg_restore +usr/bin/postmaster +usr/bin/pg_test_timing +usr/bin/dropuser +usr/bin/createdb +usr/bin/psql +usr/bin/pg_config +usr/bin/reindexdb +usr/share/postgresql diff --git a/eselect/postgresql/active.links94 b/eselect/postgresql/active.links94 new file mode 100644 index 0000000..bead136 --- /dev/null +++ b/eselect/postgresql/active.links94 @@ -0,0 +1,34 @@ +usr/bin/pg_receivexlog94 +usr/bin/droplang94 +usr/bin/pg_basebackup94 +usr/bin/vacuumdb94 +usr/bin/pg_standby94 +usr/bin/pg_xlogdump94 +usr/bin/pg_resetxlog94 +usr/bin/clusterdb94 +usr/bin/pg_archivecleanup94 +usr/bin/postgres94 +usr/bin/vacuumlo94 +usr/bin/pgbench94 +usr/bin/pg_controldata94 +usr/bin/initdb94 +usr/bin/pg_upgrade94 +usr/bin/pg_ctl94 +usr/bin/createlang94 +usr/bin/oid2name94 +usr/bin/pg_test_fsync94 +usr/bin/ecpg94 +usr/bin/pg_recvlogical94 +usr/bin/pg_dump94 +usr/bin/dropdb94 +usr/bin/pg_dumpall94 +usr/bin/createuser94 +usr/bin/pg_isready94 +usr/bin/pg_restore94 +usr/bin/postmaster94 +usr/bin/pg_test_timing94 +usr/bin/dropuser94 +usr/bin/createdb94 +usr/bin/psql94 +usr/bin/pg_config94 +usr/bin/reindexdb94 diff --git a/eselect/postgresql/slots/9.4/base b/eselect/postgresql/slots/9.4/base new file mode 100644 index 0000000..380fd5b --- /dev/null +++ b/eselect/postgresql/slots/9.4/base @@ -0,0 +1 @@ +postgres_ebuilds="${postgres_ebuilds} postgresql-9.4.4" diff --git a/init.d/postgresql-9.4 b/init.d/postgresql-9.4 new file mode 100755 index 0000000..c6eb749 --- /dev/null +++ b/init.d/postgresql-9.4 @@ -0,0 +1,143 @@ +#!/sbin/runscript +# Copyright 1999-2015 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_paths=$(get_config unix_socket_directories) +: ${socket_paths:=/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-9.4" + 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:9.4" + 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 paths and create it if + # it doesn't exist. + set -f; IFS=',' + local s + for s in ${socket_paths}; do + checkpath -d -m 1775 -o postgres:postgres ${s} + if [ -e ${s%/}/.s.PGSQL.${configured_port} ] ; then + eerror "Socket conflict." + eerror "A server is already listening on:" + eerror " ${s%/}/.s.PGSQL.${configured_port}" + eerror "HINT: Change PGPORT to listen on a different socket." + return 1 + fi + done + set +f; unset IFS +} + +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/lib64/postgresql-9.4/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 9.4 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/lib64/postgresql-9.4/bin/postgres \ + --retry ${retries} \ + --pidfile ${DATA_DIR%/}/postmaster.pid + + eend +} + +reload() { + ebegin "Reloading PostgreSQL configuration" + kill -HUP $(head -n1 ${DATA_DIR%/}/postmaster.pid) + eend $? +} diff --git a/ld.so.conf b/ld.so.conf index 150b63c..d1fb423 100644 --- a/ld.so.conf +++ b/ld.so.conf @@ -16,6 +16,9 @@ include ld.so.conf.d/*.conf /usr/lib64/opengl/nvidia/lib /usr/lib32/qt4 /usr/lib64/qt4 +/usr/lib/postgresql +/usr/lib64/postgresql +/usr/lib64/postgresql-9.4/lib64/ /usr/lib64/gnat-gcc/x86_64-pc-linux-gnu/4.3 /usr/lib64/gnat-gcc/x86_64-pc-linux-gnu/4.3/adalib /opt/nvidia-cg-toolkit/lib32 diff --git a/pam.d/postgresql-9.4 b/pam.d/postgresql-9.4 new file mode 100644 index 0000000..b94d487 --- /dev/null +++ b/pam.d/postgresql-9.4 @@ -0,0 +1,6 @@ +# File autogenerated by pamd_mimic in pam eclass + + +auth include system-auth +account include system-auth +session include system-auth diff --git a/postgresql-9.4/psqlrc b/postgresql-9.4/psqlrc new file mode 100644 index 0000000..8152cac --- /dev/null +++ b/postgresql-9.4/psqlrc @@ -0,0 +1,8 @@ +-- +-- system-wide psql configuration file +-- +-- This file is read before the .psqlrc file in the user's home directory. +-- +-- Copy this to your installation's sysconf directory and rename it psqlrc. +-- The sysconf directory can be identified via "pg_config --sysconfdir". +-- diff --git a/prelink.conf b/prelink.conf index ea14146..deda533 100644 --- a/prelink.conf +++ b/prelink.conf @@ -32,6 +32,9 @@ -h /usr/lib64/opengl/nvidia/lib/ -h /usr/lib32/qt4/ -h /usr/lib64/qt4/ +-h /usr/lib/postgresql/ +-h /usr/lib64/postgresql/ +-h /usr/lib64/postgresql-9.4/lib64/ -h /usr/lib64/gnat-gcc/x86_64-pc-linux-gnu/4.3/ -h /usr/lib64/gnat-gcc/x86_64-pc-linux-gnu/4.3/adalib/ -h /opt/nvidia-cg-toolkit/lib32/ diff --git a/profile.csh b/profile.csh index 690d0d3..b5b880f 100644 --- a/profile.csh +++ b/profile.csh @@ -2,7 +2,7 @@ # This file has been automatically generated. setenv PATH '/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.3:/usr/x86_64-pc-linux-gnu/gnat-gcc-bin/4.3:/usr/libexec/gnat-gcc/x86_64-pc-linux-gnu/4.3:/opt/nvidia-cg-toolkit/bin:/usr/games/bin' setenv ROOTPATH '/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.3:/usr/x86_64-pc-linux-gnu/gnat-gcc-bin/4.3:/usr/libexec/gnat-gcc/x86_64-pc-linux-gnu/4.3:/opt/nvidia-cg-toolkit/bin' -setenv MANPATH '/usr/local/share/man:/usr/share/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.3/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.24/man:/usr/lib64/php5.6/man/:/usr/share/gnat-gcc-data/x86_64-pc-linux-gnu/4.3/man' +setenv MANPATH '/usr/local/share/man:/usr/share/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.3/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.24/man:/usr/lib64/php5.6/man/:/usr/share/postgresql/man/:/usr/share/postgresql-9.4/man/:/usr/share/gnat-gcc-data/x86_64-pc-linux-gnu/4.3/man' setenv INFOPATH '/usr/share/info:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.3/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.24/info:/usr/share/gnat-gcc-data/x86_64-pc-linux-gnu/4.3/info' setenv CONFIG_PROTECT_MASK '/etc/gentoo-release /etc/sandbox.d /etc/php/cli-php5.6/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/apache2-php5.6/ext-active/ /etc/fonts/fonts.conf /etc/gconf /etc/terminfo /etc/dconf /etc/ca-certificates.conf /etc/texmf/web2c /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/revdep-rebuild' setenv CVS_RSH 'ssh' diff --git a/profile.env b/profile.env index f063567..e30aa51 100644 --- a/profile.env +++ b/profile.env @@ -2,7 +2,7 @@ # This file has been automatically generated. export PATH='/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.3:/usr/x86_64-pc-linux-gnu/gnat-gcc-bin/4.3:/usr/libexec/gnat-gcc/x86_64-pc-linux-gnu/4.3:/opt/nvidia-cg-toolkit/bin:/usr/games/bin' export ROOTPATH='/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.3:/usr/x86_64-pc-linux-gnu/gnat-gcc-bin/4.3:/usr/libexec/gnat-gcc/x86_64-pc-linux-gnu/4.3:/opt/nvidia-cg-toolkit/bin' -export MANPATH='/usr/local/share/man:/usr/share/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.3/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.24/man:/usr/lib64/php5.6/man/:/usr/share/gnat-gcc-data/x86_64-pc-linux-gnu/4.3/man' +export MANPATH='/usr/local/share/man:/usr/share/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.3/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.24/man:/usr/lib64/php5.6/man/:/usr/share/postgresql/man/:/usr/share/postgresql-9.4/man/:/usr/share/gnat-gcc-data/x86_64-pc-linux-gnu/4.3/man' export INFOPATH='/usr/share/info:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.9.3/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.24/info:/usr/share/gnat-gcc-data/x86_64-pc-linux-gnu/4.3/info' export CONFIG_PROTECT_MASK='/etc/gentoo-release /etc/sandbox.d /etc/php/cli-php5.6/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/apache2-php5.6/ext-active/ /etc/fonts/fonts.conf /etc/gconf /etc/terminfo /etc/dconf /etc/ca-certificates.conf /etc/texmf/web2c /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/revdep-rebuild' export CVS_RSH='ssh'