From 0d32fa05401ff0e3a5271e7cc4b2da44974a18e5 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sat, 30 May 2026 23:22:02 +0200 Subject: [PATCH 1/4] new(cockroachdb): distributed SQL with Pebble storage engine Add recipe for cockroachdb/cockroach v26.x. CockroachDB is a Go-based distributed SQL database that uses Pebble (a pure-Go RocksDB rewrite) as its storage engine, avoiding the C++ rocksdb / cgo build complexity that plagues TiKV. Build path: since v23 cockroach moved fully to bazel; the legacy `make buildoss` target no longer exists. The recipe builds the `cockroach-short` bazel target via bazelisk, which excludes the embedded JS web UI but produces a fully functional `cockroach` binary (this is the maintainer-recommended "lean" build). Notes: - github source tarballs lack a .git dir; stub stamp.sh injects the version into bazel's stable-status so the binary reports v{{version}} - cross-references: Arch AUR PKGBUILD (v19, legacy make), nixpkgs 23.1 (gave up on source builds), and upstream docs/building.md. --- .../cockroachdb/cockroach/package.yml | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 projects/github.com/cockroachdb/cockroach/package.yml diff --git a/projects/github.com/cockroachdb/cockroach/package.yml b/projects/github.com/cockroachdb/cockroach/package.yml new file mode 100644 index 0000000000..87900321be --- /dev/null +++ b/projects/github.com/cockroachdb/cockroach/package.yml @@ -0,0 +1,70 @@ +distributable: + url: https://github.com/cockroachdb/cockroach/archive/refs/tags/v{{version}}.tar.gz + strip-components: 1 + +display-name: CockroachDB + +versions: + github: cockroachdb/cockroach + ignore: + - /-alpha/ + - /-beta/ + - /-rc/ + +platforms: + - linux/x86-64 + - linux/aarch64 + - darwin/x86-64 + - darwin/aarch64 + +provides: + - bin/cockroach + +build: + dependencies: + go.dev: ^1.25 + cmake.org: ^3 + gnu.org/make: '*' + gnu.org/autoconf: '*' + gnu.org/bison: '*' + gnu.org/patch: '*' + freedesktop.org/pkg-config: '*' + github.com/bazelbuild/bazelisk: '*' + git-scm.org: '*' + linux: + gnu.org/gcc: '*' + invisible-island.net/ncurses: '*' + env: + # cockroach embeds version info from git; without a .git dir the build + # falls back to "unknown". Inject a stable version through the linker. + STABLE_BUILD_TAG: v{{version}} + USE_BAZEL_VERSION: '7.6.0' + # avoid bazel writing in $HOME during a sandboxed pantry build + HOME: '{{prefix}}/.build-home' + script: + # the github source tarball has no .git directory; cockroach's bazel + # rules rely on workspace_status.sh probing git, so stub it + - mkdir -p "$HOME" + - | + cat > build/bazelutil/stamp.sh < Date: Sat, 30 May 2026 23:24:51 +0200 Subject: [PATCH 2/4] fix(cockroachdb): query tags endpoint (no GitHub releases published) cockroachdb does not publish GitHub releases; it only pushes git tags. The default github: / resolves to .../releases/tags which returns an empty list, leading to "no versions parsed". Switch to .../tags so version resolution finds v26.2.1 and friends. --- projects/github.com/cockroachdb/cockroach/package.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/github.com/cockroachdb/cockroach/package.yml b/projects/github.com/cockroachdb/cockroach/package.yml index 87900321be..989dfc8322 100644 --- a/projects/github.com/cockroachdb/cockroach/package.yml +++ b/projects/github.com/cockroachdb/cockroach/package.yml @@ -5,7 +5,8 @@ distributable: display-name: CockroachDB versions: - github: cockroachdb/cockroach + # cockroach publishes git tags but no GitHub releases, so query tags directly + github: cockroachdb/cockroach/tags ignore: - /-alpha/ - /-beta/ From f1199f1e8046635451b416481c7fe5e98c0d8d93 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sat, 30 May 2026 23:37:42 +0200 Subject: [PATCH 3/4] fix(cockroachdb): disable bazel sandbox so pkgx gcc wrapper resolves bazel's default sandbox masks /toolchain/gcc on the host, which pkgx's gcc wrapper script tries to exec at runtime, causing: gcc: line 25: /toolchain/gcc: No such file or directory Use --spawn_strategy=local to bypass the sandbox; the bazel build then runs against the same toolchain pantry already wired up. Same pattern is conceptually equivalent to starpls's --action_env hack but works when actual cgo compilation is needed (cockroach has jemalloc, geos and proj as c-deps). --- projects/github.com/cockroachdb/cockroach/package.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/github.com/cockroachdb/cockroach/package.yml b/projects/github.com/cockroachdb/cockroach/package.yml index 989dfc8322..43ca98b688 100644 --- a/projects/github.com/cockroachdb/cockroach/package.yml +++ b/projects/github.com/cockroachdb/cockroach/package.yml @@ -58,9 +58,13 @@ build: - chmod +x build/bazelutil/stamp.sh # cockroach-short is the pure-binary target (no embedded JS web UI), # which keeps the build tractable without docker / nodejs in CI + # `--spawn_strategy=local` disables bazel's sandbox so pkgx's gcc wrapper + # (which dereferences /toolchain/gcc on the host) keeps working — the + # sandbox masks paths outside the source tree and breaks the wrapper. - bazel build //pkg/cmd/cockroach-short:cockroach-short --config=ci --jobs={{ hw.concurrency }} + --spawn_strategy=local --workspace_status_command=$(pwd)/build/bazelutil/stamp.sh - install -D -m755 bazel-bin/pkg/cmd/cockroach-short/cockroach-short_/cockroach-short "{{prefix}}/bin/cockroach" From f86c700a6641c3fd7051ab2f3570362e575eeb54 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sat, 30 May 2026 23:50:39 +0200 Subject: [PATCH 4/4] fix(cockroachdb): forward HOME/PATH to bazel actions bazel's --incompatible_strict_action_env (enabled in cockroach's .bazelrc) wipes HOME/PATH from spawned compile actions. pkgx's gcc wrapper at $HOME/toolchain/bin/gcc execs $HOME/toolchain/, so HOME=='' degrades to /toolchain/gcc and exits 127. Drop the HOME override (was clobbering pantry's prepared toolchain location), preserve the build shell's HOME/PATH and forward both to bazel via --action_env. Also use a 'EOSTAMP' heredoc with sed substitution so the stamp script does not expand $() at write time in the wrong shell context. --- .../cockroachdb/cockroach/package.yml | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/projects/github.com/cockroachdb/cockroach/package.yml b/projects/github.com/cockroachdb/cockroach/package.yml index 43ca98b688..6d270f88cd 100644 --- a/projects/github.com/cockroachdb/cockroach/package.yml +++ b/projects/github.com/cockroachdb/cockroach/package.yml @@ -40,31 +40,38 @@ build: # falls back to "unknown". Inject a stable version through the linker. STABLE_BUILD_TAG: v{{version}} USE_BAZEL_VERSION: '7.6.0' - # avoid bazel writing in $HOME during a sandboxed pantry build - HOME: '{{prefix}}/.build-home' script: + # cockroach's .bazelrc enables --incompatible_strict_action_env, which + # wipes HOME and PATH from each spawned compiler action. pkgx's gcc + # wrapper relies on $HOME/toolchain/ and on tools (ar, ranlib...) + # being on PATH, so we forward both into action envs explicitly. + - PKGX_PATH="$PATH" + - PKGX_HOME="$HOME" # the github source tarball has no .git directory; cockroach's bazel # rules rely on workspace_status.sh probing git, so stub it - - mkdir -p "$HOME" - | - cat > build/bazelutil/stamp.sh < build/bazelutil/stamp.sh <<'EOSTAMP' #!/usr/bin/env bash - echo STABLE_BUILD_GIT_BUILD_TYPE release - echo STABLE_BUILD_TAG v{{version}} - echo STABLE_BUILD_REV $(printf 'v%s' '{{version}}') + echo STABLE_BUILD_CHANNEL release + echo STABLE_BUILD_TAG v__VERSION__ echo STABLE_BUILD_TYPE release - echo STABLE_BUILD_TARGET_TRIPLE $(go env GOOS)-$(go env GOARCH) - EOF + echo STABLE_BUILD_TARGET_TRIPLE __TRIPLE__ + echo STABLE_CRASH_REPORT_ENV v__VERSION__ + echo STABLE_TELEMETRY_DISABLED true + EOSTAMP + - sed -i.bak "s/__VERSION__/{{version}}/g;s|__TRIPLE__|$(go env GOOS)-$(go env GOARCH)|g" build/bazelutil/stamp.sh + - rm -f build/bazelutil/stamp.sh.bak - chmod +x build/bazelutil/stamp.sh # cockroach-short is the pure-binary target (no embedded JS web UI), - # which keeps the build tractable without docker / nodejs in CI - # `--spawn_strategy=local` disables bazel's sandbox so pkgx's gcc wrapper - # (which dereferences /toolchain/gcc on the host) keeps working — the - # sandbox masks paths outside the source tree and breaks the wrapper. + # which keeps the build tractable without docker / nodejs in CI. + # `--spawn_strategy=local` disables bazel's sandbox so pkgx's gcc + # wrapper can reach $HOME/toolchain/gcc (the sandbox masks $HOME). - bazel build //pkg/cmd/cockroach-short:cockroach-short --config=ci --jobs={{ hw.concurrency }} --spawn_strategy=local + --action_env=HOME=$PKGX_HOME + --action_env=PATH=$PKGX_PATH --workspace_status_command=$(pwd)/build/bazelutil/stamp.sh - install -D -m755 bazel-bin/pkg/cmd/cockroach-short/cockroach-short_/cockroach-short "{{prefix}}/bin/cockroach"