fuentes: dejavu al corpus (arregla un wanted que dejé), KDE con fuente, y la nerd de monospace

TRES COSAS, y la primera es un bug mío de hace un rato.

1. dejavu-fonts PROMOVIDA AL CORPUS — arregla un nodo `wanted` que introduje.
   Al añadirla de raíz a escritorio-gnome quedó como `wanted`: la receta existía en
   incoming-{kde,wlr,cosmic} y NO en incoming-gnome ni en el corpus, y una receta no
   alcanza una cola hermana. O sea que la raíz no resolvía a nada y GNOME seguía sin
   fuentes. `wanted` NO es `debt`, así que drenaje.json seguía diciendo deuda=0 y el
   hueco no salía por ninguna métrica — se vio mirando el nodo en build-state-gnome.json.
   Promoción gratis: las tres copias sellaban el mismo hash (b3:5b3a5df3) y sus deps
   están vacías. Las tres se jubilan. Ahora los cuatro perfiles resuelven a corpus y los
   cinco grafos quedan con CERO nodos `wanted`.

2. dejavu-fonts en escritorio-kde, como se pidió. Tenía UNA fuente y de rebote, dentro
   de qtbase — apoyarse en un detalle de empaquetado de Qt deja sin nada a todo lo que
   no es Qt.

3. dejavu-fonts-nerd 3.5.1 en los CUATRO perfiles: DejaVu Sans Mono parcheada con Nerd
   Fonts. Lo que se midió antes de escribirla, porque cambia la forma de hacerla:

   - SE AÑADE, NO REEMPLAZA, y no es prudencia: la licencia de Bitstream Vera exige que
     una fuente modificada se RENOMBRE. Por eso upstream la llama «DejaVuSansM Nerd Font
     Mono» — leído del name de la TTF, no supuesto. Una fuente nerdeada NO puede
     responder al nombre de la original; sustituirla rompería a todo lo que pide «DejaVu
     Sans Mono», empezando por foot, que ya murió una vez así.
   - SÓLO LA MONOESPACIADA: upstream no publica DejaVu Sans ni Serif parcheadas, y en una
     fuente de interfaz proporcional esos glifos no los pide nadie. «Todas nerdeadas» no
     se puede cumplir al pie de la letra.
   - SÓLO UNA DE LAS TRES VARIANTES: NerdFont / NerdFontMono / NerdFontPropo son los
     mismos glifos con distinto avance. Las doce pesan 32 MB; las cuatro de Mono, 11 MB.
     Se quedan las Mono, que son las correctas para una rejilla de terminal. Referencia:
     la familia DejaVu ENTERA son 9,8 MB.

   ⚠ EL NÚMERO DEL .conf ESTÁ MEDIDO, NO ELEGIDO. fontconfig carga conf.d en orden
   alfabético y el <prefer> que llega antes gana. Con 60-nerd-monospace.conf —que ordena
   después de 60-latin.conf, que ya prefiere Noto/DejaVu/Inconsolata— `fc-match
   monospace` seguía dando DejaVu Sans Mono: la conf estaba INSTALADA Y ERA INERTE, el
   mismo modo de fallar que el plugin ALSA de PipeWire. A 59- gana. 45-latin.conf también
   menciona monospace pero usa <default>, no <prefer>, así que no compite.

   ⚠ Y strip_components = 0, que tampoco es cosmético: el tarball de nerd-fonts es PLANO
   y con el default de 1 el árbol de fuentes queda VACÍO — el build no se detiene ahí,
   sigue y falla más tarde en el cp, con un mensaje que no menciona la extracción.

   ⚠ LA LICENCIA NECESITA UNA PASADA HUMANA antes de `hammer pack`: el LICENSE.txt del
   tarball cubre sólo DejaVu/Bitstream Vera y no menciona los ~10 conjuntos de iconos
   importados, que tienen licencias propias (Font Awesome CC-BY-4.0, Octicons MIT,
   Material OFL, Powerline MIT…). El campo dice lo DOCUMENTADO, no el conjunto real; no
   se inventa una cadena SPDX. Anotado en la receta.

EVIDENCIA, contra el conf.d REAL del artefacto de fontconfig:
  monospace          -> DejaVuSansM Nerd Font Mono   (los iconos llegan)
  "DejaVu Sans Mono" -> DejaVu Sans Mono             (intacta)
  sans-serif         -> DejaVu Sans                  (sin tocar)
  serif              -> DejaVu Serif                 (sin tocar)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XB2iEmxeLZgzqNfhWChrLo
This commit is contained in:
Sergio
2026-09-03 16:09:24 +00:00
co-authored by Claude Opus 5
parent be7aa0ef35
commit cab9439644
11 changed files with 380 additions and 127 deletions
+34 -11
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 854,
"nodes": 855,
"sealed": 854,
"recipes": 855,
"nodes": 856,
"sealed": 855,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 201,
"c": 202,
"go": 362,
"gui": 35,
"kernel": 6,
@@ -17,11 +17,11 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 815,
"sealed": 817,
"ajeno": 1
},
"incoming-cosmic": {
"sealed": 39
"sealed": 38
}
},
"by_profile": {
@@ -36,9 +36,9 @@
"sealed": 75
},
"escritorio-cosmic": {
"raices": 37,
"clausura": 131,
"sealed": 131
"raices": 38,
"clausura": 132,
"sealed": 132
},
"escritorio-mirada": {
"raices": 14,
@@ -3263,13 +3263,36 @@
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "incoming-cosmic",
"queue": "corpus",
"hash": "b3:5b3a5df3d75586315f4371f05be021a58ee31d5f664b4253957a35a6c7b95d71",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic"
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
"dejavu-fonts-nerd": {
"iname": "dejavu-fonts-nerd",
"version": "3.5.1",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "corpus",
"hash": "b3:387cf391f09cec628088845dadd94a5268e61acbd1c04dcc12c1a035c4d4d591",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
+45 -23
View File
@@ -1,30 +1,27 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 880,
"nodes": 882,
"sealed": 880,
"ajeno": 1,
"wanted": 1
"recipes": 882,
"nodes": 883,
"sealed": 882,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 240,
"c": 242,
"go": 362,
"gui": 42,
"kernel": 6,
"rust": 230,
"wanted": 1
"rust": 230
},
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 806,
"sealed": 808,
"ajeno": 1
},
"incoming-gnome": {
"sealed": 74,
"wanted": 1
"sealed": 74
}
},
"by_profile": {
@@ -39,9 +36,9 @@
"sealed": 74
},
"escritorio-gnome": {
"raices": 14,
"clausura": 148,
"sealed": 148
"raices": 15,
"clausura": 150,
"sealed": 150
},
"escritorio-mirada": {
"raices": 14,
@@ -49,7 +46,7 @@
"sealed": 33
}
},
"sin_perfil": 662,
"sin_perfil": 661,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -2968,17 +2965,42 @@
},
"dejavu-fonts": {
"iname": "dejavu-fonts",
"version": null,
"link": null,
"compiler": null,
"version": "2.37",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [],
"cls": "wanted",
"queue": "incoming-gnome",
"hash": null,
"state": "wanted",
"cls": "c",
"queue": "corpus",
"hash": "b3:5b3a5df3d75586315f4371f05be021a58ee31d5f664b4253957a35a6c7b95d71",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
"dejavu-fonts-nerd": {
"iname": "dejavu-fonts-nerd",
"version": "3.5.1",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "corpus",
"hash": "b3:387cf391f09cec628088845dadd94a5268e61acbd1c04dcc12c1a035c4d4d591",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
"delta": {
+37 -12
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 997,
"nodes": 998,
"sealed": 997,
"recipes": 998,
"nodes": 999,
"sealed": 998,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 362,
"c": 363,
"go": 362,
"gui": 38,
"kernel": 6,
@@ -17,10 +17,10 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 799
"sealed": 801
},
"incoming-kde": {
"sealed": 198,
"sealed": 197,
"ajeno": 1
}
},
@@ -36,9 +36,9 @@
"sealed": 70
},
"escritorio-kde": {
"raices": 16,
"clausura": 197,
"sealed": 196,
"raices": 18,
"clausura": 199,
"sealed": 198,
"ajeno": 1
},
"escritorio-mirada": {
@@ -47,7 +47,7 @@
"sealed": 29
}
},
"sin_perfil": 706,
"sin_perfil": 705,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -3030,12 +3030,37 @@
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "incoming-kde",
"queue": "corpus",
"hash": "b3:5b3a5df3d75586315f4371f05be021a58ee31d5f664b4253957a35a6c7b95d71",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
"dejavu-fonts-nerd": {
"iname": "dejavu-fonts-nerd",
"version": "3.5.1",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "corpus",
"hash": "b3:387cf391f09cec628088845dadd94a5268e61acbd1c04dcc12c1a035c4d4d591",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
"delta": {
+33 -10
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 831,
"nodes": 832,
"sealed": 831,
"recipes": 832,
"nodes": 833,
"sealed": 832,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 199,
"c": 200,
"go": 362,
"gui": 35,
"kernel": 6,
@@ -17,11 +17,11 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 816,
"sealed": 818,
"ajeno": 1
},
"incoming-wlr": {
"sealed": 15
"sealed": 14
}
},
"by_profile": {
@@ -41,9 +41,9 @@
"sealed": 33
},
"escritorio-sway": {
"raices": 67,
"clausura": 170,
"sealed": 170
"raices": 68,
"clausura": 171,
"sealed": 171
}
},
"sin_perfil": 645,
@@ -2797,12 +2797,35 @@
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "incoming-wlr",
"queue": "corpus",
"hash": "b3:5b3a5df3d75586315f4371f05be021a58ee31d5f664b4253957a35a6c7b95d71",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
"dejavu-fonts-nerd": {
"iname": "dejavu-fonts-nerd",
"version": "3.5.1",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "corpus",
"hash": "b3:387cf391f09cec628088845dadd94a5268e61acbd1c04dcc12c1a035c4d4d591",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
+45 -5
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 817,
"nodes": 818,
"sealed": 817,
"recipes": 819,
"nodes": 820,
"sealed": 819,
"ajeno": 1
},
"by_class": {
"ajeno": 1,
"c": 185,
"c": 187,
"go": 362,
"gui": 35,
"kernel": 6,
@@ -17,7 +17,7 @@
"debt_by_class": {},
"by_queue": {
"corpus": {
"sealed": 817,
"sealed": 819,
"ajeno": 1
}
},
@@ -2782,6 +2782,46 @@
"perfiles": [],
"dependientes_total": 0
},
"dejavu-fonts": {
"iname": "dejavu-fonts",
"version": "2.37",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "corpus",
"hash": "b3:5b3a5df3d75586315f4371f05be021a58ee31d5f664b4253957a35a6c7b95d71",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
"dejavu-fonts-nerd": {
"iname": "dejavu-fonts-nerd",
"version": "3.5.1",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [],
"cls": "c",
"queue": "corpus",
"hash": "b3:387cf391f09cec628088845dadd94a5268e61acbd1c04dcc12c1a035c4d4d591",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [
"escritorio-cosmic",
"escritorio-gnome",
"escritorio-kde",
"escritorio-sway"
],
"dependientes_total": 0
},
"delta": {
"iname": "delta",
"version": "0.19.2",
+40
View File
@@ -63,6 +63,22 @@ paquetes = [
# roto: sin tipos de fichero, sin apps X11, sin diálogos de autorización y con los controles QML
# en un estilo genérico. Ver docs/state/frontera-triaje.toml para el porqué de cada uno.
"shared-mime-info", "xwayland", "polkit-qt-1", "qqc2-breeze-style",
# ── FUENTES ──────────────────────────────────────────────────────────────────────────────────
# Añadida el 2026-09-03 por el mismo recuento que destapó el hueco de GNOME: contando
# `.ttf/.otf/.ttc/.pfb` sobre los artefactos del cierre, este perfil tenía **UNA sola**, y de
# rebote — viene dentro de `qtbase`, no porque nadie la haya pedido. `fontconfig` estaba, pero
# fontconfig es el MOTOR que busca fuentes, no una fuente.
# Depender de la que trae qtbase es apoyarse en un detalle de empaquetado de Qt que puede
# desaparecer en cualquier versión, y encima deja a todo lo que NO es Qt sin nada.
"dejavu-fonts",
# `dejavu-fonts-nerd` es la MISMA DejaVu Sans Mono parcheada con Nerd Fonts (~10.000 glifos de
# iconos: Powerline, Font Awesome, Devicons…) que usan starship, lsd, eza, neovim y las
# statuslines; sin ellos dibujan cuadraditos. Se AÑADE, no reemplaza: la licencia de Bitstream
# Vera obliga a renombrar una fuente modificada, así que la parcheada se llama
# «DejaVuSansM Nerd Font Mono» y NO puede responder a «DejaVu Sans Mono» — sustituirla rompería
# a todo lo que la pide por nombre, empezando por foot. Se enchufa por fontconfig: su
# `59-nerd-monospace.conf` hace que el alias `monospace` la prefiera. Ver su receta.
"dejavu-fonts-nerd",
# ⚠ `xwayland` sigue acá como RAÍZ pero su receta NO se va a escribir: lo provee una imagen ajena
# enjaulada, declarado en ../state/qorpa-ajenos.toml (ADR 0015 D5 capa 3, qorpa). El Xwayland vive
# DENTRO de la imagen —Arch y Fedora ya lo traen y se cuelga de kwin por el socket— así que el
@@ -196,6 +212,14 @@ paquetes = [
# de rebote, dentro de qtbase) es un hallazgo aparte y NO se toca acá: ese perfil no lleva zathura
# y su árbol lo está trabajando otro frente.
"dejavu-fonts",
# `dejavu-fonts-nerd` es la MISMA DejaVu Sans Mono parcheada con Nerd Fonts (~10.000 glifos de
# iconos: Powerline, Font Awesome, Devicons…) que usan starship, lsd, eza, neovim y las
# statuslines; sin ellos dibujan cuadraditos. Se AÑADE, no reemplaza: la licencia de Bitstream
# Vera obliga a renombrar una fuente modificada, así que la parcheada se llama
# «DejaVuSansM Nerd Font Mono» y NO puede responder a «DejaVu Sans Mono» — sustituirla rompería
# a todo lo que la pide por nombre, empezando por foot. Se enchufa por fontconfig: su
# `59-nerd-monospace.conf` hace que el alias `monospace` la prefiera. Ver su receta.
"dejavu-fonts-nerd",
"expat-shared", "libffi-shared", "bzip2-shared",
]
@@ -266,6 +290,14 @@ paquetes = [
# tipografía. Ninguno es dep de build de nadie y sin ellos el escritorio arranca roto — sin puntero,
# sin teclado o con tofu.
"cosmic-icons", "hicolor-icon-theme", "xkeyboard-config", "dejavu-fonts",
# `dejavu-fonts-nerd` es la MISMA DejaVu Sans Mono parcheada con Nerd Fonts (~10.000 glifos de
# iconos: Powerline, Font Awesome, Devicons…) que usan starship, lsd, eza, neovim y las
# statuslines; sin ellos dibujan cuadraditos. Se AÑADE, no reemplaza: la licencia de Bitstream
# Vera obliga a renombrar una fuente modificada, así que la parcheada se llama
# «DejaVuSansM Nerd Font Mono» y NO puede responder a «DejaVu Sans Mono» — sustituirla rompería
# a todo lo que la pide por nombre, empezando por foot. Se enchufa por fontconfig: su
# `59-nerd-monospace.conf` hace que el alias `monospace` la prefiera. Ver su receta.
"dejavu-fonts-nerd",
# Lo que `start-cosmic` ejecuta y ningún `[deps]` pide: bash de verdad y el bus de sesión.
"bash", "dbus",
# ── LA PRIMERA APP DE USUARIO FINAL QUE COMPARTEN LOS CUATRO ESCRITORIOS ──────────────────────
@@ -351,6 +383,14 @@ paquetes = [
# Ninguna receta depende de una fuente ni de un mapa de teclado para COMPILAR, de modo que la
# clausura no puede alcanzarlos por más aristas que siga. Si no están acá, no están.
"dejavu-fonts", # sin UNA fuente, foot muere con «monospace::size=8: failed to match font»
# `dejavu-fonts-nerd` es la MISMA DejaVu Sans Mono parcheada con Nerd Fonts (~10.000 glifos de
# iconos: Powerline, Font Awesome, Devicons…) que usan starship, lsd, eza, neovim y las
# statuslines; sin ellos dibujan cuadraditos. Se AÑADE, no reemplaza: la licencia de Bitstream
# Vera obliga a renombrar una fuente modificada, así que la parcheada se llama
# «DejaVuSansM Nerd Font Mono» y NO puede responder a «DejaVu Sans Mono» — sustituirla rompería
# a todo lo que la pide por nombre, empezando por foot. Se enchufa por fontconfig: su
# `59-nerd-monospace.conf` hace que el alias `monospace` la prefiera. Ver su receta.
"dejavu-fonts-nerd",
"xkeyboard-config", # sin datos XKB: «xkbcommon: ERROR: failed to add default include path
# /usr/share/X11/xkb», y sway no completa el seat
# ── LAS TRES `.so` QUE sway PIDE Y EL CORPUS SÓLO PRODUCE COMO `.a` ─────────────────────────