gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1389Shell 137Markdown 80Rust 802602 Definiciones

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.

90364fabbf6d3fa2a3129e81b0c029ec2719c3c2 · por Sergio · (hace 1 mes) · padre 428be5e8d · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

2 archivos · +18 −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