arje-logind-compat: repineado al fix (b3:5e4b8e04) — la cadena vuelve a ser reproducible
Los dos arreglos de arje-logind-compat (sesión eager + object path de Session
escapado como systemd) están commiteados y pusheados en tawasuyu, así que la
imagen ya NO corre un binario compilado a mano: corre el artefacto sellado, y se
verificó que da EXACTAMENTE el mismo resultado (mismo `Added virtual monitor
Meta-0` → `Using Wayland display name 'wayland-0'` → mismo muro en el typelib de
AccountsService).
El pin va a la rama selfhost, no a main: esa rama existe para que hammer pueda
construir con --locked de forma hermética (el monorepo gitignora el Cargo.lock).
Estaba MUY atrás — el artefacto viejo ni siquiera tenía el objeto Session que
mutter necesita —, así que se le mergeó main y se regeneró el Cargo.lock, que con
main al día había quedado viejo y habría hecho fallar el --locked.
Y ahí apareció una colisión ya conocida pero no aplicada acá: el monorepo COMMITEA
su propio `vendor/` (`[patch.crates-io] smithay = { path = "vendor/smithay" }`, la
copia parcheada que mirada usa para el tearing) y `cargo vendor` de hammer escribe
en `vendor/` por defecto, pisándolo. El build moría con
`failed to read /src/vendor/smithay/.cargo-checksum.json`. Se resuelve con el
campo que ya existía para esto: cargo_vendor_dir = ".hammer-cargo-vendor".
De paso, el script de imagen elige el artefacto por `hammer hash` sobre la receta
—el que corresponde a la receta de HOY— en vez de por el más reciente del store:
con dos artefactos del mismo paquete conviviendo, la fecha no dice cuál es el
vigente. Mismo criterio que hydrate-gnome.sh.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -29,7 +29,13 @@ version = "0.0.1"
|
||||
[source]
|
||||
# El `commit` es el identificador inmutable (la URL es sólo locator, no entra al hash).
|
||||
repo = "gitea@git.tawasuyu.net:tawasuyu/tawasuyu.git"
|
||||
commit = "06184e43a8b3179e41905dc56ba07ec569df1ebb"
|
||||
commit = "e65e943ef8f6fa77ea9b8565f5d73d9f511ab0df"
|
||||
# El monorepo COMMITEA su propio `vendor/` — `[patch.crates-io] smithay = { path = "vendor/smithay" }`,
|
||||
# una copia parcheada de smithay que mirada necesita para el tearing. `cargo vendor` de hammer escribe
|
||||
# en `vendor/` por defecto y lo pisaba: el build moría con
|
||||
# `failed to read /src/vendor/smithay/.cargo-checksum.json` al resolver la dep git de taffy. Se
|
||||
# vendorea a un subdir aparte. Ver [[hammer-cargo-vendor-clobbers-project-vendor]].
|
||||
cargo_vendor_dir = ".hammer-cargo-vendor"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
|
||||
@@ -88,14 +88,16 @@ echo "==> inyectando arje-logind-compat (el login1 del fractal)"
|
||||
# LEYENDO /run/systemd/{sessions,users,seats}. Pero alguien tiene que ESCRIBIR esos ficheros, y ese
|
||||
# alguien es arje-logind-compat, el daemon D-Bus que se hace pasar por org.freedesktop.login1.
|
||||
# libelogind entra solo (es dep de mutter); el daemon no, porque nadie lo declara como dep de build.
|
||||
# ALC_BIN permite inyectar un binario RECIÉN COMPILADO en vez del artefacto sellado. Es para probar
|
||||
# El artefacto se elige por `hammer hash` sobre la receta —el que corresponde a la receta de HOY—, no
|
||||
# por el más reciente del store: con dos artefactos del mismo paquete conviviendo, la fecha no dice
|
||||
# cuál es el vigente. ALC_BIN permite inyectar un binario RECIÉN COMPILADO en vez del artefacto sellado. Es para probar
|
||||
# un cambio en arje-compat antes de commitear/pushear tawasuyu y re-sellar la receta (la receta pina
|
||||
# un commit, así que sin push no hay artefacto nuevo). Lo que se pruebe así NO es reproducible: es
|
||||
# andamio de iteración, y el camino de producción sigue siendo el artefacto del store.
|
||||
if [ -n "${ALC_BIN:-}" ] && [ -x "$ALC_BIN" ]; then
|
||||
install -Dm755 "$ALC_BIN" "$MERGED"/usr/bin/arje-logind-compat
|
||||
echo " ⚠ binario LOCAL (no sellado): $ALC_BIN"
|
||||
elif ALC="${ALC:-$(ls -dt store/*-arje-logind-compat 2>/dev/null | head -1)}"; [ -n "$ALC" ] && [ -d "$ALC" ]; then
|
||||
elif ALC="${ALC:-store/$(./target/release/hammer --store store hash recipes/arje-logind-compat.toml 2>/dev/null | tail -1 | sed 's/^b3://')-arje-logind-compat}"; [ -d "$ALC" ]; then
|
||||
install -Dm755 "$ALC"/usr/bin/arje-logind-compat "$MERGED"/usr/bin/arje-logind-compat
|
||||
echo " ✓ $(basename "$ALC" | cut -c1-12)"
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user