xwayland: retirar la receta — la decisión ya estaba escrita y decía que no

Decisión del usuario (2026-09-09): X11 se erradica, y eso incluye no construir el servidor que lo
mantiene vivo. La receta se retira; `xwayland` VUELVE a ser lo que sus propios documentos decían.

⚠ LO QUE APARECIÓ AL MIRAR: esto ya estaba decidido, por escrito y DOS VECES, el 2026-09-03
(commit f64859ba):
  docs/state/targets.toml:143   «`xwayland` sigue acá como RAÍZ pero su receta NO se va a escribir:
                                 lo provee una imagen ajena enjaulada … el hueco se disuelve sin
                                 receta y sin tocar la postura Wayland-only»
  docs/state/qorpa-ajenos.toml  «X11 está fuera de alcance para toda la distro … el Xwayland vive
                                 DENTRO de la imagen —Arch y Fedora ya lo traen— y se cuelga de
                                 nuestro kwin por el socket. La receta no se escribe.»
El 2026-09-08 se escribió igual (3d8c6fc6, «cerrar los 3 huecos que quedaban»), y los dos
documentos siguieron diciendo lo contrario durante toda la jornada de hoy. No hubo que cambiar
ninguno de los dos: alcanzó con borrar la receta para que el repo volviera a coincidir con ellos.

MEDIDO ANTES DE SACARLA, no supuesto:
  · Sólo kwin podía lanzarlo. mutter va con -Dxwayland=false y wlroots con -Dxwayland=disabled ⇒
    GNOME, sway y COSMIC no podían usarlo aunque el binario existiera. Nunca sirvió a más de un
    perfil de los cuatro.
  · NINGUNA app del catálogo necesita servidor X: todo lo gráfico es Wayland nativo (Qt6 con
    qtwayland, GTK3 Wayland-only, mpv, OBS con ENABLE_WAYLAND=ON, foot, fuzzel, swayimg). El
    consumidor que lo justificaba está nombrado en qorpa-ajenos.toml y es Steam, que corre
    enjaulado y TRAE EL SUYO ADENTRO.
  · Y la imagen KDE ya arrancaba sin él: la propia receta contaba que KDE sellaba 1037/1037 con las
    apps X11 muertas. Esto no estrena una configuración, vuelve a una ya probada.

EFECTO EN EL GRAFO, verificado regenerando: `xwayland` deja de ser una receta y pasa a clase
`ajeno` —que es como targets.toml decía que había que contarlo— y el perfil escritorio-kde baja de
304 a 299 nodos con deuda 0. Los cinco que se van son la cadena que sólo él usaba.

⚠ QUEDAN CINCO RECETAS HUÉRFANAS, y no las borro de paso: `libfontenc`, `libXfont2`, `libxkbfile`,
`libxshmfence` y `xkbcomp`. Medido: NADA más en el catálogo las declara, y ninguna es raíz de
ningún perfil ⇒ siguen selladas pero no entran en ninguna imagen. Sacarlas es su propia unidad de
trabajo y su propia decisión.

El triaje pasa de `provisto` a `opcional` con la historia entera en su `porque`, y con eso se cae
el alias `xwayland xwayland` de alias-triaje.txt, que habría afirmado que tenemos una receta con
ese nombre.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LCt3ettR4Z7b6wPCBmbvEV
This commit is contained in:
Sergio
2026-09-09 18:55:20 +00:00
co-authored by Claude Opus 5
parent a35f4dcf1a
commit 71904ebbde
5 changed files with 56 additions and 166 deletions
-1
View File
@@ -25,4 +25,3 @@ qqc2-breeze-style qqc2-breeze-style
shared-mime-info shared-mime-info
uname coreutils
wayland-scanner wayland
xwayland xwayland
+53 -91
View File
@@ -1,16 +1,16 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 1046,
"recipes": 1045,
"nodes": 1047,
"sealed": 1046,
"ajeno": 1
"sealed": 1045,
"ajeno": 2
},
"by_class": {
"ajeno": 1,
"ajeno": 2,
"c": 400,
"go": 362,
"gui": 45,
"gui": 44,
"kernel": 6,
"rust": 233
},
@@ -21,7 +21,8 @@
"ajeno": 1
},
"incoming-kde": {
"sealed": 194
"sealed": 193,
"ajeno": 1
}
},
"by_profile": {
@@ -37,8 +38,9 @@
},
"escritorio-kde": {
"raices": 48,
"clausura": 304,
"sealed": 304
"clausura": 299,
"sealed": 298,
"ajeno": 1
},
"escritorio-mirada": {
"raices": 17,
@@ -46,7 +48,7 @@
"sealed": 37
}
},
"sin_perfil": 648,
"sin_perfil": 653,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -5278,7 +5280,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 27
"dependientes_total": 26
},
"freeze": {
"iname": "freeze",
@@ -13135,7 +13137,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 63
"dependientes_total": 62
},
"libXau": {
"iname": "libXau",
@@ -13157,7 +13159,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 70
"dependientes_total": 69
},
"libXcursor": {
"iname": "libXcursor",
@@ -13208,7 +13210,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 70
"dependientes_total": 69
},
"libXext": {
"iname": "libXext",
@@ -13287,10 +13289,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 1
"perfiles": [],
"dependientes_total": 0
},
"libXi": {
"iname": "libXi",
@@ -13612,7 +13612,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 150
"dependientes_total": 149
},
"libelogind": {
"iname": "libelogind",
@@ -13658,7 +13658,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 22
"dependientes_total": 21
},
"libevdev": {
"iname": "libevdev",
@@ -13766,10 +13766,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 2
"perfiles": [],
"dependientes_total": 1
},
"libgcrypt": {
"iname": "libgcrypt",
@@ -14344,7 +14342,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 34
"dependientes_total": 33
},
"libpthread-stubs": {
"iname": "libpthread-stubs",
@@ -14740,7 +14738,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 70
"dependientes_total": 69
},
"libxcvt": {
"iname": "libxcvt",
@@ -14763,7 +14761,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 2
"dependientes_total": 1
},
"libxkbcommon": {
"iname": "libxkbcommon",
@@ -14792,7 +14790,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 119
"dependientes_total": 118
},
"libxkbfile": {
"iname": "libxkbfile",
@@ -14818,10 +14816,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 2
"perfiles": [],
"dependientes_total": 1
},
"libxml2": {
"iname": "libxml2",
@@ -14911,10 +14907,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 1
"perfiles": [],
"dependientes_total": 0
},
"libxslt": {
"iname": "libxslt",
@@ -15755,7 +15749,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 147
"dependientes_total": 146
},
"mesa-llvmpipe": {
"iname": "mesa-llvmpipe",
@@ -15851,7 +15845,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 124
"dependientes_total": 123
},
"micro": {
"iname": "micro",
@@ -17340,7 +17334,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 23
"dependientes_total": 22
},
"openssl-threads": {
"iname": "openssl-threads",
@@ -18069,7 +18063,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 46
"dependientes_total": 45
},
"pkgconf": {
"iname": "pkgconf",
@@ -18093,7 +18087,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 396
"dependientes_total": 395
},
"plasma-activities": {
"iname": "plasma-activities",
@@ -19652,7 +19646,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 315
"dependientes_total": 314
},
"qcoro": {
"iname": "qcoro",
@@ -20877,7 +20871,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 267
"dependientes_total": 266
},
"sassc": {
"iname": "sassc",
@@ -23422,7 +23416,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 26
"dependientes_total": 25
},
"uutils": {
"iname": "uutils",
@@ -23993,7 +23987,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 161
"dependientes_total": 160
},
"wayland-protocols": {
"iname": "wayland-protocols",
@@ -24021,7 +24015,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 58
"dependientes_total": 57
},
"websocketd": {
"iname": "websocketd",
@@ -24540,10 +24534,8 @@
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 1
"perfiles": [],
"dependientes_total": 0
},
"xkeyboard-config": {
"iname": "xkeyboard-config",
@@ -24569,7 +24561,7 @@
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 7
"dependientes_total": 6
},
"xorgproto": {
"iname": "xorgproto",
@@ -24592,7 +24584,7 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 78
"dependientes_total": 77
},
"xorriso": {
"iname": "xorriso",
@@ -24681,49 +24673,19 @@
"perfiles": [
"escritorio-kde"
],
"dependientes_total": 6
"dependientes_total": 5
},
"xwayland": {
"iname": "xwayland",
"version": "24.1.13",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"freetype-shared",
"libX11",
"libXau",
"libXdmcp",
"libXfont2",
"libdrm",
"libepoxy",
"libfontenc",
"libpng-shared",
"libxcb",
"libxcvt",
"libxkbcommon",
"libxkbfile",
"libxshmfence",
"mesa",
"meson",
"openssl",
"pixman",
"pkgconf",
"python3",
"samurai",
"util-macros",
"wayland",
"wayland-protocols",
"xkbcomp",
"xkeyboard-config",
"xorgproto",
"xtrans",
"zlib"
],
"cls": "gui",
"version": null,
"link": null,
"compiler": null,
"deps": [],
"cls": "ajeno",
"queue": "incoming-kde",
"foreign": false,
"hash": "b3:d43f7ba02a1f9f4b2cf01e1d03610020779991fb13adbd804f5dd3007244bf3d",
"state": "sealed",
"imagen": "arch",
"hash": null,
"state": "ajeno",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
@@ -25082,7 +25044,7 @@
"escritorio-mirada",
"escritorio-sway"
],
"dependientes_total": 113
"dependientes_total": 112
},
"zlib-ng": {
"iname": "zlib-ng",
+1 -1
View File
@@ -40,7 +40,7 @@
},
"escritorio-kde": {
"grafo": "docs/state/build-state-kde.json",
"nodos": 304,
"nodos": 299,
"en_deuda": 0,
"ondas": 0,
"profundidad": 0,
+2 -4
View File
@@ -2509,10 +2509,8 @@ perfiles = ["escritorio-cosmic", "escritorio-gnome", "escritorio-kde", "escritor
piden = ["ffmpeg"]
[candidato."xwayland"]
veredicto = "provisto"
sugerencia = "opcional?"
provee = "xwayland"
porque = "sin él NINGUNA app X11 corre en el escritorio Wayland. Gap de RUNTIME"
veredicto = "opcional"
porque = "X11 está FUERA DE ALCANCE para toda la distro y la decisión ya estaba escrita dos veces el 2026-09-03 (commit f64859ba): targets.toml y qorpa-ajenos.toml dicen «la receta no se escribe» — el Xwayland vive DENTRO de la imagen ajena enjaulada (Arch ya lo trae) y se cuelga de kwin por el socket. Se escribió igual el 2026-09-08 y se RETIRA el 2026-09-09 por decisión del usuario. Medido antes de sacarla: sólo kwin podía lanzarlo (mutter va -Dxwayland=false y wlroots -Dxwayland=disabled) y NINGUNA app del catálogo necesita servidor X — todo lo gráfico es Wayland nativo. Sigue como raíz en targets.toml a propósito, contado en clase `ajeno`"
perfiles = ["escritorio-kde"]
piden = ["kwin"]
ausente = true # ya no aparece en el último barrido de la frontera
-69
View File
@@ -1,69 +0,0 @@
# xwayland 24.1.13 — el servidor X que corre DENTRO de una sesión Wayland para que las apps X11
# sigan funcionando. NO es «volver a X11»: la distro es Wayland-only y eso se refiere al servidor de
# la sesión y al display manager. Xwayland es lo contrario — la capa que permite jubilar X11 SIN
# perder las aplicaciones que aún no se portaron.
#
# POR QUÉ AHORA. Es el último HUECO de `escritorio-kde` en la frontera, y estaba declarado como raíz
# en `docs/state/targets.toml` desde el 2026-07-22 («sin apps X11»). `kwin` ya se construye con
# `-DKWIN_BUILD_X11=ON`, o sea que el lado del compositor está compilado: lo que faltaba era el
# BINARIO que kwin lanza. Hueco de RUNTIME puro — nada de build lo necesitaba y por eso KDE sellaba
# 1037/1037 con las apps X11 muertas.
#
# ⚠ CADENA DE 4 ESLABONES PREVIOS, todos autorados en la misma tanda porque ninguno existía:
# `libfontenc` → `libXfont2` (la capa de fuentes DEL SERVIDOR, no del cliente), `libxkbfile` y
# `libxshmfence`. Su meson los pide sin `required: false`, así que no son opcionales.
name = "xwayland"
version = "24.1.13"
license = "MIT"
[source]
tarball = "https://www.x.org/releases/individual/xserver/xwayland-24.1.13.tar.xz"
sha256 = "173aea3d6f79609164c04528e1c8e4c9b60fcd59391c3c9dad4667297d727fb6"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
# Apagado lo que esta distro no tiene ni quiere:
# xvfb — servidor de pantalla virtual, no pinta nada acá
# secure-rpc — pide libtirpc, que no está en el catálogo
# xdmcp — protocolo de display manager remoto; no hay XDM en una distro Wayland-only
# xwayland_ei — emulación de entrada por libei, que tampoco tenemos
# glx — ⚠ NO es una preferencia: `glx/meson.build:43` pide `dependency('gl')` y en esta
# distro NINGUNA cola publica `gl.pc` ni `libGL.so` (las tres recetas de mesa van
# con glx y glvnd apagados, decisión de catálogo anterior a esto). Consecuencia
# honesta: las apps X11 corren en 2D bajo Xwayland; las que piden OpenGL de
# escritorio ya estaban bloqueadas en toda la distro, no las bloquea esta receta.
# ⚠ El `meson.build` RAÍZ engaña: ahí `build_glx` sólo enciende una tabla hash y
# parece gratis. El requisito de verdad está en el subdirectorio.
# `xkb_dir` apunta a los datos de `xkeyboard-config`, que ya está en el corpus: sin eso el servidor
# arranca sin mapa de teclado, que es el mismo síntoma que ya nos costó una noche en sway.
configure = "meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Dxvfb=false -Dsecure-rpc=false -Dxdmcp=false -Dxdm-auth-1=false -Dxwayland_ei=false -Dglx=false -Dxkb_dir=/usr/share/X11/xkb -Dxkb_output_dir=/var/lib/xkb"
compile = "ninja -C output"
install = "DESTDIR=/out meson install -C output --no-rebuild"
[deps]
# `xkbcomp` va en RUNTIME, no en build: Xwayland lo lanza como SUBPROCESO para compilar el mapa de
# teclado (`xkb/ddxLoad.c`, XkbRunXkbComp). Su meson lo pide con `required: false` —sólo para
# averiguar rutas—, así que sin él la receta COMPILA IGUAL y el servidor arranca sin teclado. El
# propio fuente lo dice: «Errors from xkbcomp are not fatal to the X server». Un hueco que el build
# no puede delatar, encontrado leyendo la fuente y no esperando a que fallara.
runtime = ["xkbcomp"]
# ⚠ Las deps de hammer NO son transitivas: va la clausura entera, no la primera capa.
build = ["meson", "samurai", "python3", "pkgconf", "util-macros",
"xorgproto", "xtrans", "libX11", "libxcb", "libXau", "libXdmcp",
"libfontenc", "libXfont2", "libxkbfile", "libxshmfence",
"pixman", "libdrm", "mesa", "libepoxy", "libxcvt", "libxkbcommon",
"wayland", "wayland-protocols", "freetype-shared", "libpng-shared", "zlib", "xkeyboard-config",
# SHA-1: el servidor lo usa para las cookies de autorización (XDM-AUTHORIZATION). Su meson
# prueba libsha1 → nettle → libgcrypt → openssl y ABORTA si no hay ninguna («No suitable SHA1
# implementation found»). Se elige `openssl`, que ya está en el catálogo y en la clausura de
# media cola KDE, en vez de traer nettle o libsha1 sólo para esto.
"openssl"]
# ⚠ `freetype-shared` y `libpng-shared`, no las estáticas, y `libpng` aunque xwayland no lo use:
# la cadena de pkg-config es `xfont2.pc` → `freetype2.pc` → `Requires: zlib, libpng`, y se
# resuelve TRANSITIVAMENTE. Sin libpng el meson dice «Run-time dependency xfont2 found: NO»,
# culpando a xfont2, que está perfectamente instalada. Compartidas porque es lo que enlaza
# libXfont2.so: mezclar la estática ahí revienta en PIC.