# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

# ebuild automatically verified at 2026-05-16
EAPI=8

inherit systemd

DESCRIPTION="Fast time-series database (upstream prebuilt static binary)"
HOMEPAGE="https://victoriametrics.com/ https://github.com/VictoriaMetrics/VictoriaMetrics"

# Two upstream release artifacts for v${PV}:
#   * victoria-metrics-linux-amd64-vN.M.P.tar.gz  -> victoria-metrics-prod
#   * vmutils-linux-amd64-vN.M.P.tar.gz           -> vmagent-prod, vmctl-prod,
#                                                    vmbackup-prod, vmrestore-prod,
#                                                    vmalert-prod, vmalert-tool-prod,
#                                                    vmauth-prod
# Both are statically linked Go binaries built by upstream's release
# pipeline. No external runtime dependencies — they only need a Linux
# kernel and a writable storage path.
SRC_URI="
	https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${PV}/victoria-metrics-linux-amd64-v${PV}.tar.gz
	https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v${PV}/vmutils-linux-amd64-v${PV}.tar.gz
"
# Upstream tarballs unpack into ${WORKDIR} as a flat list of binaries
# (no top-level directory). Set S so EAPI 8 default src_unpack stays happy.
S="${WORKDIR}"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
# strip — Go binaries embed the runtime version in build info; stripping
#   would corrupt --version output.
# mirror — upstream forbids redistribution from Gentoo mirrors.
# bindist — explicitly OSS Apache-2.0, but stay conservative (matches
#   amazon-efs-utils-bin convention for binary repackaging).
RESTRICT="strip mirror"
QA_PREBUILT="opt/victoriametrics/*"

RDEPEND="
	acct-group/victoria-metrics
	acct-user/victoria-metrics
	!!app-metrics/victoria-metrics
"

src_install() {
	# Install layout matches the source-build sibling
	# (app-metrics/victoria-metrics) so a systemd drop-in override and
	# the binary path are identical across both variants.
	exeinto /opt/victoriametrics
	doexe "${WORKDIR}"/victoria-metrics-prod
	doexe "${WORKDIR}"/vmagent-prod
	doexe "${WORKDIR}"/vmctl-prod
	doexe "${WORKDIR}"/vmbackup-prod
	doexe "${WORKDIR}"/vmrestore-prod
	doexe "${WORKDIR}"/vmalert-prod
	doexe "${WORKDIR}"/vmalert-tool-prod
	doexe "${WORKDIR}"/vmauth-prod

	# Convenience symlinks under /usr/bin without the -prod suffix so
	# admins can just type `vmctl ...` etc. The role's healthcheck and
	# the systemd ExecStart line both use /opt/victoriametrics paths,
	# so the symlinks are purely for ergonomics.
	dosym /opt/victoriametrics/victoria-metrics-prod /usr/bin/victoria-metrics
	dosym /opt/victoriametrics/vmagent-prod          /usr/bin/vmagent
	dosym /opt/victoriametrics/vmctl-prod            /usr/bin/vmctl
	dosym /opt/victoriametrics/vmbackup-prod         /usr/bin/vmbackup
	dosym /opt/victoriametrics/vmrestore-prod        /usr/bin/vmrestore
	dosym /opt/victoriametrics/vmalert-prod          /usr/bin/vmalert
	dosym /opt/victoriametrics/vmalert-tool-prod     /usr/bin/vmalert-tool
	dosym /opt/victoriametrics/vmauth-prod           /usr/bin/vmauth

	# Storage path. Mode 0750 so only the service account can read
	# the on-disk format. Owner comes from the acct-user package.
	keepdir /var/lib/victoria-metrics
	fowners victoria-metrics:victoria-metrics /var/lib/victoria-metrics
	fperms 0750 /var/lib/victoria-metrics

	systemd_dounit "${FILESDIR}"/victoria-metrics.service
	keepdir /etc/systemd/system/victoria-metrics.service.d
}

pkg_postinst() {
	elog ""
	elog "VictoriaMetrics ${PV} (upstream prebuilt) is installed."
	elog ""
	elog "  - Binary:        /opt/victoriametrics/victoria-metrics-prod"
	elog "  - Storage:       /var/lib/victoria-metrics (owned by victoria-metrics)"
	elog "  - Systemd unit:  victoria-metrics.service"
	elog ""
	elog "Tune retention, listen address, and memory by overriding"
	elog "ExecStart in a systemd drop-in at"
	elog "/etc/systemd/system/victoria-metrics.service.d/."
	elog ""
}