tawasuyu

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 1572Shell 203Rust 109Markdown 993728 Definitions

mesa-llvmpipe: la campaña de glvnd, probada donde no le cuesta a nadie — y SALE QUE SÍ

  mesa-llvmpipe  b3:7662f5ec25c42cd679da1679c8c6ed7c53cd49d57fa781493ab7ff433d51b9b0

En vez de lanzar 153 rebuilds a ciegas, la campaña se prueba en la única de las tres mesa que tiene
**radio 0 y cero imágenes** (`yupana radio mesa-llvmpipe`: 0 dependientes, «(ninguna declarada)»).
Cambiarla no tira un solo sellado ajeno, así que es el laboratorio exacto.

LA PREGUNTA, que hasta hoy nadie tenía contestada: con `-Dglvnd=true`, ¿mesa produce de verdad el
VENDOR que al despacho le falta? RESPUESTA MEDIDA SOBRE EL ARTEFACTO:

  usr/lib/libEGL_mesa.so.0                     ← el vendor (hoy no existe en ningún lado)
  usr/share/glvnd/egl_vendor.d/50_mesa.json    ← su registro, que es lo que glvnd busca
  usr/lib/libgbm.so.1 · libglapi.so.0 · dri/{swrast,kms_swrast}_dri.so

…y **deja de instalar libEGL.so.1 y libGLESv2.so.2** (los dos `ls` fallan).

⇒ La colisión de sonames del rootfs de KDE —dos libEGL.so.1 distintos en la misma ruta— DESAPARECE
POR CONSTRUCCIÓN con la campaña: mesa ya no reclama esas rutas y el dueño pasa a ser glvnd, que es
exactamente lo que su partición quiere. La campaña deja de ser una apuesta: se sabe qué produce.
Lo que queda por decidir es CUÁNDO pagar, no SI funciona.

EL PRECIO, medido antes de empezar y sin cambiar: `yupana radio mesa` = 148 directos, 154
transitivos, **153 sellados que caen a deuda**, las CINCO imágenes, 123 de ellos en incoming-kde —
la cola que otro agente está moliendo ahora mismo. Por eso esto es una prueba, no la campaña.

⚠ Y cubre SÓLO la mitad de mesa. La otra es que `libglvnd` vuelva a instalar su libEGL.so.1 de
despacho (hoy va `-Degl=false` justamente para no colisionar). Las dos mitades van en la MISMA
campaña o el resultado es el de hoy con otro disfraz. Queda escrito en las dos recetas.

bdecd1c47970b05ab1025a3fd99b330f9e101637 · by Sergio · (1 month ago) · parent 0e35652fb · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +34 −2

diff --git a/recipes/mesa-llvmpipe.toml b/recipes/mesa-llvmpipe.toml
index 993dacc9..da8cc661 100644
--- a/recipes/mesa-llvmpipe.toml
+++ b/recipes/mesa-llvmpipe.toml
@@ -1,3 +1,35 @@
+# ══ 2026-09-13 · ESTA VARIANTE ES EL LABORATORIO DE LA CAMPAÑA glvnd ═══════════════════════════
+# `mesa-llvmpipe` es la ÚNICA de las tres mesa con **radio 0 y cero imágenes** (`yupana radio`:
+# 0 dependientes directos, «(ninguna declarada)»). O sea: se puede cambiar sin que caiga un solo
+# sellado ajeno. Por eso la campaña de glvnd se prueba ACÁ antes de decidirla.
+#
+# LA PREGUNTA QUE RESPONDE, y que hoy nadie tiene contestada: con `-Dglvnd=true`, ¿mesa produce de
+# verdad `libEGL_mesa.so.0` y su JSON en `/usr/share/glvnd/egl_vendor.d/`, y deja de instalar
+# `libEGL.so.1`? Eso es la mitad de vendor del despacho, y es lo que hoy NO existe — por eso
+# `libOpenGL.so.0` enlaza y en runtime no hay nadie detrás.
+#
+# EL PRECIO DE LA CAMPAÑA COMPLETA, medido antes de empezar: `yupana radio mesa` da **148
+# dependientes directos, 154 transitivos, 153 sellados que caen a deuda y las CINCO imágenes**
+# (123 de ellos en `incoming-kde`). Por eso no se hace de paso: se prueba en la variante que no
+# le importa a nadie, y con el resultado en la mano se decide cuándo pagar las otras dos.
+#
+# ══ RESULTADO DE LA PRUEBA (2026-09-13) — SALIÓ QUE SÍ, Y LIMPIO ══════════════════════════════
+# Con `-Dglvnd=true`, este artefacto instala exactamente lo que la campaña necesita y NADA de lo
+# que estorba:
+#     usr/lib/libEGL_mesa.so.0            ← el VENDOR (lo que hoy no existe en ningún lado)
+#     usr/share/glvnd/egl_vendor.d/50_mesa.json   ← su registro, que es lo que glvnd busca
+#     usr/lib/libgbm.so.1 · usr/lib/libglapi.so.0 · usr/lib/dri/{swrast,kms_swrast}_dri.so
+# …y **deja de instalar `libEGL.so.1` y `libGLESv2.so.2`** (comprobado: los dos `ls` fallan).
+#
+# ⇒ La colisión de sonames que hoy hay en el rootfs de KDE **desaparece por construcción**, no por
+# un apaño: con glvnd=true mesa ya no reclama esas rutas, y el dueño pasa a ser glvnd, que es
+# justamente lo que la partición de glvnd quiere. La campaña deja de ser una apuesta: se sabe qué
+# produce. Lo que queda por decidir es CUÁNDO pagar los 153 rebuilds, no SI funciona.
+#
+# ⚠ Y ESTA PRUEBA SÓLO CUBRE LA MITAD DE MESA. La otra mitad es que `libglvnd` vuelva a instalar su
+# `libEGL.so.1` de despacho (hoy va con `-Degl=false` para no colisionar con mesa, ver esa receta):
+# sin eso, `libEGL_mesa.so.0` es un vendor que nadie carga. Las dos mitades van en la MISMA campaña
+# o el resultado es el de hoy con otro disfraz.
 # Mesa 24.0.9 — LLVMPIPE (render por software CON LLVM JIT). Variante de mesa-swrast (softpipe) para
 # el escritorio KDE en VM: kwin exige un GBM/EGL de software COMPLETO, y softpipe no bindea las
 # extensiones que kwin pide ("failed to bind extensions" → "Failed to create gbm device"). llvmpipe
@@ -22,7 +54,7 @@ link        = "dynamic"
 zig_version = "0.13.0"
 
 [build.phases]
-configure = "CC=gcc CXX=g++ LLVM_CONFIG=/usr/bin/llvm-config PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Db_ndebug=true -Dgallium-drivers=swrast -Dvulkan-drivers= -Dllvm=enabled -Dshared-llvm=enabled -Dintel-clc=disabled -Dplatforms=wayland -Dglx=disabled -Dgbm=enabled -Degl=enabled -Dopengl=true -Dgles1=disabled -Dgles2=enabled -Dexpat=enabled -Dzstd=enabled -Dshader-cache=enabled -Dxmlconfig=enabled -Dglvnd=false -Dgallium-rusticl=false -Dgallium-va=disabled -Dgallium-extra-hud=false -Dvideo-codecs= -Dtools= -Dbuild-tests=false -Dvalgrind=disabled -Dlibunwind=disabled"
+configure = "CC=gcc CXX=g++ LLVM_CONFIG=/usr/bin/llvm-config PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Db_ndebug=true -Dgallium-drivers=swrast -Dvulkan-drivers= -Dllvm=enabled -Dshared-llvm=enabled -Dintel-clc=disabled -Dplatforms=wayland -Dglx=disabled -Dgbm=enabled -Degl=enabled -Dopengl=true -Dgles1=disabled -Dgles2=enabled -Dexpat=enabled -Dzstd=enabled -Dshader-cache=enabled -Dxmlconfig=enabled -Dglvnd=true -Dgallium-rusticl=false -Dgallium-va=disabled -Dgallium-extra-hud=false -Dvideo-codecs= -Dtools= -Dbuild-tests=false -Dvalgrind=disabled -Dlibunwind=disabled"
 compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
 install   = "DESTDIR=/out ninja -C output install"
 
@@ -39,4 +71,4 @@ runtime = ["gcc-libs"]
 # llvm18: el libLLVM takana-built (soberano) que llvmpipe JIT-linkea. takana lo materializa en el
 # sandbox en /usr ⇒ /usr/bin/llvm-config es el de LLVM 18 (no el LLVM 22 de Alpine, que mesa 24.0.9
 # no traga). Runtime: libLLVM.so.18 se inyecta a la imagen QEMU (NEEDED sólo libc por -static-libstdc++).
-build = ["llvm18", "meson", "samurai", "python3", "pkgconf", "flex", "bison", "mako", "markupsafe", "packaging", "libdrm", "wayland", "wayland-protocols", "expat", "zlib", "zstd", "libffi"]
+build = ["llvm18", "meson", "samurai", "python3", "pkgconf", "flex", "bison", "mako", "markupsafe", "packaging", "libdrm", "wayland", "wayland-protocols", "expat", "zlib", "zstd", "libffi", "libglvnd"]