Etapa G: BUMP de toolchain del catálogo 1.91.1→1.96 (destraba MSRV) + oxlint/ruff (101→103)

El usuario aprobó subir el rustc del sandbox. El rootfs de build (.dev-fs/alpine) migró a
repos Alpine edge: rust/cargo 1.96.0 (+ gcc 15.2/musl 1.2.6/llvm22) + clang-dev/clang-libs
(libclang p/bindgen de los *-sys). bootstrap-devfs.sh actualizado para reproducirlo. El 4/4
NO se afecta (usa SWAP_RUST con el rust hammer-built 1.91.1); esto es el toolchain del CATÁLOGO.

Destrabados+promovidos: oxlint (1.94) y ruff (1.94) construyen+sellan static-musl. ouch lleva
gueto gcc pero queda staged: sus deps C++ (unrar-ng-sys/libbzip3-sys) chocan en el link final
(-lstdc++ vs la libc++ de zig). Frontera C++ = ortogonal al MSRV.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 12:48:24 -04:00
co-authored by Claude Opus 4.8
parent 420cb822df
commit e393c6bd4d
4 changed files with 18 additions and 2 deletions
+3 -1
View File
@@ -9,8 +9,10 @@ version = "0.8.0"
repo = "https://github.com/ouch-org/ouch"
commit = "d6e80634b63d53a18cb32dd1cbd613b6a3b61e45"
# GUETO gcc: ouch vendorea bzip2/libbzip3-sys/zstd-sys/lzma (C); cc-rs los compila y zig-cc
# falla. compiler="gcc" usa el musl gcc de Alpine. (MSRV 1.93 ⇒ rootfs edge rust 1.96.)
[build]
compiler = "zig-cc"
compiler = "gcc"
target = "x86_64-linux-musl"
link = "static"
flags = ["--bin", "ouch"]
+15 -1
View File
@@ -113,6 +113,18 @@ else
# y Alpine no trae ese std (no hay rustup). Falta resolver el toolchain Rust del lab (plan C.2)
# — ver docs/runbooks/stage1-vm-boot.md §8. Hasta entonces, los componentes C (musl, busybox)
# sí construyen end-to-end.
# BUMP DELIBERADO de toolchain (2026-06-22, [[cargo-recipe-msrv-ceiling]]): Alpine v3.23 trae
# rust 1.91.1 ⇒ techo MSRV que bloquea recetas modernas (ouch/uv 1.93, oxlint/ruff 1.94,
# zellij 1.92). edge trae rust 1.96.0. Apuntamos los repos del rootfs a EDGE para que `apk add`
# resuelva rust/cargo/clang 1.96 (+ arrastra gcc 15.2/musl 1.2.6/llvm22 como deps). El of_tree
# del 4/4 NO depende de esto (usa SWAP_RUST con el rust hammer-built); esto es el toolchain del
# CATÁLOGO. Para anclar una versión exacta en vez de un edge rodante, pinear un snapshot de edge.
if [[ -f "$ROOTFS/etc/apk/repositories" ]]; then
printf '%s\n%s\n' \
'https://dl-cdn.alpinelinux.org/alpine/edge/main' \
'https://dl-cdn.alpinelinux.org/alpine/edge/community' \
> "$ROOTFS/etc/apk/repositories"
fi
# `linux-headers`: UAPI del kernel (linux/kd.h, etc.) que zig cc NO bundlea; busybox y otros
# paquetes la necesitan. zig cc nativo la encuentra en /usr/include. (Lo destapó la
# verificación de reproducibilidad de Stage 2: con el config determinista, los applets de
@@ -140,7 +152,9 @@ else
# NOTA: `openssl-dev` YA NO va aquí — de-Alpinizado a recipes/openssl.toml (libcrypto estática,
# deps.build del kernel). El host-tool certs/extract-cert lo enlaza desde la capa overlay hammer.
# El runtime libcrypto3/libssl3 (que curl/git necesitan) lo trae Alpine aparte, no es openssl-dev.
NEEDED="make autoconf automake m4 patch coreutils libtool pkgconf bash binutils g++ zlib-dev rust cargo linux-headers bubblewrap git curl kmod"
# `clang-dev clang-libs`: aportan libclang.so — `bindgen` (que usan varios *-sys: libbzip3-sys,
# etc.) lo carga en build para generar bindings de los headers C. No lo trae el base.
NEEDED="make autoconf automake m4 patch coreutils libtool pkgconf bash binutils g++ zlib-dev rust cargo clang-dev clang-libs linux-headers bubblewrap git curl kmod"
missing=""
for pkg in $NEEDED; do
# apk info -e devuelve el paquete si está instalado, vacío si no.