# Maintainer: Joachim Schlöffel <me@joachim-schloeffel.com>
pkgname=greptimedb
pkgver=1.0.2
pkgrel=2
pkgdesc="Cloud-native observability database for metrics, logs, and traces"
url="https://github.com/GreptimeTeam/greptimedb"
arch="x86_64"
license="Apache-2.0"
depends="ca-certificates /bin/sh"
makedepends="
	binutils
	clang
	cmake
	coreutils
	curl
	lld
	linux-headers
	make
	mold
	openssl-dev
	openssl-libs-static
	perl
	protobuf
	protobuf-dev
	rustup
	zlib-dev
	zlib-static
	zstd-dev
	zstd-static
	"
install="$pkgname.pre-install"
subpackages="
	$pkgname-datanode-openrc:_openrc_datanode:noarch
	$pkgname-docs:_docs:noarch
	$pkgname-flownode-openrc:_openrc_flownode:noarch
	$pkgname-frontend-openrc:_openrc_frontend:noarch
	$pkgname-metasrv-openrc:_openrc_metasrv:noarch
	$pkgname-standalone-openrc:_openrc_standalone:noarch
	"
options="net"
_dashboard_version="v0.12.0"
source="
	$pkgname-$pkgver.tar.gz::https://github.com/GreptimeTeam/greptimedb/archive/refs/tags/v$pkgver.tar.gz
	dashboard-$_dashboard_version.tar.gz::https://github.com/GreptimeTeam/dashboard/releases/download/$_dashboard_version/build.tar.gz
	datanode.toml
	flownode.toml
	frontend.toml
	greptimedb.datanode.confd
	greptimedb.flownode.confd
	greptimedb.frontend.confd
	greptimedb.initd
	greptimedb.metasrv.confd
	greptimedb.standalone.confd
	metasrv.toml
	standalone.toml
	"

_rust_toolchain="nightly-2026-03-21"
_cargo_profile="nightly"
export CARGO_HOME="${CARGO_HOME:-$srcdir/cargo}"
export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-$builddir/target}"
export RUSTUP_HOME="${RUSTUP_HOME:-$srcdir/rustup}"
export CARGO_BUILD_JOBS="${CARGO_BUILD_JOBS:-2}"
export CARGO_PROFILE_NIGHTLY_CODEGEN_UNITS="${CARGO_PROFILE_NIGHTLY_CODEGEN_UNITS:-16}"
export CARGO_PROFILE_NIGHTLY_DEBUG="${CARGO_PROFILE_NIGHTLY_DEBUG:-false}"
export CARGO_PROFILE_NIGHTLY_LTO="${CARGO_PROFILE_NIGHTLY_LTO:-thin}"
export LIBRARY_PATH="/usr/lib"

prepare() {
	default_prepare
	if [ ! -d "$builddir"/src/servers/dashboard/dist ]; then
		mv "$srcdir"/dist "$builddir"/src/servers/dashboard/dist
	fi

	rustup-init \
		-y \
		--no-modify-path \
		--profile minimal \
		--default-toolchain "$_rust_toolchain"
}

build() {
	"$CARGO_HOME"/bin/rustup run "$_rust_toolchain" cargo build \
		--profile "$_cargo_profile" \
		--locked \
		--bin greptime \
		--features servers/dashboard
}

check() {
	"$CARGO_TARGET_DIR"/"$_cargo_profile"/greptime --version
}

package() {
	install -Dm755 "$CARGO_TARGET_DIR"/"$_cargo_profile"/greptime \
		"$pkgdir"/usr/bin/greptime
	local _config
	for _config in datanode flownode frontend metasrv standalone; do
		install -Dm644 "$srcdir"/$_config.toml \
			"$pkgdir"/etc/greptimedb/$_config.toml
	done
}

_openrc_service() {
	local _service="$1"
	pkgdesc="$pkgdesc (OpenRC $_service service)"
	depends="$pkgname=$pkgver-r$pkgrel openrc"

	install -Dm755 "$srcdir"/greptimedb.initd \
		"$subpkgdir"/etc/init.d/greptimedb.$_service
	install -Dm644 "$srcdir"/greptimedb.$_service.confd \
		"$subpkgdir"/etc/conf.d/greptimedb.$_service
}

_openrc_datanode() { _openrc_service datanode; }
_openrc_flownode() { _openrc_service flownode; }
_openrc_frontend() { _openrc_service frontend; }
_openrc_metasrv() { _openrc_service metasrv; }
_openrc_standalone() { _openrc_service standalone; }

_docs() {
	pkgdesc="$pkgdesc (configuration examples and reference)"
	depends=""

	mkdir -p "$subpkgdir"/usr/share/doc/$pkgname
	cp -a "$builddir"/config "$subpkgdir"/usr/share/doc/$pkgname/
}

sha512sums="
7f4ac722b84a26816030e65d504b37a53edfca15de669a4f6ee7a903f1a29c8358dcc2376a0a6cfd9ded13b0c5d7550a6856b9b10dc8cd080c6b12970553a0ea  greptimedb-1.0.2.tar.gz
4260acae5bed00a693dceffe9f53d0f8b25fd677b15638e951cf973dc29681f4bacde352c661a12bd78af7be9181a3740812f814fc3c4c8c87ea4eee6ee07e2d  dashboard-v0.12.0.tar.gz
29cc3376753487b216748e3f85e12639830e1ac4a763e94f330f87c3651a8ef9de35732958311c0049e1b7cbb4e90a9e602b3aff43297fe088c5ce795a110a79  datanode.toml
52790808cb4f5cf0220ac2ab169b623fe76b6318d27d7f003e1197e850373cb915bfd40556098bcb7650f293d751039cb3bccbf9107bb160b8284887794ba975  flownode.toml
e3e19ab3c7a345ecf8cf0a507f7fc95dd3b036a4a797385cf77fcf1999f2e4f053042c7bbda8de73ed43ff72e87aad81e4ac6d4a34d01773bbc1f6d0d967d9f7  frontend.toml
313ed7d9ccd174b1869f3009e174266cdc414599e0b0f8307c8aaf2b73841eb36ce4c1b2f6244a0358b5a587a4edaa621b781fbd767835088b3fa13623fcc0df  greptimedb.datanode.confd
daf8efacc8bf2b74abd9f4900f889585295b57333a8a562a722de0596d35f25d5f9149e0879f4140bfdf727caa59c3f55b1380212722df92c588d912275530b8  greptimedb.flownode.confd
e3e61b1df00f8172a3b1d4a0d37ed2574a8c5cd27676b4e2ce14d15ad8933d233baabe8da374f715d00cfaee26f665244c1ba00f70197fcc713c4e9af9c3229e  greptimedb.frontend.confd
c00740aee566b161bbe3610e0e0d6e8340022055750e6778772262474ffd6484d9f58be2fd498beafe28d0943e259e2277930af691bedea7650726e6c8998881  greptimedb.initd
df495367d85844dcba99e5aa01e5a23fd14799b7521a72d9ea00d29fc0e5fbc5c5d06ee88e88d9637e260f8337249a39d2b0115de58da4899824d20bd844254a  greptimedb.metasrv.confd
882a79e969cac42adfada22060e6507fb687755a6d266d6728154b3e4da5777d2eaf5ad9bc331ed050448249ca609e6a61977b624d9faf25d83ed975345452cf  greptimedb.standalone.confd
8120ec338ebe1330d43b20d9b34a8f5f778ea13cb056febd3c8e9dc189d0de2380b90e5474a0990294d7004827c6133d44d2dd3e32d463b9259c47c82592d257  metasrv.toml
7e625a40460b363415b69e59142fd202c4dbb51296286e6afdeb94d6303e5bf097f2d83196bfeea8cf1182aa90ffd4a503a939426e7eeeea4c14b7242bb99ddb  standalone.toml
"
