From c104a64462834772aebe69bf743416d64e2a90d4 Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 4 Sep 2026 22:04:23 +0000 Subject: [PATCH] =?UTF-8?q?firefox:=20RUST=5FTARGET=20=E2=80=94=20lo=20exi?= =?UTF-8?q?ge=20el=20parche=20de=20Alpine,=20no=20Firefox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cuarto fallo de configure: KeyError: RUST_TARGET. Se lee como un bug de Firefox y es en realidad el CONTRATO del parche que trajimos: fix-rust-target.patch reemplaza la autodetección del triple de Rust por un os.environ["RUST_TARGET"] pelado, y el APKBUILD de Alpine lo exporta como $CTARGET. Traer el parche sin la variable es traer media cosa. El valor NO se adivinó: sale de ls .dev-fs/alpine/usr/lib/rustlib/ en el lab, que da x86_64-alpine-linux-musl. El rustc del sandbox es el de Alpine, no el del host — el del host es x86_64-unknown-linux-gnu y usarlo habría producido un cross-compile silencioso, que es peor que un error. Va en las TRES fases: mach lo vuelve a leer al compilar e instalar. Van cuatro muros de configure y cada uno destapó al siguiente: linker → ar → libstdc++ estática (que forzó compiler=gcc) → RUST_TARGET. --- recipes/firefox.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/recipes/firefox.toml b/recipes/firefox.toml index 5431e703..216af9f3 100644 --- a/recipes/firefox.toml +++ b/recipes/firefox.toml @@ -127,6 +127,15 @@ configure = ''' export MOZBUILD_STATE_PATH="$PWD/.mozbuild" export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export MOZ_NOSPAM=1 +# ── RUST_TARGET: lo EXIGE el parche de Alpine, no Firefox ───────────────────────────────────── +# `fix-rust-target.patch` REEMPLAZA la autodetección del triple de Rust por un +# `os.environ['RUST_TARGET']` pelado. Sin la variable, configure muere con +# `KeyError: 'RUST_TARGET'` — que se lee como un bug de Firefox y es en realidad el contrato del +# parche: el APKBUILD de Alpine lo exporta como `$CTARGET` y acá hay que hacer lo propio. +# El valor NO se adivina: sale de `ls .dev-fs/alpine/usr/lib/rustlib/` en el lab, que es +# `x86_64-alpine-linux-musl` — el rustc del sandbox es el de Alpine, no el del host (el del host es +# `x86_64-unknown-linux-gnu` y usarlo produciría un cross-compile silencioso). +export RUST_TARGET=x86_64-alpine-linux-musl cat > .mozconfig <<'MOZ' ac_add_options --prefix=/usr ac_add_options --enable-application=browser @@ -161,6 +170,7 @@ MOZ # del host (medido en el LXC: 186 GiB en vez de 16), así que en un contenedor esta cuenta se degrada # a `nproc`. Es un tope, no una garantía. compile = ''' +export RUST_TARGET=x86_64-alpine-linux-musl # ver la nota en la fase configure export MOZBUILD_STATE_PATH="$PWD/.mozbuild" export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export MOZ_NOSPAM=1 @@ -171,6 +181,7 @@ echo "mach build -j$j (MemTotal ${gib} GiB, nproc $n)" ./mach build -j"$j" ''' install = ''' +export RUST_TARGET=x86_64-alpine-linux-musl # ver la nota en la fase configure export MOZBUILD_STATE_PATH="$PWD/.mozbuild" export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system DESTDIR=/out ./mach install