nodejs y firefox: strip_debug — medido, no supuesto
El nodejs que selló en el LXC sin strip pesa 984 MB, de los cuales .debug_info son 497 MB y .debug_line otros 43: MÁS DE LA MITAD del artefacto es información de depuración, para una herramienta que nadie va a depurar y que ni siquiera se publica. Se aplica también a firefox ANTES de construirlo, que es donde importa: Firefox es varias veces V8 y sin strip su artefacto entraría en varios GB. El store no es sólo disco — se sincroniza hub↔worker y se respalda. Es el hallazgo del SDD 23: el 79% del contenido binario del store era .debug_*, y quitarlo hace que artefactos que no reproducían PASEN a reproducir, porque lo que difería eran las rutas del árbol de build embebidas en esas secciones. El campo entra en hash_inputs a propósito (cambia el contenido) y usa zig objcopy, que siempre está en el sandbox ⇒ no agrega dep de build. Node se reconstruye.
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
2 archivos · +18 −0
- recipes/firefox.toml +13 −0
- recipes/nodejs.toml +5 −0
diff --git a/recipes/firefox.toml b/recipes/firefox.toml
index 215db017..300c83b0 100644
--- a/recipes/firefox.toml
+++ b/recipes/firefox.toml
@@ -80,6 +80,19 @@ compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
+# ══ `strip_debug`: SIN ESTO EL ARTEFACTO SERÍA INMANEJABLE ═════════════════════════════════════
+# Medido en el `nodejs` que acaba de sellar sin strip: su binario pesa **984 MB, de los cuales
+# `.debug_info` son 497 MB y `.debug_line` otros 43** — más de la mitad del artefacto es información
+# de depuración. Firefox es varias veces V8, así que sin strip su artefacto entraría en varios GB, y
+# el store no es sólo disco: se sincroniza hub↔worker y se respalda.
+#
+# Es además el hallazgo del SDD 23: el 79% del contenido binario del store era `.debug_*`, y quitarlo
+# hace que artefactos que no reproducían PASEN a reproducir, porque lo que difería eran las rutas del
+# árbol de build embebidas en esas secciones.
+#
+# Entra en `hash_inputs` A PROPÓSITO (cambia el contenido del artefacto), y usa `zig objcopy`, que
+# siempre está en el sandbox ⇒ no agrega una dep de build.
+strip_debug = true
[build.phases]
configure = '''
diff --git a/recipes/nodejs.toml b/recipes/nodejs.toml
index 658efa93..b79e824d 100644
--- a/recipes/nodejs.toml
+++ b/recipes/nodejs.toml
@@ -35,6 +35,11 @@ compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
+# `strip_debug`: la primera vuelta selló SIN esto y el binario salió de **984 MB, con `.debug_info`
+# de 497 MB y `.debug_line` de 43** — más de la mitad del artefacto era información de depuración,
+# para una herramienta que nadie va a depurar. Entra en `hash_inputs` a propósito (cambia el
+# contenido) y usa `zig objcopy`, que ya está en el sandbox.
+strip_debug = true
[build.phases]
# ⚠ `SIMDJSON_IMPLEMENTATION_ICELAKE=0` — el simdjson que Node bundlea trae un kernel AVX-512 y