diff --git a/recipes/incoming-gnome/gdm.toml b/recipes/incoming-gnome/gdm.toml index 12a8aec5..cb5293a5 100644 --- a/recipes/incoming-gnome/gdm.toml +++ b/recipes/incoming-gnome/gdm.toml @@ -18,6 +18,25 @@ # ⇒ No reintentar estas tres esperando que cambie algo. Se destraban el día que entre GTK3 (y para # gnome-settings-daemon, también X11), no antes. Es una decisión de alcance, no un fallo. +# +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# ⛔ CERRADA POR DECISIÓN, 2026-08-08. NO REINTENTAR. +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# El usuario decidió NO traer GTK3 al catálogo. Esta receta depende de él (ver el diagnóstico de +# abajo) ⇒ queda cerrada, no «en deuda». La diferencia importa: una deuda invita a reintentarla en +# cada informe; una decisión se respeta. +# +# POR QUÉ ES RAZONABLE, y no una rendición: +# · GNOME funciona sin esto. El camino vivo es mutter → gnome-shell, arrancado por arje; ninguno +# de los dos depende de gnome-session (su cierre es mutter+gjs+gobject-introspection+gnome-desktop). +# · Traer GTK3 sería una torre de C muerta —y para waybar, además, gtkmm, o sea sus bindings de +# C++— por un gestor de sesión y un login manager que este escritorio no necesita. +# · La función que aportaban está cubierta: la sesión la levanta arje, y la barra de estado es +# `yambar` en el frente wlr, que es C puro y ya está sellado. +# +# SE REABRE SI, Y SÓLO SI, alguien trae GTK3 por otro motivo con peso propio (una aplicación +# gráfica de terceros que lo exija). Entonces esto sale gratis; hoy no. + name = "gdm" version = "48.0" license = "GPL-2.0-or-later" diff --git a/recipes/incoming-gnome/gnome-session.toml b/recipes/incoming-gnome/gnome-session.toml index a0e1291c..c1cc3055 100644 --- a/recipes/incoming-gnome/gnome-session.toml +++ b/recipes/incoming-gnome/gnome-session.toml @@ -9,6 +9,25 @@ # ⛔ APARCADA: el diagnóstico completo está más abajo, junto a `[deps]` (GTK3 **y** libsystemd, los # dos incondicionales). Lo confirmado el 2026-08-07 no lo cambia; sólo añade que la granja seguía # reintentándola, que es un problema de COLA, no de receta. +# +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# ⛔ CERRADA POR DECISIÓN, 2026-08-08. NO REINTENTAR. +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# El usuario decidió NO traer GTK3 al catálogo. Esta receta depende de él (ver el diagnóstico de +# abajo) ⇒ queda cerrada, no «en deuda». La diferencia importa: una deuda invita a reintentarla en +# cada informe; una decisión se respeta. +# +# POR QUÉ ES RAZONABLE, y no una rendición: +# · GNOME funciona sin esto. El camino vivo es mutter → gnome-shell, arrancado por arje; ninguno +# de los dos depende de gnome-session (su cierre es mutter+gjs+gobject-introspection+gnome-desktop). +# · Traer GTK3 sería una torre de C muerta —y para waybar, además, gtkmm, o sea sus bindings de +# C++— por un gestor de sesión y un login manager que este escritorio no necesita. +# · La función que aportaban está cubierta: la sesión la levanta arje, y la barra de estado es +# `yambar` en el frente wlr, que es C puro y ya está sellado. +# +# SE REABRE SI, Y SÓLO SI, alguien trae GTK3 por otro motivo con peso propio (una aplicación +# gráfica de terceros que lo exija). Entonces esto sale gratis; hoy no. + name = "gnome-session" version = "48.0" license = "GPL-2.0-or-later" diff --git a/recipes/incoming-gnome/gnome-settings-daemon.toml b/recipes/incoming-gnome/gnome-settings-daemon.toml index fb833daf..2a58a347 100644 --- a/recipes/incoming-gnome/gnome-settings-daemon.toml +++ b/recipes/incoming-gnome/gnome-settings-daemon.toml @@ -30,6 +30,25 @@ # ⇒ No reintentar estas tres esperando que cambie algo. Se destraban el día que entre GTK3 (y para # gnome-settings-daemon, también X11), no antes. Es una decisión de alcance, no un fallo. +# +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# ⛔ CERRADA POR DECISIÓN, 2026-08-08. NO REINTENTAR. +# ═══════════════════════════════════════════════════════════════════════════════════════════════ +# El usuario decidió NO traer GTK3 al catálogo. Esta receta depende de él (ver el diagnóstico de +# abajo) ⇒ queda cerrada, no «en deuda». La diferencia importa: una deuda invita a reintentarla en +# cada informe; una decisión se respeta. +# +# POR QUÉ ES RAZONABLE, y no una rendición: +# · GNOME funciona sin esto. El camino vivo es mutter → gnome-shell, arrancado por arje; ninguno +# de los dos depende de gnome-session (su cierre es mutter+gjs+gobject-introspection+gnome-desktop). +# · Traer GTK3 sería una torre de C muerta —y para waybar, además, gtkmm, o sea sus bindings de +# C++— por un gestor de sesión y un login manager que este escritorio no necesita. +# · La función que aportaban está cubierta: la sesión la levanta arje, y la barra de estado es +# `yambar` en el frente wlr, que es C puro y ya está sellado. +# +# SE REABRE SI, Y SÓLO SI, alguien trae GTK3 por otro motivo con peso propio (una aplicación +# gráfica de terceros que lo exija). Entonces esto sale gratis; hoy no. + name = "gnome-settings-daemon" version = "48.1" license = "GPL-2.0-or-later" diff --git a/scripts/build-farm.sh b/scripts/build-farm.sh index 13e77eeb..c3e9aede 100755 --- a/scripts/build-farm.sh +++ b/scripts/build-farm.sh @@ -48,19 +48,29 @@ queue=$(ls "$QUEUE"/*.toml 2>/dev/null || true) # hash vigente de una receta está ahí, el hub ya la tiene y el worker se la salta. SELLADOS="${SELLADOS:-work/farm-sellados.txt}" if [ -s "$SELLADOS" ]; then - saltadas=0; filtrada="" + saltadas=0; cerradas=0; filtrada="" for f in $queue; do # ⚠ EL NOMBRE DEL ARTEFACTO ES EL CAMPO `name` DE LA RECETA, NO EL DEL FICHERO. Son distintos en # 17 recetas del catálogo — el arquetipo es `recipes/incoming-kde/qtbase.toml`, cuyo `name` es # `qt6-qtbase`, y el artefacto en el store se llama `-qt6-qtbase`. Usar el basename daba # «no sellada» para las 17 y las habría mandado a reconstruir: exactamente el desperdicio que # este filtro existe para evitar. (Lo tenía mal en la primera versión de este bloque.) + # ── RECETAS CERRADAS POR DECISIÓN: el marcador vive EN LA RECETA ───────────────────────────── + # Una receta puede estar sin sellar porque falta trabajo (deuda) o porque se decidió NO hacerla + # (alcance). La diferencia importa: la deuda invita a reintentar en cada ciclo; la decisión hay + # que respetarla, o la granja quema CPU para siempre en algo que nadie va a arreglar. + # El marcador va en la CABECERA DE LA RECETA, no en una lista aparte, justo para que no puedan + # desincronizarse: quien lee el porqué y quien decide saltarla miran el mismo texto. + if grep -q "CERRADA POR DECISIÓN" "$f" 2>/dev/null; then + cerradas=$((cerradas+1)); continue + fi n=$(awk -F'"' '/^name[[:space:]]*=/{print $2; exit}' "$f") [ -n "$n" ] || n=$(basename "$f" .toml) H=$("$HAMMER" --store "$STORE" hash "$f" 2>/dev/null | tail -1 | sed 's/^b3://') if [ -n "$H" ] && grep -qx "$H-$n" "$SELLADOS"; then saltadas=$((saltadas+1)); continue; fi filtrada="$filtrada $f" done + [ "$cerradas" -gt 0 ] && echo " ($cerradas CERRADAS por decisión — ver la cabecera de cada receta)" [ "$saltadas" -gt 0 ] && echo " (saltadas $saltadas ya selladas en el hub — ver la nota del sync unidireccional)" queue="$filtrada" [ -n "$(echo $queue)" ] || { echo "nada que hacer en $QUEUE: todo sellado en el hub"; exit 0; }