# Contributor: V.Krishn <vkrishn4@gmail.com>
# Contributor: Eivind Uggedal <eu@eju.no>
# Contributor: TBK <alpine@jjtc.eu>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=valkey
pkgver=8.1.1
pkgrel=2
pkgdesc="Open source high-performance key/value datastore (fork of Redis)"
url="https://valkey.io/"
arch="all"
license="BSD-3-Clause"
pkgusers="valkey"
pkggroups="valkey"
makedepends="linux-headers openssl-dev"
checkdepends="tcl procps"
install="
	$pkgname.pre-install
	$pkgname.post-install
	$pkgname-compat.pre-install
	"
subpackages="
	$pkgname-benchmark
	$pkgname-cli
	$pkgname-compat::noarch
	$pkgname-openrc
	"
source="https://github.com/valkey-io/valkey/archive/$pkgver/valkey-$pkgver.tar.gz
	valkey.conf.patch
	sentinel.conf.patch
	$pkgname.initd
	$pkgname.confd
	$pkgname-sentinel.initd
	$pkgname-sentinel.confd
	CVE-2025-27151.patch
	CVE-2025-32023.patch
	CVE-2025-48367.patch
	"

# secfixes:
#   8.1.1-r2:
#     - CVE-2025-32023
#     - CVE-2025-48367
#   8.1.1-r1:
#     - CVE-2025-27151
#   7.2.9-r0:
#     - CVE-2025-21605
#   7.2.8-r0:
#     - CVE-2024-46981
#     - CVE-2024-51741
#   7.2.7-r0:
#     - CVE-2024-31227
#     - CVE-2024-31228
#     - CVE-2024-31449

build() {
	export CFLAGS="$CFLAGS -DUSE_MALLOC_USABLE_SIZE -O2 -flto=auto"
	make USE_JEMALLOC=no \
		MALLOC=libc \
		BUILD_TLS=yes \
		all
}

check() {
	make test
}

package() {
	make install PREFIX=/usr INSTALL_BIN="$pkgdir/usr/bin"

	cd "$pkgdir"

	# NOTE: /etc/valkey and /etc/valkey/sentinel.conf must be writable for valkey,
	# otherwise Sentinel fails to start.
	install -d -m 750 -o valkey -g valkey \
		etc/valkey \
		etc/valkey/valkey.d \
		var/lib/valkey \
		var/lib/valkey/sentinel

	install -D -m 640 -o root -g valkey "$builddir"/valkey.conf etc/valkey/valkey.conf
	install -D -m 640 -o valkey -g valkey "$builddir"/sentinel.conf etc/valkey/sentinel.conf

	install -D -m 755 "$srcdir"/valkey.initd etc/init.d/valkey
	install -D -m 755 "$srcdir"/valkey-sentinel.initd etc/init.d/valkey-sentinel
	install -D -m 644 "$srcdir"/valkey.confd etc/conf.d/valkey
	install -D -m 644 "$srcdir"/valkey-sentinel.confd etc/conf.d/valkey-sentinel

	install -d -m 750 -o valkey -g valkey \
		var/lib/valkey \
		var/lib/valkey/sentinel
}

benchmark() {
	pkgdesc="Valkey benchmarking tool"

	amove usr/bin/valkey-benchmark
}

cli() {
	pkgdesc="Valkey CLI client"

	amove usr/bin/valkey-cli
}

compat() {
	pkgdesc="Valkey command symlinks and system group for compatibility with redis"
	depends="!redis !redict-compat"

	amove usr/bin/redis-*
	rm "$subpkgdir"/usr/bin/redis-benchmark
}

sha512sums="
1f84b24839856c8d6cdbe1bca5f571fc41cda2b08f495ee80e9a0a03a8ba737f0effeedcb0508195f8d30570443cbccd3c0cf8f4d93980e57f9f8ac656379327  valkey-8.1.1.tar.gz
a05177e05e7d5d4fa660abe0744df21af4f308756234f7b88bfeca6aacdd5a1643bc79a78943fcb1eb1a66418e8c8be98897a7a8ec84a27ed80f5ccfda272396  valkey.conf.patch
d0311d2bfade7efbfa2bdcc6c74e8e8a151c09c627e30f5cea1826155dcb4f7ca4c1d35aba26bccec933575fadcbe5785e16b4801058fec73c7de5537ffeb09a  sentinel.conf.patch
605c1f39cf5f206e03d19af54412a66732ad3c65d5cb36e5d6cfb9d28779807d2da9c29d01f07e0ba2956446cb6935b66c92844a74b255b6070870b30d7d45d8  valkey.initd
639a007f7e98cf7614d2afb6e109042883030e0bdf4eaf1dc3df3ecab8043d6be30647e1e46295f783efc7baf42dc420b2e5dcf388913efdc5bdf2cd1e418f9f  valkey.confd
dd407cb4047524114b4814a28993978acbe300989acc466ec3809171bf19a1e0562756f7b5954981a087a37437c2c281e4a3667d361cfa8873d1c20d1b900632  valkey-sentinel.initd
926316561f0802b577caee03e7bccc5538dc8270095df95853549fdd519fac8d0e89bc3e563cdba2d7ec0dfe10db5e50b95859549597beec894c820abfdbecee  valkey-sentinel.confd
bc769dd0b5b30e657e176ddde4836ac1781a9cf9caccf19d635bf223ac58889aa5f7335b11f542f9240ab177f7c221651394584255eb4857b780e8a1d3ce45ea  CVE-2025-27151.patch
c5d9be725aaaa0e49590d91a7c6ad55d409cf75a981ce017f411627c5c79fda1812fa0f4de522842aaef26f9cf75d33fb3afe652354c36e3e41a86a06d67e575  CVE-2025-32023.patch
e990ed04b6ba14f92335cf559f759e7f52bae51e037f3df2275408d5d4c10b5a18cc18aba8ea1939f28007a9a9ac2f3063b98eaf4d92c4959d7c5d8a836eb15e  CVE-2025-48367.patch
"
