core-agent-ide/.github/workflows
Michael Bolin 08a000866f
Fix linux-musl release link failures caused by glibc-only libcap artifacts (#11556)
Problem:
The `aarch64-unknown-linux-musl` release build was failing at link time
with
`/usr/bin/ld: cannot find -lcap` while building binaries that
transitively pull
in `codex-linux-sandbox`.

Why this is the right fix:
`codex-linux-sandbox` compiles vendored bubblewrap and links `libcap`.
In the
musl jobs, we were installing distro `libcap-dev`, which provides
host/glibc
artifacts. That is not a valid source of target-compatible static libcap
for
musl cross-linking, so the fix is to produce a target-compatible libcap
inside
the musl tool bootstrap and point pkg-config at it.

This also closes the CI coverage gap that allowed this to slip through:
the
`rust-ci.yml` matrix did not exercise `aarch64-unknown-linux-musl` in
`release`
mode. Adding that target/profile combination to CI is the right
regression
barrier for this class of failure.

What changed:
- Updated `.github/scripts/install-musl-build-tools.sh` to install
tooling
  needed to fetch/build libcap sources (`curl`, `xz-utils`, certs).
- Added deterministic libcap bootstrap in the musl tool root:
  - download `libcap-2.75` from kernel.org
  - verify SHA256
  - build with the target musl compiler (`*-linux-musl-gcc`)
  - stage `libcap.a` and headers under the target tool root
  - generate a target-scoped `libcap.pc`
- Exported target `PKG_CONFIG_PATH` so builds resolve the staged musl
libcap
  instead of host pkg-config/lib paths.
- Updated `.github/workflows/rust-ci.yml` to add a `release` matrix
entry for
  `aarch64-unknown-linux-musl` on the ARM runner.
- Updated `.github/workflows/rust-ci.yml` to set
`CARGO_PROFILE_RELEASE_LTO=thin` for `release` matrix entries (and keep
`fat`
for non-release entries), matching the release-build tradeoff already
used in
  `rust-release.yml` while reducing CI runtime.

Verification:
- Reproduced the original failure in CI-like containers:
  - `aarch64-unknown-linux-musl` failed with `cannot find -lcap`.
- Verified the underlying mismatch by forcing host libcap into the link:
  - link then failed with glibc-specific unresolved symbols
    (`__isoc23_*`, `__*_chk`), confirming host libcap was unsuitable.
- Verified the fix in CI-like containers after this change:
- `cargo build -p codex-linux-sandbox --target
aarch64-unknown-linux-musl --release` -> pass
- `cargo build -p codex-linux-sandbox --target x86_64-unknown-linux-musl
--release` -> pass
- Triggered `rust-ci` on this branch and confirmed the new job appears:
- `Lint/Build — ubuntu-24.04-arm - aarch64-unknown-linux-musl (release)`
2026-02-12 08:08:32 +00:00
..
bazel.yml build(linux-sandbox): always compile vendored bubblewrap on Linux; remove CODEX_BWRAP_ENABLE_FFI (#11498) 2026-02-11 21:30:41 -08:00
cargo-deny.yml bump cargo-deny-action ver (#8345) 2025-12-19 15:23:02 -08:00
ci.bazelrc [bazel] Upgrade some rulesets in preparation for enabling windows, part 2 (#11197) 2026-02-09 20:08:10 +00:00
ci.yml use mainline version as baseline in ci (#8271) 2025-12-18 11:53:36 -08:00
cla.yml Fixed CLA action to properly exempt dependabot (#7429) 2025-11-30 20:45:17 -08:00
close-stale-contributor-prs.yml ci: prevent workflows from running on forks (#8629) 2026-01-03 13:12:16 -07:00
codespell.yml chore(deps): bump actions/checkout from 5 to 6 (#7230) 2025-11-24 11:45:57 -08:00
Dockerfile.bazel fix: support remote arm64 builds, as well (#9018) 2026-01-10 18:41:08 -08:00
issue-deduplicator.yml ci: prevent workflows from running on forks (#8629) 2026-01-03 13:12:16 -07:00
issue-labeler.yml Updated labeler workflow prompt to include "app" label (#10411) 2026-02-02 13:13:14 -08:00
rust-ci.yml Fix linux-musl release link failures caused by glibc-only libcap artifacts (#11556) 2026-02-12 08:08:32 +00:00
rust-release-prepare.yml ci: prevent workflows from running on forks (#8629) 2026-01-03 13:12:16 -07:00
rust-release-windows.yml ci: capture cargo timings in Rust CI and release workflows (#11543) 2026-02-12 05:54:48 +00:00
rust-release.yml ci: capture cargo timings in Rust CI and release workflows (#11543) 2026-02-12 05:54:48 +00:00
sdk.yml build(linux-sandbox): always compile vendored bubblewrap on Linux; remove CODEX_BWRAP_ENABLE_FFI (#11498) 2026-02-11 21:30:41 -08:00
shell-tool-mcp-ci.yml fix: remove references to corepack (#10138) 2026-01-28 23:31:25 -08:00
shell-tool-mcp.yml Use thin LTO for alpha Rust release builds (#11348) 2026-02-10 11:59:03 -08:00
zstd ci(windows): use DotSlash for zstd in rust-release-windows (#11542) 2026-02-11 20:57:11 -08:00