Skip to content

Commit

Permalink
dev-db/pgbouncer: Bump
Browse files Browse the repository at this point in the history
Also fixes PIDFILE in init.d/conf.d to allow multi-instance operation

Package-Manager: Portage-2.3.48, Repoman-2.3.10
  • Loading branch information
patricklauer committed Aug 27, 2018
1 parent 2fae7cb commit f3013a2
Show file tree
Hide file tree
Showing 4 changed files with 183 additions and 0 deletions.
1 change: 1 addition & 0 deletions dev-db/pgbouncer/Manifest
Original file line number Diff line number Diff line change
@@ -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
15 changes: 15 additions & 0 deletions dev-db/pgbouncer/files/pgbouncer.confd-r1
Original file line number Diff line number Diff line change
@@ -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
81 changes: 81 additions & 0 deletions dev-db/pgbouncer/files/pgbouncer.initd-r2
Original file line number Diff line number Diff line change
@@ -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 $?
}
86 changes: 86 additions & 0 deletions dev-db/pgbouncer/pgbouncer-1.9.0.ebuild
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit f3013a2

Please sign in to comment.