gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1385Shell 122Rust 77Markdown 682241 Definiciones

hydrate-profile: encontrar el binario donde ESTÉ — no sólo en el árbol de desarrollo

`HAMMER` estaba cableado a `ROOT/target/release/takana`, así que el guión no corre en una caja
INSTALADA, donde el binario es `/usr/bin/takana` y `target/` ni existe:

    FileNotFoundError: [Errno 2] … '/opt/takana/target/release/takana'

Es la misma deuda que este frente ya pagó dos veces —`respaldo-storagebox.sh` y el «unhashable 875»
con el lab perfecto—: el instrumental asume que el hub es un árbol de desarrollo. Ahora busca en
`$TAKANA`, `$HAMMER`, el árbol de desarrollo y el `PATH`, en ese orden.

Salió al ir a actualizar la caja de producción a la imagen nueva, que es exactamente el caso de uso
para el que no servía.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Tf9T4vGzsMoT7eS8YzMFn

77732edead25c141bc395015f4ca990a3f9cb8c1 · por Sergio · (hace 1 mes) · padre e5fefa35d · ver el árbol en este commit

Delta semántico · 1

scripts/hydrate-profile.py

1 archivos · +16 −1

diff --git a/scripts/hydrate-profile.py b/scripts/hydrate-profile.py
index 8f081373..3d76a912 100755
--- a/scripts/hydrate-profile.py
+++ b/scripts/hydrate-profile.py
@@ -34,7 +34,22 @@ import yupana
 import targets as targets_mod
 
 ROOT = yupana.ROOT
-HAMMER = str(ROOT / "target/release/takana")
+
+def _binario_takana():
+    """El binario, buscado en los TRES sitios donde puede estar — no sólo en el árbol de desarrollo.
+
+    Estaba cableado a `ROOT/target/release/takana` y por eso este script no corría en una caja
+    INSTALADA, donde el binario es `/usr/bin/takana` y `target/` ni existe. Es la misma deuda que el
+    frente del servidor ya pagó en `respaldo-storagebox.sh` y en los grafos («unhashable 875» con el
+    lab perfecto): el instrumental asume que el hub es un árbol de desarrollo. Falla al invocar, con
+    un `FileNotFoundError` que nombra una ruta que en esa máquina nunca va a existir.
+    """
+    for c in (os.environ.get("TAKANA"), os.environ.get("HAMMER"), str(ROOT / "target/release/takana")):
+        if c and os.path.exists(c):
+            return c
+    return shutil.which("takana") or shutil.which("hammer") or str(ROOT / "target/release/takana")
+
+HAMMER = _binario_takana()
 
 
 def opcion(nombre, defecto=None):