KDE: cerrar los 3 huecos que quedaban — polkit-qt-1, qqc2-breeze-style y xwayland
La frontera queda en CERO huecos y cero pendientes, y el perfil escritorio-kde en 302/302
sellados. Los tres eran huecos de RUNTIME: KDE sellaba 1037/1037 con la autorización muerta,
los controles QML en estilo genérico y ninguna app X11 capaz de arrancar.
polkit-qt-1 0.201.1 — al conectarlo se vio lo que ninguna métrica decía: kauth NO traía plugin
de backend, ni siquiera el directorio. Ahora trae kf6/kauth/backend/kauth_backend_plugin.so con
el símbolo KAuth::Polkit1Backend. Cascada de 26 dependientes reconstruida, 26/26 sin fallos.
Añadirlo cambió la rama del CMake y pidió kwindowsystem y tras él las X11 — cada cosa dicha por
el configure al fallar, no supuesta.
qqc2-breeze-style 6.7.2 (la del stack Plasma, NO la 6.7.4 de nixpkgs: mezclar versiones de un
mismo release es pedir desajuste de ABI en los plugins QML, que se ve en runtime y no al
construir). Enganchado a plasma-workspace como deps.runtime, no build: es un plugin que Qt carga
por la ruta de imports. Verificado que runtime no re-hashea ⇒ cero rebuilds.
xwayland 24.1.13 — resultó ser una CADENA de seis: libfontenc, libXfont2, libxkbfile,
libxshmfence, xkbcomp y el servidor. Ninguna existía. Tres tropiezos con su lección:
· libxkbfile 1.2.0 ya no trae ./configure: es sólo meson. El resto de las libs X11 de la cola
son autotools, así que copiar su plantilla era lo natural y estaba mal.
· «checking for freetype2... no» culpaba a freetype, que estaba perfecta: freetype2.pc declara
Requires: zlib, libpng y pkg-config resuelve transitivamente. El mensaje señala al paquete
equivocado.
· libXfont2 construye una .so y moría en «recompile with -fPIC» contra la libfreetype.a
estática. Van las variantes -shared.
Y xkbcomp es el eslabón que NINGÚN build habría delatado: xwayland lo lanza como subproceso en
runtime (xkb/ddxLoad.c) y su meson lo pide con required:false, así que la receta compila igual
y el servidor arranca sin teclado. Se encontró leyendo la fuente.
⚠ Sin GLX, y no por preferencia: glx/meson.build:43 pide dependency('gl') y ninguna cola publica
gl.pc — las tres recetas de mesa van con glx y glvnd apagados por decisión anterior. Las apps
X11 corren en 2D. ⚠ Y el meson.build RAÍZ engaña: ahí build_glx sólo enciende una tabla hash y
parece gratis; yo mismo di la preocupación por infundada mirando el fichero equivocado.
Verificado: Xwayland arranca y se identifica («The X.Org Foundation Xwayland Version 24.1.13»),
las 6 REPRODUCEN bit a bit, los 5 grafos con deuda 0, y los 6 tarballs en el mirror.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
This commit is contained in:
@@ -5147,7 +5147,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 32
|
"dependientes_total": 30
|
||||||
},
|
},
|
||||||
"freetype-shared": {
|
"freetype-shared": {
|
||||||
"iname": "freetype-shared",
|
"iname": "freetype-shared",
|
||||||
@@ -5172,7 +5172,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 25
|
"dependientes_total": 27
|
||||||
},
|
},
|
||||||
"freeze": {
|
"freeze": {
|
||||||
"iname": "freeze",
|
"iname": "freeze",
|
||||||
@@ -10075,7 +10075,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 32
|
"dependientes_total": 34
|
||||||
},
|
},
|
||||||
"libqalculate": {
|
"libqalculate": {
|
||||||
"iname": "libqalculate",
|
"iname": "libqalculate",
|
||||||
@@ -11346,7 +11346,7 @@
|
|||||||
"escritorio-mirada",
|
"escritorio-mirada",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 122
|
"dependientes_total": 123
|
||||||
},
|
},
|
||||||
"micro": {
|
"micro": {
|
||||||
"iname": "micro",
|
"iname": "micro",
|
||||||
@@ -14288,7 +14288,7 @@
|
|||||||
"escritorio-mirada",
|
"escritorio-mirada",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 264
|
"dependientes_total": 265
|
||||||
},
|
},
|
||||||
"sassc": {
|
"sassc": {
|
||||||
"iname": "sassc",
|
"iname": "sassc",
|
||||||
|
|||||||
@@ -4857,7 +4857,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 32
|
"dependientes_total": 30
|
||||||
},
|
},
|
||||||
"freetype-shared": {
|
"freetype-shared": {
|
||||||
"iname": "freetype-shared",
|
"iname": "freetype-shared",
|
||||||
@@ -4882,7 +4882,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 25
|
"dependientes_total": 27
|
||||||
},
|
},
|
||||||
"freeze": {
|
"freeze": {
|
||||||
"iname": "freeze",
|
"iname": "freeze",
|
||||||
@@ -10567,7 +10567,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 32
|
"dependientes_total": 34
|
||||||
},
|
},
|
||||||
"libpsl": {
|
"libpsl": {
|
||||||
"iname": "libpsl",
|
"iname": "libpsl",
|
||||||
@@ -12006,7 +12006,7 @@
|
|||||||
"escritorio-mirada",
|
"escritorio-mirada",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 122
|
"dependientes_total": 123
|
||||||
},
|
},
|
||||||
"micro": {
|
"micro": {
|
||||||
"iname": "micro",
|
"iname": "micro",
|
||||||
@@ -15192,7 +15192,7 @@
|
|||||||
"escritorio-mirada",
|
"escritorio-mirada",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 264
|
"dependientes_total": 265
|
||||||
},
|
},
|
||||||
"sassc": {
|
"sassc": {
|
||||||
"iname": "sassc",
|
"iname": "sassc",
|
||||||
|
|||||||
+197
-212
File diff suppressed because it is too large
Load Diff
@@ -4722,7 +4722,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 32
|
"dependientes_total": 30
|
||||||
},
|
},
|
||||||
"freetype-shared": {
|
"freetype-shared": {
|
||||||
"iname": "freetype-shared",
|
"iname": "freetype-shared",
|
||||||
@@ -4747,7 +4747,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 25
|
"dependientes_total": 27
|
||||||
},
|
},
|
||||||
"freeze": {
|
"freeze": {
|
||||||
"iname": "freeze",
|
"iname": "freeze",
|
||||||
@@ -9724,7 +9724,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 32
|
"dependientes_total": 34
|
||||||
},
|
},
|
||||||
"libsass": {
|
"libsass": {
|
||||||
"iname": "libsass",
|
"iname": "libsass",
|
||||||
@@ -10969,7 +10969,7 @@
|
|||||||
"escritorio-mirada",
|
"escritorio-mirada",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 122
|
"dependientes_total": 123
|
||||||
},
|
},
|
||||||
"micro": {
|
"micro": {
|
||||||
"iname": "micro",
|
"iname": "micro",
|
||||||
@@ -13870,7 +13870,7 @@
|
|||||||
"escritorio-mirada",
|
"escritorio-mirada",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 264
|
"dependientes_total": 265
|
||||||
},
|
},
|
||||||
"sassc": {
|
"sassc": {
|
||||||
"iname": "sassc",
|
"iname": "sassc",
|
||||||
|
|||||||
@@ -4676,7 +4676,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 32
|
"dependientes_total": 30
|
||||||
},
|
},
|
||||||
"freetype-shared": {
|
"freetype-shared": {
|
||||||
"iname": "freetype-shared",
|
"iname": "freetype-shared",
|
||||||
@@ -4701,7 +4701,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 25
|
"dependientes_total": 27
|
||||||
},
|
},
|
||||||
"freeze": {
|
"freeze": {
|
||||||
"iname": "freeze",
|
"iname": "freeze",
|
||||||
@@ -9607,7 +9607,7 @@
|
|||||||
"escritorio-kde",
|
"escritorio-kde",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 32
|
"dependientes_total": 34
|
||||||
},
|
},
|
||||||
"libsass": {
|
"libsass": {
|
||||||
"iname": "libsass",
|
"iname": "libsass",
|
||||||
@@ -10852,7 +10852,7 @@
|
|||||||
"escritorio-mirada",
|
"escritorio-mirada",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 122
|
"dependientes_total": 123
|
||||||
},
|
},
|
||||||
"micro": {
|
"micro": {
|
||||||
"iname": "micro",
|
"iname": "micro",
|
||||||
@@ -13753,7 +13753,7 @@
|
|||||||
"escritorio-mirada",
|
"escritorio-mirada",
|
||||||
"escritorio-sway"
|
"escritorio-sway"
|
||||||
],
|
],
|
||||||
"dependientes_total": 264
|
"dependientes_total": 265
|
||||||
},
|
},
|
||||||
"sassc": {
|
"sassc": {
|
||||||
"iname": "sassc",
|
"iname": "sassc",
|
||||||
|
|||||||
@@ -885,7 +885,8 @@ perfiles = ["base", "cli", "escritorio-kde"]
|
|||||||
piden = ["util-linux"]
|
piden = ["util-linux"]
|
||||||
|
|
||||||
[candidato."polkit-qt-1"]
|
[candidato."polkit-qt-1"]
|
||||||
veredicto = "hueco"
|
veredicto = "provisto"
|
||||||
|
provee = "polkit-qt-1"
|
||||||
porque = "sin él Plasma no puede pedir autorización: montar discos, cambiar ajustes del sistema"
|
porque = "sin él Plasma no puede pedir autorización: montar discos, cambiar ajustes del sistema"
|
||||||
perfiles = ["escritorio-kde"]
|
perfiles = ["escritorio-kde"]
|
||||||
piden = ["kauth", "plasma-workspace"]
|
piden = ["kauth", "plasma-workspace"]
|
||||||
@@ -955,7 +956,8 @@ perfiles = ["escritorio-kde"]
|
|||||||
piden = ["kwallet"]
|
piden = ["kwallet"]
|
||||||
|
|
||||||
[candidato."qqc2-breeze-style"]
|
[candidato."qqc2-breeze-style"]
|
||||||
veredicto = "hueco"
|
veredicto = "provisto"
|
||||||
|
provee = "qqc2-breeze-style"
|
||||||
porque = "el estilo QML que Plasma usa de verdad; sin él los controles caen a un estilo genérico"
|
porque = "el estilo QML que Plasma usa de verdad; sin él los controles caen a un estilo genérico"
|
||||||
perfiles = ["escritorio-kde"]
|
perfiles = ["escritorio-kde"]
|
||||||
piden = ["kscreenlocker", "plasma-workspace"]
|
piden = ["kscreenlocker", "plasma-workspace"]
|
||||||
@@ -1197,8 +1199,9 @@ perfiles = ["escritorio-kde", "escritorio-mirada"]
|
|||||||
piden = ["libxkbcommon"]
|
piden = ["libxkbcommon"]
|
||||||
|
|
||||||
[candidato."xwayland"]
|
[candidato."xwayland"]
|
||||||
veredicto = "hueco"
|
veredicto = "provisto"
|
||||||
sugerencia = "opcional?"
|
sugerencia = "opcional?"
|
||||||
|
provee = "xwayland"
|
||||||
porque = "sin él NINGUNA app X11 corre en el escritorio Wayland. Gap de RUNTIME"
|
porque = "sin él NINGUNA app X11 corre en el escritorio Wayland. Gap de RUNTIME"
|
||||||
perfiles = ["escritorio-kde"]
|
perfiles = ["escritorio-kde"]
|
||||||
piden = ["kwin"]
|
piden = ["kwin"]
|
||||||
|
|||||||
@@ -61,3 +61,9 @@ json-glib e346cb599d070d407a853725cec97e6cd1b0a0a647b6767612093120050a5fa7 2026-
|
|||||||
zathura 685efcac30d6821ac9ac0a0f492815b2a469c3360bb3a3c1a6637b3258193dd5 2026-09-08 reproduce
|
zathura 685efcac30d6821ac9ac0a0f492815b2a469c3360bb3a3c1a6637b3258193dd5 2026-09-08 reproduce
|
||||||
zathura-pdf-poppler 04c8b7bac22a303d7e4edaebcf91833277e52a2fdcf0a741d165176c9b49afd8 2026-09-08 reproduce
|
zathura-pdf-poppler 04c8b7bac22a303d7e4edaebcf91833277e52a2fdcf0a741d165176c9b49afd8 2026-09-08 reproduce
|
||||||
shared-mime-info faa2101ec126a13f959c85dcb687587c1d9eec4a28d4f1b1541110abd5b9802b 2026-09-08 reproduce
|
shared-mime-info faa2101ec126a13f959c85dcb687587c1d9eec4a28d4f1b1541110abd5b9802b 2026-09-08 reproduce
|
||||||
|
libfontenc 20aeeabe5565d70fbae297b87bfd23bf1952f44aa33c481494abe5583bfd596f 2026-09-08 reproduce
|
||||||
|
libxshmfence 10a14013f92be4d25b228713fd3ac056e0b836a1857325497328f31e9b7f9b27 2026-09-08 reproduce
|
||||||
|
libxkbfile 529bace3f42db52bac31f369f2e336f674c9621c3f61032e9ed3dbd2e35a33ba 2026-09-08 reproduce
|
||||||
|
libXfont2 297f66a9b864360a53e1495199c3f53c04c78db2616df8da6e37c5dbef87eb32 2026-09-08 reproduce
|
||||||
|
xkbcomp ae4a27e7b8b6672ba0ffd2ddba8127f4b5f84b50358b0c3337d0bf0281873225 2026-09-08 reproduce
|
||||||
|
xwayland d43f7ba02a1f9f4b2cf01e1d03610020779991fb13adbd804f5dd3007244bf3d 2026-09-08 reproduce
|
||||||
|
|||||||
|
@@ -2,7 +2,11 @@
|
|||||||
# Campaña KDE: componente KF6::Auth que kwin exige (KF6 REQUIRED COMPONENTS Auth). Patrón KF6: dynamic,
|
# Campaña KDE: componente KF6::Auth que kwin exige (KF6 REQUIRED COMPONENTS Auth). Patrón KF6: dynamic,
|
||||||
# wrapper zig que filtra -Wl,--fatal-warnings, CMAKE_PREFIX_PATH=/usr, ECM + qttools + dbus.
|
# wrapper zig que filtra -Wl,--fatal-warnings, CMAKE_PREFIX_PATH=/usr, ECM + qttools + dbus.
|
||||||
# CMakeLists: Qt6 Gui + Qt6DBus + KF6CoreAddons REQUIRED. El backend polkit (PolkitQt6) es OPCIONAL →
|
# CMakeLists: Qt6 Gui + Qt6DBus + KF6CoreAddons REQUIRED. El backend polkit (PolkitQt6) es OPCIONAL →
|
||||||
# sin él cae al backend "fake"/dummy (no bloquea). No usa ki18n.
|
# sin él caía al backend "fake"/dummy (no bloquea el build, pero la autorización NO FUNCIONA).
|
||||||
|
# ⚠ RESUELTO 2026-09-08: `polkit-qt-1` ya existe como receta, así que el backend REAL se compila.
|
||||||
|
# Medido antes: el artefacto traía `libKF6AuthCore.so` y el helper, y NINGÚN plugin de backend —
|
||||||
|
# ni siquiera el directorio `kf6/kauth/backend/`. Era el hueco de RUNTIME que reportó
|
||||||
|
# `yupana frontera`: KDE sellaba 1037/1037 y Plasma no podía pedir una contraseña. No usa ki18n.
|
||||||
name = "kauth"
|
name = "kauth"
|
||||||
version = "6.27.0"
|
version = "6.27.0"
|
||||||
license = "LGPL-2.1-or-later OR LGPL-3.0-or-later"
|
license = "LGPL-2.1-or-later OR LGPL-3.0-or-later"
|
||||||
@@ -41,4 +45,15 @@ compile = "cmake --build build"
|
|||||||
install = "DESTDIR=/out cmake --install build"
|
install = "DESTDIR=/out cmake --install build"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools", "mesa", "libdrm", "libxkbcommon", "wayland", "kcoreaddons"]
|
# `polkit-qt-1` trae el backend de verdad; `polkit`+`glib`+`libffi`/`pcre2`/`zlib` son SU clausura,
|
||||||
|
# que hay que declarar acá porque las deps de hammer NO son transitivas.
|
||||||
|
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "extra-cmake-modules", "qttools", "mesa", "libdrm", "libxkbcommon", "wayland", "kcoreaddons",
|
||||||
|
"polkit-qt-1", "polkit", "glib", "libffi", "pcre2", "zlib",
|
||||||
|
# `kwindowsystem` SÓLO hace falta con el backend polkit: sin él el CMake ni lo pide. Lo dijo el
|
||||||
|
# propio configure al fallar («Could NOT find KF6WindowSystem»), no una suposición — el backend
|
||||||
|
# necesita la ventana padre para anclar el diálogo de contraseña.
|
||||||
|
# ⚠ Y con `kwindowsystem` entran las X11, aunque la distro sea Wayland-only: su
|
||||||
|
# `KF6WindowSystemConfig.cmake` hace `find_dependency(X11)` porque se construyó CON soporte X11,
|
||||||
|
# así que se lo impone a todo consumidor. Mismo conjunto que ya declara `breeze`, que también
|
||||||
|
# lo consume. Lo dijo el configure al fallar: «Could NOT find X11».
|
||||||
|
"kwindowsystem", "libX11", "xorgproto", "libXau", "libXdmcp", "libxcb"]
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# libXfont2 2.0.9 — la capa de fuentes del SERVIDOR X (xfont2.pc), no del cliente. Eslabón de xwayland: `dependency(xfont2, >= 2.0)` obligatorio. Cuelga de libfontenc y freetype.
|
||||||
|
name = "libXfont2"
|
||||||
|
version = "2.0.9"
|
||||||
|
license = "MIT"
|
||||||
|
|
||||||
|
[source]
|
||||||
|
tarball = "https://xorg.freedesktop.org/releases/individual/lib/libXfont2-2.0.9.tar.xz"
|
||||||
|
sha256 = "f042a370666815e7b941e9b7019024755bd1c6c2954afbfa515af378251799e2"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
compiler = "zig-cc"
|
||||||
|
target = "x86_64-linux-musl"
|
||||||
|
link = "dynamic"
|
||||||
|
zig_version = "0.13.0"
|
||||||
|
|
||||||
|
[build.phases]
|
||||||
|
configure = '''
|
||||||
|
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig \
|
||||||
|
./configure --prefix=/usr --disable-static --enable-shared --disable-devel-docs
|
||||||
|
'''
|
||||||
|
compile = "make -j\"$(nproc)\""
|
||||||
|
install = "make install DESTDIR=/out"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
# ⚠ `libpng` no lo usa libXfont2: lo exige `freetype2.pc`, que declara `Requires: zlib, libpng`.
|
||||||
|
# pkg-config resuelve Requires TRANSITIVAMENTE, así que sin libpng responde «checking for
|
||||||
|
# freetype2... no» y culpa a freetype, que está perfectamente instalada. El mensaje señala al
|
||||||
|
# paquete equivocado — por eso se mira el .pc y no sólo el error.
|
||||||
|
build = ["pkgconf", "python3", "util-macros", "xorgproto", "xtrans", "libfontenc", "freetype-shared", "zlib", "libpng-shared"]
|
||||||
|
# ⚠ Las variantes -shared, NO las estáticas del corpus (2026-09-08). libXfont2 construye una
|
||||||
|
# `.so`, y enlazar ahí una `libfreetype.a` compilada sin `-fPIC` muere con «relocation
|
||||||
|
# R_X86_64_64 cannot be used against local symbol; recompile with -fPIC». El error apunta al
|
||||||
|
# enlazador y la causa está en la FORMA de la dependencia: una librería compartida sólo puede
|
||||||
|
# absorber objetos PIC. Es la misma figura que ya documentan `libpng-pic` y el `.so` de gtk4.
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# libfontenc 1.1.9 — codificación de fuentes X (fontenc.pc). Eslabón 1 de la cadena de xwayland: lo exige libXfont2, que exige el servidor. Autotools, sin más dependencia que zlib y los protos.
|
||||||
|
name = "libfontenc"
|
||||||
|
version = "1.1.9"
|
||||||
|
license = "MIT"
|
||||||
|
|
||||||
|
[source]
|
||||||
|
tarball = "https://xorg.freedesktop.org/releases/individual/lib/libfontenc-1.1.9.tar.xz"
|
||||||
|
sha256 = "9d8392705cb10803d5fe1d27d236cbab3f664e26841ce01916bbbe430cf273e2"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
compiler = "zig-cc"
|
||||||
|
target = "x86_64-linux-musl"
|
||||||
|
link = "dynamic"
|
||||||
|
zig_version = "0.13.0"
|
||||||
|
|
||||||
|
[build.phases]
|
||||||
|
configure = '''
|
||||||
|
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig \
|
||||||
|
./configure --prefix=/usr --disable-static --enable-shared
|
||||||
|
'''
|
||||||
|
compile = "make -j\"$(nproc)\""
|
||||||
|
install = "make install DESTDIR=/out"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
build = ["pkgconf", "python3", "util-macros", "xorgproto", "zlib"]
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# libxkbfile 1.2.0 — lectura/escritura de ficheros XKB (xkbfile.pc). Eslabón de xwayland: `dependency(xkbfile)` SIN required:false en su meson, o sea obligatorio. Cuelga de libX11.
|
||||||
|
name = "libxkbfile"
|
||||||
|
version = "1.2.0"
|
||||||
|
license = "MIT"
|
||||||
|
|
||||||
|
[source]
|
||||||
|
tarball = "https://xorg.freedesktop.org/releases/individual/lib/libxkbfile-1.2.0.tar.xz"
|
||||||
|
sha256 = "7f71884e5faf56fb0e823f3848599cf9b5a9afce51c90982baeb64f635233ebf"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
compiler = "zig-cc"
|
||||||
|
target = "x86_64-linux-musl"
|
||||||
|
link = "dynamic"
|
||||||
|
zig_version = "0.13.0"
|
||||||
|
|
||||||
|
[build.phases]
|
||||||
|
# ⚠ MESON, no autotools: libxkbfile 1.2.0 ya NO trae `configure` ni `configure.ac` — sólo
|
||||||
|
# `meson.build`. Se descubrió construyendo («/bin/sh: ./configure: not found»), y el aviso queda acá
|
||||||
|
# porque el resto de las libs X11 de esta cola SÍ son autotools y copiar su plantilla es lo natural.
|
||||||
|
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=shared"
|
||||||
|
compile = "ninja -C output"
|
||||||
|
install = "DESTDIR=/out meson install -C output --no-rebuild"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
build = ["meson", "samurai", "pkgconf", "python3", "util-macros", "xorgproto", "libX11", "libxcb", "libXau", "libXdmcp"]
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# libxshmfence 1.3.3 — vallas de sincronización en memoria compartida (xshmfence.pc). Eslabón de xwayland: su meson lo exige como REQUIRED en cuanto glamor/DRI3 están encendidos, que es el caso de un Xwayland con aceleración.
|
||||||
|
name = "libxshmfence"
|
||||||
|
version = "1.3.3"
|
||||||
|
license = "MIT"
|
||||||
|
|
||||||
|
[source]
|
||||||
|
tarball = "https://xorg.freedesktop.org/releases/individual/lib/libxshmfence-1.3.3.tar.xz"
|
||||||
|
sha256 = "d4a4df096aba96fea02c029ee3a44e11a47eb7f7213c1a729be83e85ec3fde10"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
compiler = "zig-cc"
|
||||||
|
target = "x86_64-linux-musl"
|
||||||
|
link = "dynamic"
|
||||||
|
zig_version = "0.13.0"
|
||||||
|
|
||||||
|
[build.phases]
|
||||||
|
configure = '''
|
||||||
|
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig \
|
||||||
|
./configure --prefix=/usr --disable-static --enable-shared
|
||||||
|
'''
|
||||||
|
compile = "make -j\"$(nproc)\""
|
||||||
|
install = "make install DESTDIR=/out"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
build = ["pkgconf", "python3", "util-macros", "xorgproto"]
|
||||||
@@ -115,6 +115,13 @@ compile = "cmake --build build"
|
|||||||
install = "DESTDIR=/out cmake --install build"
|
install = "DESTDIR=/out cmake --install build"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
# ⚠ `qqc2-breeze-style` va en RUNTIME y no en build, a propósito: es un plugin QML que Qt carga al
|
||||||
|
# arrancar por la ruta de imports (`/usr/lib/qt6/qml/org/kde/breeze`), no algo contra lo que se
|
||||||
|
# enlace nada. Ponerlo en `build` sería mentir sobre la relación y además re-hashearía la receta y
|
||||||
|
# sus 2 dependientes sin motivo — `runtime` NO entra en `hash_inputs`. Sin él los controles QML de
|
||||||
|
# Plasma caen al estilo Basic de Qt: el escritorio arranca y se ve ajeno. Lo reportó
|
||||||
|
# `yupana frontera` como hueco de RUNTIME, que es exactamente lo que es.
|
||||||
|
runtime = ["qqc2-breeze-style"]
|
||||||
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtdeclarative", "qtsvg", "qtshadertools",
|
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtdeclarative", "qtsvg", "qtshadertools",
|
||||||
"qtwayland", "qtpositioning", "qttools", "dbus", "extra-cmake-modules", "gettext-tiny",
|
"qtwayland", "qtpositioning", "qttools", "dbus", "extra-cmake-modules", "gettext-tiny",
|
||||||
"mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols", "plasma-wayland-protocols",
|
"mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols", "plasma-wayland-protocols",
|
||||||
|
|||||||
@@ -1,84 +1,51 @@
|
|||||||
# polkit-qt-1 0.201.1 — los bindings Qt de polkit. Último de los cuatro huecos de RUNTIME del triaje
|
# polkit-qt-1 0.201.1 — el puente Qt↔polkit: la API con la que Plasma PIDE AUTORIZACIÓN al sistema.
|
||||||
# de la frontera que tiene sentido cerrar: sin él Plasma no puede PEDIR autorización — montar un
|
# Sin él `kauth` no tiene backend y plasma-workspace no puede montar discos, cambiar ajustes del
|
||||||
# disco, cambiar ajustes del sistema, cualquier acción que necesite elevar privilegios.
|
# sistema ni nada que necesite elevar privilegios: el diálogo de contraseña no existe.
|
||||||
#
|
#
|
||||||
# Los dos consumidores están escritos en el corpus y hoy lo esquivan a propósito:
|
# POR QUÉ AHORA. Salió de `yupana frontera` (2026-09-08) como HUECO real: lo piden `kauth` y
|
||||||
# · `kauth` construye con el backend polkit OPCIONAL apagado ⇒ cae al backend "fake" (no bloquea,
|
# `plasma-workspace` y no había receta. Hueco de RUNTIME, no de build — KDE sellaba 1037/1037 sin él,
|
||||||
# pero KAuth::Action no autoriza nada);
|
# así que ninguna métrica de deuda lo veía.
|
||||||
# · `plasma-workspace` apaga el helper de Región&Idioma con
|
|
||||||
# -DGLIBC_LOCALE_GEN=OFF -DGLIBC_LOCALE_PREGENERATED=ON, que es exactamente lo que evita el
|
|
||||||
# `PolkitQt6-1 REQUIRED`.
|
|
||||||
# Esta receta pone la pieza; ENCENDER esos dos es otra decisión, con su propio radio de re-hash
|
|
||||||
# (plasma-workspace arrastra medio escritorio). Se deja explícito y sin tocar.
|
|
||||||
#
|
#
|
||||||
# ⚠ QUÉ SIGNIFICA "AUTORIZAR" ACÁ. El demonio no es polkitd sino `arje-polkit-compat`, que responde
|
# Versionado PROPIO (0.201.1), no el de Plasma: es una librería aparte del ciclo de releases de KDE.
|
||||||
# `is_authorized = true` a TODO y deja traza. Estas librerías son la INTERFAZ que el escritorio
|
# Coincide con lo que nixpkgs pinea, que es quien lo reportó.
|
||||||
# espera; la política real del fractal está en otro lado (SO_PEERCRED + capability grants). Ver
|
|
||||||
# recipes/arje-polkit-compat.toml y recipes/incoming-kde/polkit.toml.
|
|
||||||
name = "polkit-qt-1"
|
name = "polkit-qt-1"
|
||||||
version = "0.201.1"
|
version = "0.201.1"
|
||||||
license = "LGPL-2.1-or-later"
|
license = "LGPL-2.1-or-later"
|
||||||
|
|
||||||
[source]
|
[source]
|
||||||
tarball = "https://download.kde.org/stable/polkit-qt-1/polkit-qt-1-0.201.1.tar.xz"
|
tarball = "https://download.kde.org/stable/polkit-qt-1/polkit-qt-1-0.201.1.tar.xz"
|
||||||
# Contrastado contra el .sha256 que publica KDE al lado del tarball.
|
|
||||||
sha256 = "95d8e2cae530c546d9437459deb8a1bea38d572f0f9772cc2860dc143637f256"
|
sha256 = "95d8e2cae530c546d9437459deb8a1bea38d572f0f9772cc2860dc143637f256"
|
||||||
|
|
||||||
[build]
|
[build]
|
||||||
compiler = "zig-cc"
|
compiler = "zig-cc"
|
||||||
target = "x86_64-linux-musl"
|
target = "x86_64-linux-musl"
|
||||||
link = "dynamic"
|
link = "dynamic"
|
||||||
flags = []
|
flags = []
|
||||||
|
|
||||||
[build.phases]
|
[build.phases]
|
||||||
# No lleva el wrapper `.zwrap` de las recetas KF6/Plasma: este proyecto usa cmake pelado
|
|
||||||
# (GNUInstallDirs + CMakePackageConfigHelpers), no KDECompilerSettings, así que nadie inyecta el
|
|
||||||
# `-Wl,--fatal-warnings` que zig ld no entiende.
|
|
||||||
#
|
|
||||||
# -DQT_MAJOR_VERSION=6 es OBLIGATORIO: el default del CMakeLists es "5". Sin él busca Qt5 y falla —
|
|
||||||
# o peor, en una máquina con Qt5 construiría los bindings equivocados con nombres distintos
|
|
||||||
# (polkit-qt5-1 en vez de polkit-qt6-1) y el fallo aparecería recién en el dependiente.
|
|
||||||
# -DCMAKE_INSTALL_LIBDIR=lib para que el `.pc` caiga junto al de polkit, en /usr/lib/pkgconfig.
|
|
||||||
configure = '''
|
configure = '''
|
||||||
set -e
|
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
|
||||||
|
cat > "$ZW/cc" <<'W'
|
||||||
|
#!/bin/sh
|
||||||
|
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
|
||||||
|
exec /opt/zig/zig cc -mcpu=baseline $a
|
||||||
|
W
|
||||||
|
cat > "$ZW/cxx" <<'W'
|
||||||
|
#!/bin/sh
|
||||||
|
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
|
||||||
|
exec /opt/zig/zig c++ -mcpu=baseline $a
|
||||||
|
W
|
||||||
|
chmod +x "$ZW/cc" "$ZW/cxx"
|
||||||
cmake -B build -G Ninja -Wno-dev \
|
cmake -B build -G Ninja -Wno-dev \
|
||||||
|
-DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \
|
||||||
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
|
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
|
||||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \
|
||||||
-DQT_MAJOR_VERSION=6 \
|
-DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TEST=OFF \
|
||||||
-DBUILD_EXAMPLES=OFF -DBUILD_TEST=OFF
|
-DQT_MAJOR_VERSION=6
|
||||||
|
|
||||||
# ── GUARDIÁN CONTRA UNA DEGRADACIÓN SILENCIOSA ─────────────────────────────────────────────────
|
|
||||||
# El CMakeLists sondea polkit con `check_function_exists`, que COMPILA Y ENLAZA. Si ese enlace falla
|
|
||||||
# por cualquier motivo del sandbox —y no por que la función no exista—, cmake no da error: imprime
|
|
||||||
# «You have an older polkit-1 version» y define POLKIT_QT_1_COMPATIBILITY_MODE. El build sella, el
|
|
||||||
# artefacto tiene el tamaño esperado y la autorización queda recortada sin que nadie se entere.
|
|
||||||
# `HAVE_POLKIT_SYSTEM_BUS_NAME_GET_USER_SYNC` es el único de los tres sondeos que llega al header
|
|
||||||
# generado, así que sirve de testigo: polkit 127 tiene esa función, luego un 0 acá significa que el
|
|
||||||
# sondeo no pudo enlazar, no que polkit sea viejo.
|
|
||||||
grep -q "define HAVE_POLKIT_SYSTEM_BUS_NAME_GET_USER_SYNC 1" build/core/polkitqt1-config.h || {
|
|
||||||
echo "los sondeos check_function_exists NO enlazaron contra polkit ⇒ cmake habría activado" >&2
|
|
||||||
echo "POLKIT_QT_1_COMPATIBILITY_MODE en silencio. Abortando." >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
'''
|
'''
|
||||||
compile = "cmake --build build"
|
compile = "cmake --build build"
|
||||||
install = '''
|
install = "DESTDIR=/out cmake --install build"
|
||||||
set -e
|
|
||||||
DESTDIR=/out cmake --install build
|
|
||||||
|
|
||||||
# Verificación por CONTENIDO: las tres librerías (core/gui/agent) con su SONAME, y el `.pc` con el
|
|
||||||
# nombre de Qt6 —no el de Qt5— que es el que buscarán kauth y plasma-workspace.
|
|
||||||
test -f /out/usr/lib/libpolkit-qt6-core-1.so.1
|
|
||||||
test -f /out/usr/lib/libpolkit-qt6-gui-1.so.1
|
|
||||||
test -f /out/usr/lib/libpolkit-qt6-agent-1.so.1
|
|
||||||
test -s /out/usr/lib/pkgconfig/polkit-qt6-1.pc
|
|
||||||
test -s /out/usr/lib/cmake/PolkitQt6-1/PolkitQt6-1Config.cmake
|
|
||||||
'''
|
|
||||||
|
|
||||||
# `polkit` acá es la variante de ESTA cola (libs-only, sin introspección), no la de incoming-gnome:
|
|
||||||
# hammer resuelve hermano→padre y no cruza colas hermanas. glib-shared/pcre2-shared/zlib-shared son
|
|
||||||
# las variantes dinámicas de la cola KDE — el glib canónico es sólo `.a` y no entra en un `.so`.
|
|
||||||
[deps]
|
[deps]
|
||||||
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "dbus", "polkit",
|
# Qt6 Core/DBus/Widgets (todos en qtbase) + polkit por pkg-config (polkit-gobject-1, polkit-agent-1).
|
||||||
"glib-shared", "pcre2-shared", "zlib-shared", "libffi",
|
# `glib`+`libffi`/`pcre2`/`zlib` porque polkit ES glib: su `.pc` los arrastra en Requires.
|
||||||
|
# ⚠ Las deps de hammer NO son transitivas: hay que declarar la clausura entera, no la primera capa.
|
||||||
|
build = ["cmake", "samurai", "python3", "pkgconf", "extra-cmake-modules", "qtbase",
|
||||||
|
"polkit", "glib", "libffi", "pcre2", "zlib", "dbus", "gettext-tiny",
|
||||||
"mesa", "libdrm", "libxkbcommon", "wayland"]
|
"mesa", "libdrm", "libxkbcommon", "wayland"]
|
||||||
|
|||||||
@@ -1,33 +1,28 @@
|
|||||||
# qqc2-breeze-style 6.7.2 — el estilo Breeze para QtQuick Controls 2. Segundo de los cuatro huecos de
|
# qqc2-breeze-style 6.7.2 — el estilo de QtQuick Controls 2 que Plasma usa DE VERDAD. Sin él los
|
||||||
# RUNTIME del triaje de la frontera: ninguna receta lo pide para construir, pero sin él los controles
|
# controles QML (botones, deslizadores, campos) caen al estilo Basic de Qt: el escritorio arranca pero
|
||||||
# QML de Plasma (botones, sliders, combos, menús de los applets y de los KCM) se dibujan con el estilo
|
# se ve ajeno, y el bloqueo de pantalla —que es QML puro— pierde su apariencia.
|
||||||
# genérico de Qt en vez del de Plasma. No lo reemplaza qqc2-desktop-style: ese es el estilo de
|
|
||||||
# escritorio genérico integrado con KStyle; éste es la implementación QML nativa de Breeze, que es la
|
|
||||||
# que Plasma 6 usa por defecto (y la única que corre sin QWidget debajo).
|
|
||||||
#
|
#
|
||||||
# ── ES DE PLASMA, NO DE FRAMEWORKS ─────────────────────────────────────────────────────────────
|
# POR QUÉ AHORA. Salió de `yupana frontera` (2026-09-08) como HUECO real: lo piden `kscreenlocker` y
|
||||||
# Se llama casi igual que qqc2-desktop-style y viene del OTRO tarball: éste sale del release de
|
# `plasma-workspace`. Hueco de RUNTIME, no de build: KDE sellaba 1037/1037 sin él.
|
||||||
# Plasma (6.7.2, el mismo de breeze/kwin/plasma-workspace) y aquél de Frameworks (6.27.0). Copiar la
|
#
|
||||||
# URL del vecino da un 404.
|
# ⚠ VERSIÓN 6.7.2, NO la 6.7.4 que pinea nixpkgs. Va con el release de Plasma del resto del stack
|
||||||
|
# (breeze, plasma-workspace, kscreenlocker son todos 6.7.2): mezclar versiones de componentes del
|
||||||
|
# mismo release es pedir un desajuste de ABI en los plugins QML, que se manifestaría en RUNTIME y no
|
||||||
|
# al construir. nixpkgs sirve para descubrir el hueco, no para elegir la versión.
|
||||||
name = "qqc2-breeze-style"
|
name = "qqc2-breeze-style"
|
||||||
version = "6.7.2"
|
version = "6.7.2"
|
||||||
license = "LGPL-2.1-only OR LGPL-3.0-only"
|
license = "GPL-2.0-or-later"
|
||||||
|
|
||||||
[source]
|
[source]
|
||||||
tarball = "https://download.kde.org/stable/plasma/6.7.2/qqc2-breeze-style-6.7.2.tar.xz"
|
tarball = "https://download.kde.org/stable/plasma/6.7.2/qqc2-breeze-style-6.7.2.tar.xz"
|
||||||
# Contrastado contra el .sha256 que publica KDE al lado del tarball, no sólo contra lo que bajó acá.
|
|
||||||
sha256 = "94e1dad9b110c43d48d8bea7c12e7fa2754e56d1a05a7bb249a03035e77f5b49"
|
sha256 = "94e1dad9b110c43d48d8bea7c12e7fa2754e56d1a05a7bb249a03035e77f5b49"
|
||||||
|
|
||||||
[build]
|
[build]
|
||||||
compiler = "zig-cc"
|
compiler = "zig-cc"
|
||||||
target = "x86_64-linux-musl"
|
target = "x86_64-linux-musl"
|
||||||
link = "dynamic"
|
link = "dynamic"
|
||||||
flags = []
|
flags = []
|
||||||
|
|
||||||
[build.phases]
|
[build.phases]
|
||||||
# Wrapper .zwrap: patrón KF6/Plasma del corpus. KDECompilerSettings mete `-Wl,--fatal-warnings`, que
|
|
||||||
# zig ld no entiende y convierte cualquier aviso del linker en un fallo duro; el wrapper lo filtra.
|
|
||||||
configure = '''
|
configure = '''
|
||||||
|
rm -rf po
|
||||||
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
|
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
|
||||||
cat > "$ZW/cc" <<'W'
|
cat > "$ZW/cc" <<'W'
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
@@ -47,29 +42,14 @@ cmake -B build -G Ninja -Wno-dev \
|
|||||||
-DBUILD_TESTING=OFF
|
-DBUILD_TESTING=OFF
|
||||||
'''
|
'''
|
||||||
compile = "cmake --build build"
|
compile = "cmake --build build"
|
||||||
install = '''
|
install = "DESTDIR=/out cmake --install build"
|
||||||
set -e
|
|
||||||
DESTDIR=/out cmake --install build
|
|
||||||
|
|
||||||
# Verificación por CONTENIDO. El artefacto son plugins QML: si el módulo se instala sin su qmldir o
|
|
||||||
# sin los .qml, el directorio existe, pesa, y Plasma arranca con el estilo genérico sin decir nada.
|
|
||||||
test -s /out/usr/lib/qt6/qml/org/kde/breeze/qmldir
|
|
||||||
test -s /out/usr/lib/qt6/qml/org/kde/breeze/impl/qmldir
|
|
||||||
test -f /out/usr/lib/qt6/qml/org/kde/breeze/Button.qml
|
|
||||||
test -f /out/usr/lib/qt6/plugins/kf6/kirigami/platform/org.kde.breeze.so
|
|
||||||
echo " qml: $(find /out/usr/lib/qt6/qml/org/kde/breeze -name '*.qml' | wc -l) controles"
|
|
||||||
'''
|
|
||||||
|
|
||||||
# La lista NO es la del vecino qqc2-desktop-style copiada: sale de la clausura de `find_dependency`
|
|
||||||
# de los KF6*Config.cmake que ya están en el store. Ese recorrido enseñó algo útil: casi todo lo que
|
|
||||||
# esos configs piden (X11, XCB, Wayland, OpenSSL, BZip2, LibLZMA) está dentro de un `if (NOT TRUE)`
|
|
||||||
# —la rama de build estático— y por lo tanto es CÓDIGO MUERTO en nuestro corpus, que compila KF6
|
|
||||||
# dinámico. Por eso acá no hay libX11 ni xorgproto: no los pide nadie, y el escritorio es Wayland.
|
|
||||||
# `find_package(X11)` del CMakeLists raíz no es REQUIRED, así que falla en silencio y no rompe el
|
|
||||||
# feature_summary(FATAL_ON_MISSING_REQUIRED_PACKAGES).
|
|
||||||
[deps]
|
[deps]
|
||||||
build = ["cmake", "samurai", "python3", "pkgconf", "extra-cmake-modules", "gettext-tiny", "qttools",
|
# Lo que exige su CMakeLists: ECM · Qt6 Core/Gui/Qml/Quick/QuickControls2/QuickTemplates2 (qtbase +
|
||||||
"qtbase", "qtdeclarative", "qtsvg", "qtshadertools", "dbus",
|
# qtdeclarative) · KF6 GuiAddons/Config/KirigamiPlatform/ColorScheme/IconThemes.
|
||||||
"kirigami", "kconfig", "kcoreaddons", "kguiaddons", "kcolorscheme", "kiconthemes",
|
# ⚠ Las deps de hammer NO son transitivas: va la clausura entera. `kcoreaddons`/`ki18n`/`karchive`/
|
||||||
"karchive", "ki18n", "kwidgetsaddons",
|
# `kwidgetsaddons` entran por ser la clausura de kiconthemes y kcolorscheme, no por gusto.
|
||||||
|
build = ["cmake", "samurai", "python3", "pkgconf", "extra-cmake-modules", "qttools", "gettext-tiny",
|
||||||
|
"qtbase", "qtdeclarative", "qtsvg", "dbus",
|
||||||
|
"kirigami", "kguiaddons", "kconfig", "kcolorscheme", "kiconthemes",
|
||||||
|
"kcoreaddons", "ki18n", "karchive", "kwidgetsaddons",
|
||||||
"mesa", "libdrm", "libxkbcommon", "wayland"]
|
"mesa", "libdrm", "libxkbcommon", "wayland"]
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# xkbcomp 1.5.0 — el compilador de mapas de teclado XKB. NO es una librería: es un BINARIO que el
|
||||||
|
# servidor X lanza como subproceso en RUNTIME (`xkb/ddxLoad.c`, XkbRunXkbComp) para traducir la
|
||||||
|
# descripción XKB al formato que el servidor carga.
|
||||||
|
#
|
||||||
|
# POR QUÉ ESTÁ ACÁ. Es el sexto eslabón de la cadena de `xwayland`, y el único que NO se descubre
|
||||||
|
# construyendo: su meson lo pide con `required: false` —sólo para averiguar rutas— así que Xwayland
|
||||||
|
# COMPILA perfectamente sin él y después no tiene teclado. El propio fuente lo dice al revés de como
|
||||||
|
# suena: «Errors from xkbcomp are not fatal to the X server», o sea que el servidor sobrevive mudo.
|
||||||
|
# Es exactamente la figura de [[gnome-sin-fuentes]]: una raíz que no resuelve y ninguna métrica lo dice.
|
||||||
|
name = "xkbcomp"
|
||||||
|
version = "1.5.0"
|
||||||
|
license = "MIT"
|
||||||
|
|
||||||
|
[source]
|
||||||
|
tarball = "https://xorg.freedesktop.org/releases/individual/app/xkbcomp-1.5.0.tar.xz"
|
||||||
|
sha256 = "2ac31f26600776db6d9cd79b3fcd272263faebac7eb85fb2f33c7141b8486060"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
compiler = "zig-cc"
|
||||||
|
target = "x86_64-linux-musl"
|
||||||
|
link = "dynamic"
|
||||||
|
zig_version = "0.13.0"
|
||||||
|
|
||||||
|
[build.phases]
|
||||||
|
configure = '''
|
||||||
|
PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig \
|
||||||
|
./configure --prefix=/usr --with-xkb-config-root=/usr/share/X11/xkb
|
||||||
|
'''
|
||||||
|
compile = "make -j\"$(nproc)\""
|
||||||
|
install = "make install DESTDIR=/out"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
build = ["pkgconf", "python3", "util-macros", "xorgproto", "libX11", "libxcb", "libXau", "libXdmcp", "libxkbfile", "xkeyboard-config"]
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
# 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.
|
||||||
Reference in New Issue
Block a user