estado+kde: el grafo ahora cubre la cola incoming-kde; base KDE desbloqueada en el laptop
MOTIVO: 'estábamos haciendo kde'. La cola recipes/incoming-kde/ (206 recetas) era punto ciego del
grafo (sólo miraba recipes/ top-level). Modo --kde: build-state.py/build-state-view.py cubren la cola
KDE (sombreando canónicas homónimas sibling-first, como el sandbox) → build-state-kde.{json,html}.
CAUSA de la deriva (193/206 en deuda): fui YO — esta sesión re-sellé pkgconf y samurai (arreglos
static), y 194 recetas KDE declaran pkgconf, 142 samurai ⇒ re-hash en cascada de todo el árbol. El
sistema determinista funcionando: cambia un input base, cascan los dependientes. Deuda legítima.
DESBLOQUEO (el 'GUI rompe en el laptop' era sólo cairo/pango, NO la base): construida en el laptop
toda la base KDE guiado por el orden de ataque del grafo — extra-cmake-modules, util-macros,
xorgproto, xcb-proto, wayland, libdrm, dbus, icu4c, util-linux, fontconfig, pixman, glib, freetype,
harfbuzz, fribidi, libXau/libXdmcp, la cadena X11 (xtrans/libxcb/libX11/libXext/libXrender/libXfixes/
libXi), la familia xcb-util, libxkbcommon, wayland-protocols, mesa (24.0.9 iris-only, sin LLVM), y
los -shared. KDE 9→39 selladas. qtbase (↑117, la raíz) quedó DESBLOQUEADO y compilando.
DISCO: el build llenó el disco (100%). Liberados 82G borrando work/sources (57G, se re-extrae solo)
y .farm-harvest (26G, verificado 100% redundante en el store, CAS).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -8,14 +8,16 @@
|
||||
# selladas está "lista para construir ya"; una con deps en deuda debe esperar. Ese es el uso
|
||||
# accionable del orden topológico: qué atacar primero.
|
||||
#
|
||||
# Uso: scripts/build-state-view.py # regenera docs/state/build-state.html desde el JSON
|
||||
import json, html
|
||||
# Uso: scripts/build-state-view.py # corpus → docs/state/build-state.html
|
||||
# scripts/build-state-view.py --kde # frente KDE → docs/state/build-state-kde.html
|
||||
import json, html, sys
|
||||
from pathlib import Path
|
||||
from datetime import datetime, timezone
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
DATA = ROOT / "docs/state/build-state.json"
|
||||
OUT = ROOT / "docs/state/build-state.html"
|
||||
KDE = "--kde" in sys.argv
|
||||
DATA = ROOT / ("docs/state/build-state-kde.json" if KDE else "docs/state/build-state.json")
|
||||
OUT = ROOT / ("docs/state/build-state-kde.html" if KDE else "docs/state/build-state.html")
|
||||
|
||||
doc = json.loads(DATA.read_text())
|
||||
nodes = doc["nodes"]
|
||||
@@ -257,11 +259,19 @@ for c in sorted(classes, key=lambda c: -sum(classes[c].values())):
|
||||
if deuda:
|
||||
cls_btns += f'<button class="fbtn" data-cls="{c}" aria-pressed="false">{E(CLASS_ES.get(c,c))} ({deuda})</button>'
|
||||
|
||||
scope = "frente KDE" if KDE else "hammer"
|
||||
by_queue = doc.get("by_queue", {})
|
||||
queue_line = ""
|
||||
if "incoming-kde" in by_queue and len(by_queue) > 1:
|
||||
kq = by_queue["incoming-kde"]; kd = kq.get("debt", 0) + kq.get("never", 0)
|
||||
queue_line = (f' · <b>cola KDE {kq.get("sealed",0)}/{sum(kq.values())} selladas</b>, '
|
||||
f'{kd} en deuda')
|
||||
|
||||
HTML = f'''<style>{CSS}</style>
|
||||
<div class="wrap">
|
||||
<header>
|
||||
<h1>estado del build <span class="mark">·</span> <span class="mono">hammer</span></h1>
|
||||
<div class="sub">{n_total} recetas · grafo {E(topo)} · {E(orphan_note)} · <span class="mono">{E(gen_time)}</span></div>
|
||||
<h1>estado del build <span class="mark">·</span> <span class="mono">{E(scope)}</span></h1>
|
||||
<div class="sub">{n_total} recetas{queue_line} · grafo {E(topo)} · {E(orphan_note)} · <span class="mono">{E(gen_time)}</span></div>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
|
||||
Reference in New Issue
Block a user