🔧 Fix musl compile-fallback gaps and probe-rs crate name 🔧

Root-caused and fixed the remaining tool-inventory gaps found during
this session's verification of the GitHub-rate-limit fix's rebuild.

- Dockerfile: added `apk add openssl-dev openssl-libs-static pkgconfig`
  before the compile-fallback loop — Alpine's openssl-dev only ships
  shared libs, and cargo-public-api/cargo-dist/sea-orm-cli link OpenSSL
  statically against musl, which was failing with `cannot find -lssl`/
  `-lcrypto`. Confirmed fix in a standalone debug container: all three
  now `cargo binstall -y` successfully.
- Dockerfile: fixed `probe-rs` -> `probe-rs-tools` in the main
  prebuilt-fetch loop. `probe-rs` is a library crate with no installable
  binary; the CLI (`probe-rs`, `cargo-flash`, `cargo-embed`) is
  published under `probe-rs-tools`, which has a musl prebuilt via
  QuickInstall. Removed it from the compile-fallback loop since it no
  longer needs it.
- TODO.AI.md: closed the GitHub rate-limiting section (0 403s confirmed
  across a fresh --no-cache multi-platform build); recorded final
  tool-inventory status (6 false positives, 3 fixed, probe-rs fixed,
  cargo-spellcheck documented as a genuine open limitation — its
  hunspell-sys build script SIGSEGVs under this musl cross-compile
  environment even with clang/g++ deps present, not an apk-fixable gap);
  documented the failed `cargo zigbuild` mingw-arm64 workaround attempt
  under the existing mingw-w64-gcc limitation section.
This commit is contained in:
2026-08-21 16:39:10 -04:00
parent 7870bf4859
commit d6e4022aff
2 changed files with 91 additions and 30 deletions
+27 -1
View File
@@ -159,13 +159,39 @@ RUN --mount=type=cache,id=cargo-registry-native,sharing=shared,target=/usr/local
cross \
samply \
flamegraph \
probe-rs \
probe-rs-tools \
sqlx-cli \
sea-orm-cli; \
do \
cargo binstall -y --disable-strategies compile --target "${RUST_TARGET}" "${tool}" || true; \
done
# A handful of tools ship no prebuilt for musl targets at all (verified via
# `cargo binstall` "Fallback to cargo-install is disabled" on both amd64 and
# arm64 — a 404 from every prebuilt source, not a rate-limit issue). For just
# these, allow the compile fallback: this stage already cross-links via the
# zig wrapper scripts above, so compiling here is a native cross-build, not
# QEMU emulation, and stays fast for this small a tool set.
# openssl-libs-static is required alongside openssl-dev: Alpine's openssl-dev
# only ships the shared libs, and these tools link OpenSSL statically for the
# musl target — without it, linking fails with "cannot find -lssl"/"-lcrypto"
# (reproduced and confirmed in a standalone debug container this session).
RUN apk add --no-cache openssl-dev openssl-libs-static pkgconfig
RUN --mount=type=cache,id=cargo-registry-native,sharing=shared,target=/usr/local/cargo/registry \
--mount=type=cache,id=cargo-git-native,sharing=locked,target=/usr/local/cargo/git \
--mount=type=secret,id=github_token,env=GITHUB_TOKEN,required=false \
set -o pipefail; \
RUST_TARGET="$(cat /tmp/rust-target)"; \
for tool in \
taplo-cli \
cargo-public-api \
cargo-spellcheck \
cargo-dist \
sea-orm-cli; \
do \
cargo binstall -y --target "${RUST_TARGET}" "${tool}" || true; \
done
FROM ${PULL_URL}:${DISTRO_VERSION} AS build
ARG TZ
ARG USER