From 4357cd7b0fd6dbd94c14eb7c7265d727c0c8dda1 Mon Sep 17 00:00:00 2001 From: sergio Date: Fri, 17 Jul 2026 15:32:14 -0400 Subject: [PATCH] estado: buscar el artefacto por el name INTERNO, no el basename del fichero MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El grafo buscaba store/- pero el artefacto se sella por el name INTERNO de la receta (qtbase.toml → name=qt6-qtbase → store/-qt6-qtbase). Las qt6-* KDE salían 'debt' aunque estuvieran selladas. Fix: nodo lleva iname=d['name']; state_of busca por iname. Las aristas de deps siguen por basename (así resuelve resolve_dep_path). qtbase ahora sale sealed correctamente. Co-Authored-By: Claude Opus 4.8 --- scripts/build-state.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/build-state.py b/scripts/build-state.py index 292a55ed..d34938a0 100755 --- a/scripts/build-state.py +++ b/scripts/build-state.py @@ -77,6 +77,10 @@ def load_recipes(): b = d.get("build", {}) recs[n] = dict( path=f, + # el artefacto se sella por el `name` INTERNO, que puede diferir del basename del + # fichero (qtbase.toml → name="qt6-qtbase"). El store lookup usa iname; las aristas de + # deps siguen usando el basename (así resuelve `resolve_dep_path`). + iname=d.get("name") or n, version=d.get("version"), link=b.get("link"), compiler=b.get("compiler"), @@ -95,13 +99,13 @@ def vigente_hash(path): except Exception: return None -def state_of(name, h): +def state_of(iname, h): if h is None: return "unhashable" - if os.path.isdir(os.path.join(STORE, f"{h[3:]}-{name}")): + if os.path.isdir(os.path.join(STORE, f"{h[3:]}-{iname}")): return "sealed" # ¿hay algún sellado histórico? distingue "cambió" de "nunca construida". - if glob.glob(os.path.join(STORE, f"*-{name}")): + if glob.glob(os.path.join(STORE, f"*-{iname}")): return "debt" return "never" @@ -136,7 +140,7 @@ def main(): r["hash"] = None; r["state"] = "unhashable"; continue h = vigente_hash(r["path"]) r["hash"] = h - r["state"] = state_of(n, h) + r["state"] = state_of(r.get("iname", n), h) order = toposort(recs)