firefox: RUST_TARGET — lo exige el parche de Alpine, no Firefox
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.
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +11 −0
- recipes/firefox.toml +11 −0
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