From 5c4cb3cbd08772c2756ec581b042567557968970 Mon Sep 17 00:00:00 2001 From: nartsisss Date: Wed, 8 Jan 2025 20:44:44 +0300 Subject: [PATCH] openobserve: add update script --- .../openobserve/openobserve/build.rs.patch | 29 +++++ .../{default.nix => openobserve/package.nix} | 2 + .../monitoring/openobserve/package.nix | 114 ++++++++++++++++++ 3 files changed, 145 insertions(+) create mode 100644 pkgs/servers/monitoring/openobserve/openobserve/build.rs.patch rename pkgs/servers/monitoring/openobserve/{default.nix => openobserve/package.nix} (97%) create mode 100644 pkgs/servers/monitoring/openobserve/package.nix diff --git a/pkgs/servers/monitoring/openobserve/openobserve/build.rs.patch b/pkgs/servers/monitoring/openobserve/openobserve/build.rs.patch new file mode 100644 index 0000000000000..1cfb91c7c12b7 --- /dev/null +++ b/pkgs/servers/monitoring/openobserve/openobserve/build.rs.patch @@ -0,0 +1,29 @@ +diff --git a/build.rs b/build.rs +index 0f66ace..be74fad 100644 +--- a/build.rs ++++ b/build.rs +@@ -99,24 +99,5 @@ fn main() -> Result<()> { + &["proto"], + )?; + +- // build information +- let output = Command::new("git") +- .args(["describe", "--tags", "--abbrev=0"]) +- .output() +- .unwrap(); +- let git_tag = String::from_utf8(output.stdout).unwrap(); +- println!("cargo:rustc-env=GIT_VERSION={git_tag}"); +- +- let output = Command::new("git") +- .args(["rev-parse", "HEAD"]) +- .output() +- .unwrap(); +- let git_commit = String::from_utf8(output.stdout).unwrap(); +- println!("cargo:rustc-env=GIT_COMMIT_HASH={git_commit}"); +- +- let now: DateTime = Utc::now(); +- let build_date = now.to_rfc3339_opts(SecondsFormat::Secs, true); +- println!("cargo:rustc-env=GIT_BUILD_DATE={build_date}"); +- + Ok(()) + } diff --git a/pkgs/servers/monitoring/openobserve/default.nix b/pkgs/servers/monitoring/openobserve/openobserve/package.nix similarity index 97% rename from pkgs/servers/monitoring/openobserve/default.nix rename to pkgs/servers/monitoring/openobserve/openobserve/package.nix index 487fc50c64288..99b8ed0b42118 100644 --- a/pkgs/servers/monitoring/openobserve/default.nix +++ b/pkgs/servers/monitoring/openobserve/openobserve/package.nix @@ -11,6 +11,7 @@ zlib, zstd, buildNpmPackage, + nix-update-script, }: let @@ -97,6 +98,7 @@ rustPlatform.buildRustPackage { "--skip=tests::e2e_test" ]; + passthru.updateScript = nix-update-script { }; meta = { description = "Cloud-native observability platform built specifically for logs, metrics, traces, analytics & realtime user-monitoring"; diff --git a/pkgs/servers/monitoring/openobserve/package.nix b/pkgs/servers/monitoring/openobserve/package.nix new file mode 100644 index 0000000000000..6684c7d4f1e9b --- /dev/null +++ b/pkgs/servers/monitoring/openobserve/package.nix @@ -0,0 +1,114 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + pkg-config, + protobuf, + bzip2, + oniguruma, + sqlite, + xz, + zlib, + zstd, + buildNpmPackage, + gitUpdater, +}: + +let + version = "0.14.0"; + src = fetchFromGitHub { + owner = "openobserve"; + repo = "openobserve"; + tag = "v${version}"; + hash = "sha256-rTp+DkADqYkJg1zJog1yURE082V5kCqgid/oUd81SN8="; + }; + web = buildNpmPackage { + inherit src version; + pname = "openobserve-ui"; + + sourceRoot = "${src.name}/web"; + + npmDepsHash = "sha256-awfQR1wZBX3ggmD0uJE9Fur4voPydeygrviRijKnBTE="; + + preBuild = '' + # Patch vite config to not open the browser to visualize plugin composition + substituteInPlace vite.config.ts \ + --replace "open: true" "open: false"; + ''; + + env = { + NODE_OPTIONS = "--max-old-space-size=8192"; + # cypress tries to download binaries otherwise + CYPRESS_INSTALL_BINARY = 0; + }; + + installPhase = '' + runHook preInstall + mkdir -p $out/share + mv dist $out/share/openobserve-ui + runHook postInstall + ''; + }; +in +rustPlatform.buildRustPackage { + pname = "openobserve"; + inherit version src; + + patches = [ + # prevent using git to determine version info during build time + ./build.rs.patch + ]; + + preBuild = '' + cp -r ${web}/share/openobserve-ui web/dist + ''; + + useFetchCargoVendor = true; + cargoHash = "sha256-FWMUPghx9CxuzP7jFZYSIwZsylApWzQsfx8DuwS4GTo="; + + nativeBuildInputs = [ + pkg-config + protobuf + ]; + + buildInputs = [ + bzip2 + oniguruma + sqlite + xz + zlib + zstd + ]; + + env = { + RUSTONIG_SYSTEM_LIBONIG = true; + ZSTD_SYS_USE_PKG_CONFIG = true; + + RUSTC_BOOTSTRAP = 1; # uses experimental features + + # the patched build.rs file sets these variables + GIT_VERSION = src.tag; + GIT_COMMIT_HASH = "builtByNix"; + GIT_BUILD_DATE = "1970-01-01T00:00:00Z"; + }; + + # requires network access or filesystem mutations + checkFlags = [ + "--skip=handler::http::router::tests::test_get_proxy_routes" + "--skip=tests::e2e_test" + ]; + + passthru.updateScript = gitUpdater { + rev-prefix = "v"; + ignoredVersions = "rc"; + }; + + meta = { + description = "Cloud-native observability platform built specifically for logs, metrics, traces, analytics & realtime user-monitoring"; + homepage = "https://github.com/openobserve/openobserve"; + changelog = "https://github.com/openobserve/openobserve/releases/tag/v${version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ happysalada ]; + mainProgram = "openobserve"; + }; +}