Skip to content

fix(ci): build full cmd packages and use native arm64 runner#238

Merged
javi11 merged 1 commit into
mainfrom
fix/ci-build-full-package
Jul 3, 2026
Merged

fix(ci): build full cmd packages and use native arm64 runner#238
javi11 merged 1 commit into
mainfrom
fix/ci-build-full-package

Conversation

@javi11

@javi11 javi11 commented Jul 3, 2026

Copy link
Copy Markdown
Owner

Problem

The v0.0.30 release build (run 28684700916) failed in two jobs:

  1. build-web-linux — compiled cmd/web/main.go as a single file. Once web handlers were split into arr_handlers.go and api_key.go, that file no longer sees their methods, so the build failed with ws.handleListArrInstances undefined (and ~8 similar errors).
  2. build-cli (linux/arm64, zig musl) — cross-compiled with zig cc -target aarch64-linux-musl, but par2go links -lstdc++ (GNU libstdc++), which zig's musl target does not provide → ld.lld: undefined symbol: std::thread::join() and many other std:: symbols from libparpar_gf16_linux_arm64.a.

Latent bug also fixed

The CLI build compiled cmd/postie/postie.go as a single file too. It compiled fine but silently dropped the watch subcommand, which is registered in cmd/postie/watch.go via init(). Released CLIs since v0.0.29-rc2 have been missing postie watch.

Fix

  • Build the whole packages ./cmd/web and ./cmd/postie (all 4 build steps across release.yml and dev-build.yml) so every file in each package is compiled.
  • Switch the linux/arm64 CLI job to the native ubuntu-24.04-arm runner — the same runner the already-passing build-image-arm64 job uses — so system g++/libstdc++ resolves par2go's C++ deps. Removed the now-unused Zig setup step.

Verification

  • go build ./cmd/web and go build -tags=cli ./cmd/postie succeed locally; the single-file builds reproduce the exact CI errors.
  • postie --help from the package build lists the watch command (absent from the single-file build).
  • arm64 native build mirrors the proven build-image-arm64 path; confirmed green by the CI run on this PR.

Context

Unblocks the v0.0.30 release (which carries the Windows CLI static-linking fix for #154).

The release build compiled single files (cmd/web/main.go, cmd/postie/postie.go)
instead of whole packages. This broke build-web-linux once handlers were split
into arr_handlers.go/api_key.go (undefined method errors), and silently dropped
the watch subcommand from the postie CLI (defined in watch.go via init()).
Build ./cmd/web and ./cmd/postie so every file in each package is compiled.

The linux/arm64 CLI job cross-compiled with 'zig cc -target aarch64-linux-musl',
but par2go links -lstdc++ (GNU libstdc++) which zig's musl target does not
provide, failing with undefined std:: symbols. Switch to the native
ubuntu-24.04-arm runner (same as the working build-image-arm64 job) so the
system g++/libstdc++ resolves par2go's C++ deps, and drop the now-unused Zig
setup step.
@javi11 javi11 merged commit 029d622 into main Jul 3, 2026
3 checks passed
@javi11 javi11 deleted the fix/ci-build-full-package branch July 3, 2026 22:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant