From f01d20978016dbf3b6560371655174ddc47999e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20Schl=C3=B6ffel?= Date: Sun, 27 Sep 2026 02:27:30 +0200 Subject: [PATCH] build greptimedb dashboard from source --- packaging/alpine/local/greptimedb/APKBUILD | 34 ++++++++++++++----- packaging/alpine/local/greptimedb/README.md | 16 ++++++--- .../local/greptimedb/scripts/runtime-test.sh | 11 ++++++ .../scripts/update-generated-sources.sh | 6 ---- 4 files changed, 48 insertions(+), 19 deletions(-) delete mode 100755 packaging/alpine/local/greptimedb/scripts/update-generated-sources.sh diff --git a/packaging/alpine/local/greptimedb/APKBUILD b/packaging/alpine/local/greptimedb/APKBUILD index 8f5c848..5df4b7f 100644 --- a/packaging/alpine/local/greptimedb/APKBUILD +++ b/packaging/alpine/local/greptimedb/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Joachim Schlöffel pkgname=greptimedb pkgver=1.2.1 -pkgrel=0 +pkgrel=1 pkgdesc="Cloud-native observability database for metrics, logs, and traces" url="https://github.com/GreptimeTeam/greptimedb" arch="x86_64" @@ -12,14 +12,17 @@ makedepends=" clang cmake coreutils - curl + cargo-auditable + git lld linux-headers make mold + nodejs openssl-dev openssl-libs-static perl + pnpm protobuf protobuf-dev rustup @@ -28,6 +31,7 @@ makedepends=" zstd-dev zstd-static " +checkdepends="cargo-nextest" install="$pkgname.pre-install" subpackages=" $pkgname-datanode-openrc:_openrc_datanode:noarch @@ -41,7 +45,7 @@ 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 + dashboard-$_dashboard_version.tar.gz::https://github.com/GreptimeTeam/dashboard/archive/refs/tags/$_dashboard_version.tar.gz datanode.toml flownode.toml frontend.toml @@ -68,27 +72,39 @@ 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" + "$CARGO_HOME"/bin/rustup run "$_rust_toolchain" cargo fetch \ + --locked + + local _dashboard_builddir="$srcdir"/dashboard-${_dashboard_version#v} + ( + cd "$_dashboard_builddir" + pnpm install --frozen-lockfile --store-dir "$srcdir"/pnpm-store + pnpm run build:docker + ) + rm -rf "$builddir"/src/servers/dashboard/dist + cp -a "$_dashboard_builddir"/dist "$builddir"/src/servers/dashboard/ } build() { - "$CARGO_HOME"/bin/rustup run "$_rust_toolchain" cargo build \ + "$CARGO_HOME"/bin/rustup run "$_rust_toolchain" cargo auditable build \ --profile "$_cargo_profile" \ + --frozen \ --locked \ --bin greptime \ --features servers/dashboard } check() { - "$CARGO_TARGET_DIR"/"$_cargo_profile"/greptime --version + "$CARGO_HOME"/bin/rustup run "$_rust_toolchain" cargo nextest run \ + -p cmd \ + --lib \ + --frozen } package() { @@ -128,7 +144,7 @@ _docs() { sha512sums=" fc580f6e34df84b4f37219047d751968324c356f3cad352d1515abb4b441515a1ad98f0d01e2de33aac5129a2d7a5335edc4d8888923da7683a084a484769bea greptimedb-1.2.1.tar.gz -4260acae5bed00a693dceffe9f53d0f8b25fd677b15638e951cf973dc29681f4bacde352c661a12bd78af7be9181a3740812f814fc3c4c8c87ea4eee6ee07e2d dashboard-v0.12.0.tar.gz +3f853b6767a86cfa97ec640a17de59b2e798561c9402026e9b3a749907780b9b686149dba8a932b5d61ae538c430deab2410248e5c9e6e1961909000445ee2ee dashboard-v0.12.0.tar.gz 29cc3376753487b216748e3f85e12639830e1ac4a763e94f330f87c3651a8ef9de35732958311c0049e1b7cbb4e90a9e602b3aff43297fe088c5ce795a110a79 datanode.toml 52790808cb4f5cf0220ac2ab169b623fe76b6318d27d7f003e1197e850373cb915bfd40556098bcb7650f293d751039cb3bccbf9107bb160b8284887794ba975 flownode.toml e3e19ab3c7a345ecf8cf0a507f7fc95dd3b036a4a797385cf77fcf1999f2e4f053042c7bbda8de73ed43ff72e87aad81e4ac6d4a34d01773bbc1f6d0d967d9f7 frontend.toml diff --git a/packaging/alpine/local/greptimedb/README.md b/packaging/alpine/local/greptimedb/README.md index 703bc54..291e38e 100644 --- a/packaging/alpine/local/greptimedb/README.md +++ b/packaging/alpine/local/greptimedb/README.md @@ -1,14 +1,22 @@ # GreptimeDB Alpine Package -Builds `greptime` from the upstream source release and packages OpenRC service -subpackages plus `/etc/greptimedb` defaults. +Builds `greptime` and its embedded dashboard from their upstream source +releases, and packages OpenRC service subpackages plus `/etc/greptimedb` +defaults. Build command: ```sh -cargo build --profile nightly --locked --bin greptime --features servers/dashboard +cargo auditable build --profile nightly --frozen --locked --bin greptime --features servers/dashboard ``` +GreptimeDB requires the nightly pinned in its source release +(`nightly-2026-03-21`). The package uses Rustup to install that toolchain and +uses locked Cargo and pnpm dependency resolution, so `options="net"` is +intentional. Cargo dependencies are fetched before compilation; the Rust build +then runs frozen. The dashboard is built from the matching `v0.12.0` source tag +with its checked-in `pnpm-lock.yaml`. + ## Runtime Layout Installs `/usr/bin/greptime` and component OpenRC packages: @@ -92,4 +100,4 @@ ALPINE_REPOSITORY_KEY_URL=https://code.factoring.digital/api/packages/public/alp mise run apk:test-install ``` -Full builds take close to an hour. +Full builds and the targeted upstream Nextest check take close to an hour. diff --git a/packaging/alpine/local/greptimedb/scripts/runtime-test.sh b/packaging/alpine/local/greptimedb/scripts/runtime-test.sh index 5e7c861..f105246 100755 --- a/packaging/alpine/local/greptimedb/scripts/runtime-test.sh +++ b/packaging/alpine/local/greptimedb/scripts/runtime-test.sh @@ -21,3 +21,14 @@ greptime --version rc-update add greptimedb.standalone default || true test -L /etc/runlevels/default/greptimedb.standalone + +rc-service greptimedb.standalone start +for _attempt in $(seq 1 30); do + if wget -qO- http://127.0.0.1:4000/status >/dev/null; then + break + fi + sleep 1 +done +wget -qO- http://127.0.0.1:4000/status >/dev/null +wget -qO- http://127.0.0.1:4000/dashboard/ | grep -qi '' +rc-service greptimedb.standalone stop diff --git a/packaging/alpine/local/greptimedb/scripts/update-generated-sources.sh b/packaging/alpine/local/greptimedb/scripts/update-generated-sources.sh deleted file mode 100755 index 9b6c101..0000000 --- a/packaging/alpine/local/greptimedb/scripts/update-generated-sources.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -package_dir="${PACKAGE_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}" - -printf 'No generated sources for %s\n' "${package_dir}"