From: Patrick Lauer Date: Mon, 27 Aug 2018 08:23:00 +0000 (+0200) Subject: dev-db/pgbouncer: Bump X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=f3013a2f9556db788c5f7889a69fe2c7d6e50992;p=gentoo.git dev-db/pgbouncer: Bump Also fixes PIDFILE in init.d/conf.d to allow multi-instance operation Package-Manager: Portage-2.3.48, Repoman-2.3.10 --- diff --git a/dev-db/pgbouncer/Manifest b/dev-db/pgbouncer/Manifest index c49eebee4d69..1bea33dfbbaa 100644 --- a/dev-db/pgbouncer/Manifest +++ b/dev-db/pgbouncer/Manifest @@ -1 +1,2 @@ DIST pgbouncer-1.8.1.tar.gz 465930 BLAKE2B 692c551cb7bfb56bfe1b354791b06bdf61866197150a78a7fa9688891a2e4cd3c015abc5fbe33bf66dc85ab0ae83745f2db852eae91ae99596c97be0154e8bd5 SHA512 595a94db98866cec211f2b8c1ad13d209dba00e5fd41f2e9025aabdcb660194f0f772810270a1d9f067c3039c9fee630e8ff2d56f231935add17207aecc10bee +DIST pgbouncer-1.9.0.tar.gz 469300 BLAKE2B 466f171a49ec9ce9be9a9d3208780cfbff956da7c74ec4332c7104ea537cb47a5cfdc0d80bbd96d233769b6f430f1ad99b623caefa2dc93af7ba336dd0f49514 SHA512 b127f4cb60ca5cdf339da76727918f0a3797a3e0a89f8ed6fdcaa80f3391d2c5bb51e19731915775210c0e5070dd611ee2e410c9a947624e45b5cf11aecdacf9 diff --git a/dev-db/pgbouncer/files/pgbouncer.confd-r1 b/dev-db/pgbouncer/files/pgbouncer.confd-r1 new file mode 100644 index 000000000000..dbb93b917e7c --- /dev/null +++ b/dev-db/pgbouncer/files/pgbouncer.confd-r1 @@ -0,0 +1,15 @@ +# Location of configuration file for PgBouncer. +INIFILE="/etc/pgbouncer.ini" + +PIDFILE="/run/pgbouncer.pid" + + +# How long to wait in seconds for a safe shutdown. Equivalent to +# issuing 'PAUSE;' and 'SHUTDOWN;' on psql console. (See 'man 1 pgbouncer'.) +NICE_TIMEOUT=60 + +# Set to 'YES' to perform an immediate shutdown if the nice shutdown +# doesn't work. Same as issuing 'SHUTDOWN;' on console. (See 'man 1 +# pgbouncer'.) +FORCE_QUIT="no" +FORCE_QUIT_TIMEOUT=2 diff --git a/dev-db/pgbouncer/files/pgbouncer.initd-r2 b/dev-db/pgbouncer/files/pgbouncer.initd-r2 new file mode 100644 index 000000000000..a2a79a0784a7 --- /dev/null +++ b/dev-db/pgbouncer/files/pgbouncer.initd-r2 @@ -0,0 +1,81 @@ +#!/sbin/openrc-run + +extra_started_commands="reload" + +depend() { + use net + after postgresql +} + +get_config() { + [ -f "${INIFILE}" ] || eend 1 "'${INIFILE}' not found" + + eval echo $(sed -e 's:;.*::' "${INIFILE}" | \ + awk '$1 == "'$1'" { print ($2 == "=" ? $3 : $2) }') +} + +start_pre() { + local s="$(get_config unix_socket_dir)" + + if [ -n "${s}" ] ; then + checkpath -o root:postgres -m 1775 -d "${s}" || return 1 + + local listen_port="$(get_config listen_port)" + + if [ -e "${s%/}/.s.PGSQL.${listen_port}" ] ; then + eerror "Socket conflict." + eerror "A server is already listening on:" + eerror " ${s%/}/.s.PGSQL.${listen_port}" + eerror "HINT: Change listen_port in pgbouncer.ini to listen on a" + eerror "different socket." + return 1 + fi + fi + + checkpath -o pgbouncer:postgres -m 0755 \ + -d "$(dirname $(get_config logfile))" || return 1 + checkpath -o pgbouncer:postgres -m 0640 \ + -f "$(get_config logfile)" || return 1 + + return 0 +} + +start() { + ebegin "Starting PgBouncer" + [ -f ${PIDFILE} ] && rm ${PIDFILE} + + start-stop-daemon --start \ + --pidfile ${PIDFILE} \ + --background \ + --make-pidfile \ + --user pgbouncer \ + --exec /usr/bin/pgbouncer \ + -- -q "${INIFILE}" + eend $? +} + +stop() { + local seconds=$(( ${NICE_TIMEOUT} + ${FORCE_QUIT_TIMEOUT} )) + ebegin "Stopping PgBouncer (this can take up to ${seconds} seconds)" + + local retries=SIGINT/${NICE_TIMEOUT} + + if [ "${FORCE_QUIT}" = "YES" ] ; then + einfo "FORCE_QUIT enabled." + retries="${retries}/SIGTERM/${FORCE_QUIT_TIMEOUT}" + fi + + # Loops through nice and force quit in one go. + start-stop-daemon --stop \ + --user pgbouncer \ + --pidfile ${PIDFILE} \ + --retry ${retries} + + eend $? +} + +reload() { + ebegin "Reloading PgBouncer configuration from '${INIFILE}'" + start-stop-daemon --signal HUP --pidfile ${PIDFILE} + eend $? +} diff --git a/dev-db/pgbouncer/pgbouncer-1.9.0.ebuild b/dev-db/pgbouncer/pgbouncer-1.9.0.ebuild new file mode 100644 index 000000000000..46b5a23edb21 --- /dev/null +++ b/dev-db/pgbouncer/pgbouncer-1.9.0.ebuild @@ -0,0 +1,86 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="6" + +inherit user + +DESCRIPTION="Lightweight connection pooler for PostgreSQL" +HOMEPAGE="https://pgbouncer.github.io" +SRC_URI="https://pgbouncer.github.io/downloads/files/${PV}/${P}.tar.gz" +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+c-ares debug doc pam ssl -udns" + +# At-most-one-of, one can be enabled but not both +REQUIRED_USE="?? ( c-ares udns )" + +RDEPEND=" + >=dev-libs/libevent-2.0 + >=sys-libs/glibc-2.10 + c-ares? ( >=net-dns/c-ares-1.10 ) + ssl? ( >=dev-libs/openssl-1.0.1:=[-bindist] ) + udns? ( >=net-libs/udns-0.1 ) +" + +DEPEND="${RDEPEND}" + +pkg_setup() { + enewgroup postgres 70 + enewuser postgres 70 /bin/bash /var/lib/postgresql postgres + + enewuser pgbouncer -1 -1 -1 postgres +} + +src_prepare() { + eapply "${FILESDIR}/pgbouncer-1.8-dirs.patch" + + default +} + +src_configure() { + # --enable-debug is only used to disable stripping + econf \ + --docdir=/usr/share/doc/${PF} \ + --enable-debug \ + $(use_with c-ares cares) \ + $(use_enable debug cassert) \ + $(use_with pam) \ + $(use_with ssl openssl) \ + $(use_with udns) +} + +src_test() { + cd "${S}/test" + emake +} + +src_install() { + emake DESTDIR="${D}" install + + dodoc AUTHORS + use doc && dodoc doc/*.rst + + newconfd "${FILESDIR}/${PN}.confd-r1" "${PN}" + newinitd "${FILESDIR}/${PN}.initd-r2" "${PN}" + + insinto /etc + doins etc/pgbouncer.ini + + insinto /etc/logrotate.d + newins "${FILESDIR}/logrotate" pgbouncer +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] ; then + einfo "Please read the config.txt for Configuration Directives" + einfo + einfo "For Administration Commands, see:" + einfo " man pgbouncer" + einfo + einfo "By default, PgBouncer does not have access to any database." + einfo "GRANT the permissions needed for your application and make sure that it" + einfo "exists in PgBouncer's auth_file." + fi +}