# Contributor: Cameron <cbanta@gmail.com>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=pgpool
pkgver=4.6.1
_pkgver="${pkgver//./_}"
pkgrel=0
pkgdesc="A connection pooling/replication server for PostgreSQL"
url="https://www.pgpool.net/"
arch="all"
license="custom"
makedepends="
	autoconf
	automake
	bison
	flex
	libpq-dev
	libtool
	linux-headers
	openssl-dev
	postgresql-dev
	"
pkgusers="postgres"
pkggroups="postgres"
install="$pkgname.pre-install $pkgname.post-upgrade"
subpackages="$pkgname-openrc $pkgname-doc $pkgname-static $pkgname-dev"
source="https://github.com/pgpool/pgpool2/archive/V$_pkgver/pgpool2-$_pkgver.tar.gz
	missing-include.patch
	$pkgname.initd
	$pkgname.confd
	$pkgname.logrotated
	fix-snprintf.patch
	fix-time_t.patch
	"
builddir="$srcdir/pgpool2-$_pkgver"

# secfixes:
#   4.5.4-r0:
#     - CVE-2024-45624

prepare() {
	default_prepare

	autoreconf -fiv

	# Fix listen address.
	# pgpool resolves localhost to ::1 (IPv6) and fails to bind on ::1:9999.
	sed -Ei "s/^(listen_addresses\s*=\s*)'localhost'/\1'127.0.0.1'/" \
		src/sample/pgpool.conf*
}

build() {
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc/$pkgname \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--with-openssl \
		--disable-rpath
	make -j1
	make PG_CONFIG=/usr/bin/pg_config -C "$builddir"/src/sql
}

check() {
	make check
}

package() {
	make DESTDIR="$pkgdir" install

	make DESTDIR="${pkgdir}/" PG_CONFIG=/usr/bin/pg_config -C "$builddir"/src/sql install

	touch "$pkgdir"/etc/$pkgname/pool_passwd

	install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
	install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
	install -m644 -D "$srcdir"/$pkgname.logrotated "$pkgdir"/etc/logrotate.d/$pkgname

	install -d -o "$pkgusers" -g "$pkggroups" -m755 "$pkgdir"/var/log/$pkgname

	install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING

	local docdir="$pkgdir"/usr/share/doc/$pkgname

	mkdir -p "$docdir"
	mv "$pkgdir"/etc/$pkgname/* "$docdir"/

	local f; for f in pcp.conf pgpool.conf pool_hba.conf; do
		cp "$docdir"/$f.sample "$pkgdir"/etc/$pkgname/$f
	done
}

sha512sums="
897172d2074fa04a018128d086b1724a1a4a6e9ba10bee0ff14aedcb92549092dd6885a0a722ce1e42e11f9b2de865953a7c17bea3166ab883bc82ea10d7fbcd  pgpool2-4_6_1.tar.gz
2d7780d7e9faf2b4bc83060e8d3cd56543afa6300ea2f3ea390c1eca01acacc0132f82da49978ffa6876c86e6a25971f146c71d44d41a8dbedccdc3935aa9dc6  missing-include.patch
9e54835f2a907f4b7a521d7d52cf04f69e1edfe591d9618cb2a1514953e5ba9e0d5ef543f0d6ee281fef21e64b7a6ff4a26a7f54fadbfc2d3bc7009d10dbccbf  pgpool.initd
7e605cea31ae32127ec1aca9e47a6652e87243214bde202d49a405652784e68b4dbff7d364345259d327bc37041c60c146e6f674a4aa72c6214bdba3740e700e  pgpool.confd
c9aa2ea9484ed29cb57cdff4004fa9dd4780d73c69db3378effb2e0ecd3ae178771c6a847a28e1a9cc6492ada4321584afb92c9b592119fb11898b42191f22b1  pgpool.logrotated
b6f456e43022d2a6efcc341b3e21406c934dd16b54b3e20fdd841b70b189850e7fe5b20d808bf255cb4e0d9b157b76a04c3d84e0784df4fb27b131755e216126  fix-snprintf.patch
505427796b467756665d5c33594acc36bcaeb750e90d4361e08c61ba4b79315fd0c3c72fe72647a774f331a1783003782cf805ee2b42a02fa3f84e5e97ad4b54  fix-time_t.patch
"
