From f23b7fc839c9bc4f90f0772d1543a927f066c493 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Mon, 20 Jul 2020 10:19:36 -0600 Subject: [PATCH] pgbouncer: import from aports --- sr.ht/pgbouncer/APKBUILD | 54 ++++++++++++++++ sr.ht/pgbouncer/pgbouncer-dirs.patch | 26 ++++++++ sr.ht/pgbouncer/pgbouncer.confd | 19 ++++++ sr.ht/pgbouncer/pgbouncer.initd | 92 +++++++++++++++++++++++++++ sr.ht/pgbouncer/pgbouncer.logrotate | 7 ++ sr.ht/pgbouncer/pgbouncer.pre-install | 3 + 6 files changed, 201 insertions(+) create mode 100644 sr.ht/pgbouncer/APKBUILD create mode 100644 sr.ht/pgbouncer/pgbouncer-dirs.patch create mode 100644 sr.ht/pgbouncer/pgbouncer.confd create mode 100644 sr.ht/pgbouncer/pgbouncer.initd create mode 100644 sr.ht/pgbouncer/pgbouncer.logrotate create mode 100644 sr.ht/pgbouncer/pgbouncer.pre-install diff --git a/sr.ht/pgbouncer/APKBUILD b/sr.ht/pgbouncer/APKBUILD new file mode 100644 index 0000000..1e9052d --- /dev/null +++ b/sr.ht/pgbouncer/APKBUILD @@ -0,0 +1,54 @@ +# Contributor: Francesco Colista +# Maintainer: Francesco Colista +pkgname=pgbouncer +pkgver=1.14.0 +pkgrel=1 +pkgdesc="A lightweight connection pooler for PostgreSQL" +url="https://wiki.postgresql.org/wiki/PgBouncer" +arch="all" +license="BSD" +pkgusers="pgbouncer" +pkggroups="postgres" +install="$pkgname.pre-install" +makedepends="c-ares-dev libevent-dev openssl-dev udns-dev" +subpackages="$pkgname-doc $pkgname-openrc" +source="https://pgbouncer.github.io/downloads/files/$pkgver/$pkgname-$pkgver.tar.gz + $pkgname.initd + $pkgname.confd + $pkgname.logrotate + pgbouncer-dirs.patch + " +builddir="$srcdir/$pkgname-$pkgver" + +build() { + cd "$builddir" + ./configure \ + --prefix=/usr \ + --disable-debug + make +} + +check() { + cd "$builddir" + ./pgbouncer --version + make -C test +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install + + cd "$pkgdir" + install -m 755 -D "$srcdir"/$pkgname.initd ./etc/init.d/$pkgname + install -m 644 -D "$srcdir"/$pkgname.confd ./etc/conf.d/$pkgname + install -m 644 -D "$srcdir"/$pkgname.logrotate ./etc/logrotate.d/$pkgname + install -m 644 -D "$builddir"/etc/$pkgname.ini ./etc/$pkgname/$pkgname.ini + + install -d -m 755 -o $pkgusers -g $pkggroups ./var/log/$pkgname +} + +sha512sums="506810c9896a45d67fbc97c3027572278b3857635c222cfaa53b4f3893069cfbee2ec92facd6f387de217bb3170045410b88a7cea09a45686661a2d2ccc85271 pgbouncer-1.14.0.tar.gz +c3b9766eab63e9bf7b21fff7859e094d71530f7e235668f416e81f988cce229835659ea78c22a44859ab116d6fe57c45f4df8acba475ef50835b3bbe3c154a19 pgbouncer.initd +808621351b0f5973427fa22f63128432b00ac20fd25af437e8148dad9e55185775aba612b6ecdd58e4a6f2450b8c7838fcace288845b9b3cd0236bbe168aa574 pgbouncer.confd +83b869466b59c1b1d6e316a9368f725181128c1f5a7af230e3fa9c58ccda1bc097db182806c1c51a5121692791ec83d9eb0f5718fb3031f521bb537001153e2d pgbouncer.logrotate +f45170465fda5190257e3f4c10e22fe7df57657efc90bdd6a3f0727375a25143e07480ecd998995cec0ddb2ed2d472f996b21e4fe712681418215823b88d0fc3 pgbouncer-dirs.patch" diff --git a/sr.ht/pgbouncer/pgbouncer-dirs.patch b/sr.ht/pgbouncer/pgbouncer-dirs.patch new file mode 100644 index 0000000..46e6c7b --- /dev/null +++ b/sr.ht/pgbouncer/pgbouncer-dirs.patch @@ -0,0 +1,26 @@ +diff --git a/etc/pgbouncer.ini b/etc/pgbouncer.ini +index fed4a9f..f5204c2 100644 +--- a/etc/pgbouncer.ini ++++ b/etc/pgbouncer.ini +@@ -43,7 +43,7 @@ + ;;; + + logfile = /var/log/pgbouncer/pgbouncer.log +-pidfile = /var/run/pgbouncer/pgbouncer.pid ++pidfile = + + ;;; + ;;; Where to wait for clients +@@ -55,9 +55,9 @@ listen_port = 6432 + + ;; Unix socket is also used for -R. + ;; On Debian it should be /var/run/postgresql +-;unix_socket_dir = /tmp +-;unix_socket_mode = 0777 +-;unix_socket_group = ++unix_socket_dir = /run/postgresql ++unix_socket_mode = 0777 ++unix_socket_group = postgres + + ;;; + ;;; TLS settings for accepting clients diff --git a/sr.ht/pgbouncer/pgbouncer.confd b/sr.ht/pgbouncer/pgbouncer.confd new file mode 100644 index 0000000..c5408bb --- /dev/null +++ b/sr.ht/pgbouncer/pgbouncer.confd @@ -0,0 +1,19 @@ +# Configuration file for /etc/init.d/pgbouncer + +# Location of configuration file for PgBouncer. +#cfgfile="/etc/pgbouncer/pgbouncer.ini" + +# The user to run PgBouncer as. +#user=pgbouncer + +# The group to run PgBouncer as. +#group=postgresql + +# How long to wait in seconds for a safe shutdown. Equivalent to +# issuing 'PAUSE;' and 'SHUTDOWN;' on psql console. See pgbouncer(1). +#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 pgbouncer(1). +#force_quit=="no" +#force_quit_timeout=2 diff --git a/sr.ht/pgbouncer/pgbouncer.initd b/sr.ht/pgbouncer/pgbouncer.initd new file mode 100644 index 0000000..802737d --- /dev/null +++ b/sr.ht/pgbouncer/pgbouncer.initd @@ -0,0 +1,92 @@ +#!/sbin/openrc-run + +extra_started_commands="reload" + +: ${user:="pgbouncer"} +: ${group:="postgresql"} +: ${cfgfile:="/etc/pgbouncer/pgbouncer.ini"} +: ${nice_timeout:=60} +: ${force_quit:="no"} +: ${force_quit_timeout:=2} + +name="PgBouncer" +command="/usr/bin/pgbouncer" +command_args="-q $cfgfile" +command_background="yes" + +pidfile="/run/$RC_SVCNAME.pid" +start_stop_daemon_args=" + --user $user + --group $group" + +required_files="$cfgfile" + +depend() { + use net + after postgresql +} + +start_pre() { + local socket_dir=$(get_config unix_socket_dir) + if [ -n "$socket_dir" ]; then + checkpath -d -m 0775 -o postgres:postgres "$socket_dir" || return 1 + fi + + local logfile="$(get_config logfile)" + if [ -n "$logfile" ]; then + checkpath -f -m 0640 -o $user:$group "$logfile" || return 1 + fi +} + +stop() { + local retry="SIGINT/$nice_timeout" + yesno "$force_quit" \ + && retry="$retry/SIGTERM/$force_quit_timeout" \ + || force_quit_timeout=0 + + local seconds=$(( $nice_timeout + $force_quit_timeout )) + + ebegin "Stopping $seconds (this can take up to $seconds seconds)" + + start-stop-daemon --stop \ + --pidfile "$pidfile" \ + --retry "$retry" \ + --progress \ + --exec "$command" + eend $? +} + +restart() { + local socket_dir=$(get_config unix_socket_dir) + + if [ -n "$socket_dir" ]; then + ebegin "Performing online restart of $name" + "$command" -R "$command_args" + eend $? + else + stop && start + fi +} + +reload() { + ebegin "Reloading $name configuration" + start-stop-daemon --signal HUP --pidfile "$pidfile" + eend $? +} + +get_config() { + local name="$1" + local default="${2:-}" + + if [ ! -f "$cfgfile" ]; then + printf '%s\n' "$default" + return 1 + fi + sed -En "/^\s*${name}\b/{ # find line starting with the name + s/^\s*${name}\s*=?\s*([^#]+).*/\1/; # capture the value + s/\s*$//; # trim trailing whitespaces + s/^['\"](.*)['\"]$/\1/; # remove delimiting quotes + p + }" "$conffile" \ + | grep . || printf '%s\n' "$default" +} diff --git a/sr.ht/pgbouncer/pgbouncer.logrotate b/sr.ht/pgbouncer/pgbouncer.logrotate new file mode 100644 index 0000000..78b8251 --- /dev/null +++ b/sr.ht/pgbouncer/pgbouncer.logrotate @@ -0,0 +1,7 @@ +/var/log/pgbouncer/pgbouncer.log { + missingok + sharedscripts + postrotate + /etc/init.d/pgbouncer --quiet --ifstarted reload + endscript +} diff --git a/sr.ht/pgbouncer/pgbouncer.pre-install b/sr.ht/pgbouncer/pgbouncer.pre-install new file mode 100644 index 0000000..609b3a9 --- /dev/null +++ b/sr.ht/pgbouncer/pgbouncer.pre-install @@ -0,0 +1,3 @@ +#!/bin/sh +adduser -S -D -H -h /dev/null -s /sbin/nologin -G postgres -g pgbouncer pgbouncer 2>/dev/null +exit 0 -- 2.45.2