vps-setup: `patch` faltaba en la rama Fedora — tumbaba el stack GUI de GNOME
En Debian `patch` entra de regalo dentro de `build-essential`; al desglosar la rama dnf a gcc/g++/make sueltos se cayó sin que nadie lo notara. El campo `patches = [...]` de una receta lo aplica hammer DEL LADO DEL HOST, fuera del sandbox, así que no alcanza con que el rootfs lo traiga —lo trae, `/usr/bin/patch` está en el alpine de los dos labs— y por eso el diagnóstico "rootfs laptop ≠ worker" no aplicaba acá. Medido en dev.gioser.net: `cairo-shared` moría con `spawn patch: No such file or directory` y detrás caían `pango` y `gtk4`. El stack GUI entero de GNOME por un binario de 129 KB ausente en el host. Regla que queda escrita: toda herramienta que hammer invoque HOST-SIDE va en esta lista, no en `[deps]` de la receta — declararla en la receta re-hashearía cairo y todo GNOME debajo, para arreglar algo que no es de la receta. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LykB7vw38b4Ck1Zij15RQ4
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +10 −1
- scripts/farm/vps-setup.sh +10 −1
diff --git a/scripts/farm/vps-setup.sh b/scripts/farm/vps-setup.sh
index 51edaac0..ddaced47 100755
--- a/scripts/farm/vps-setup.sh
+++ b/scripts/farm/vps-setup.sh
@@ -61,7 +61,16 @@ if [ "$PKG" = apt ]; then
else
# Equivalencias Fedora. `build-essential` no existe: gcc/g++/make sueltos.
# uidmap → shadow-utils (trae newuidmap/newgidmap); xz-utils → xz; libssl-dev → openssl-devel.
- $DNF install -y -q git gcc gcc-c++ make curl pkgconf-pkg-config openssl-devel \
+ #
+ # ⚠ `patch` VA EXPLÍCITO Y NO ES OBVIO (2026-08-29). En Debian entra de regalo dentro de
+ # `build-essential`; al desglosar a gcc/g++/make sueltos se cayó sin que nadie lo notara. El
+ # campo `patches = [...]` de una receta lo aplica hammer DEL LADO DEL HOST, fuera del sandbox
+ # ⇒ no alcanza con que el rootfs lo traiga (lo trae: `/usr/bin/patch` está en el alpine). Sin
+ # él, `cairo-shared` muere con `spawn patch: No such file or directory` y detrás caen `pango`
+ # y `gtk4`, o sea el stack GUI entero de GNOME por un binario de 129 KB.
+ # Regla: toda herramienta que hammer invoque HOST-SIDE va en esta lista, no en `[deps]` de la
+ # receta — declararla en la receta re-hashearía cairo y todo GNOME debajo para nada.
+ $DNF install -y -q git gcc gcc-c++ make patch curl pkgconf-pkg-config openssl-devel \
bubblewrap rsync ca-certificates shadow-utils xz tar findutils
fi