tawasuyu

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 1569Shell 203Rust 109Markdown 993728 Definitions

qdrant: murió a los 408 crates por el NOMBRE del wrapper del lab, no por qdrant

Primer intento en el worker: 1,5 h, 408 crates compilados, y esto:

    "/src/vendor/protobuf-src/protobuf/configure" … "--host=/src/.hammer-zig"
    Invalid configuration `/src/.hammer-zig': machine `/src/.hammer-unknown' not recognized

La cadena es qdrant → `raft-proto` (tikv/raft-rs) → `protobuf-build` → **`protobuf-src`**, que
compila protobuf 21.5 DESDE FUENTE con el crate `autotools` — o sea que ni siquiera usa el `protoc`
que acabo de meter en el catálogo. Y `autotools` adivina el triple `--host` **recortándole el sufijo
al nombre del compilador**. Leído en `vendor/autotools/src/lib.rs` del árbol de post-mortem, no
supuesto:

    let host = cc_path.strip_suffix("-cc").or_else(|| cc_path.strip_suffix("-gcc"));
    if let Some(host) = host { args.push(format!("--host={}", host)); }

El lab exporta `CC="$PWD/.hammer-zig-cc"` ⇒ recortar `-cc` deja `/src/.hammer-zig`, que viaja como
triple. **El fallo no tiene nada que ver con qdrant ni con protobuf: lo causa cómo se llama nuestro
wrapper.** Cualquier receta Cargo que arrastre el crate `autotools` va a chocar igual.

Con `compiler = "gcc"` el lab exporta `CC="gcc"`, al que no se le puede recortar `-cc` ni `-gcc` ⇒ el
crate **no añade `--host`** y configure corre nativo. El propio crate ya tiene un caso especial
`cc_path != "musl-gcc"`, señal de que la heurística es frágil y upstream lo sabe.

⚠ **Y NO se arregla renombrando el wrapper del lab, aunque sea lo obvio:** ese nombre vive dentro de
la cadena de la fase `compile`, que entra en `hash_inputs` ⇒ tocarlo re-hashea las **234 recetas Rust
del corpus**. Es una campaña con su propia verificación, no un arreglo de paso. La palanca por receta
es la correcta, y queda escrito en la receta para que el próximo que lo vea no reabra la discusión.

07cc3865803b0cb19c760cea596af75195ef48b8 · by Sergio · (1 month ago) · parent f52205af3 · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +25 −1

diff --git a/recipes/incoming/qdrant.toml b/recipes/incoming/qdrant.toml
index d90a144e..66673b3b 100644
--- a/recipes/incoming/qdrant.toml
+++ b/recipes/incoming/qdrant.toml
@@ -27,6 +27,30 @@
 #    razonable era «qdrant = rocksdb = C++ + libclang», que es media tarde de trabajo que no hacía
 #    falta.
 #
+# ⚠ **`compiler = "gcc"`: EL NOMBRE DEL WRAPPER DEL LAB ES UNA TRAMPA PARA EL CRATE `autotools`.**
+# Primer intento (con `zig-cc`), tras 408 crates compilados y ~1,5 h en el worker:
+#
+#     "/src/vendor/protobuf-src/protobuf/configure" … "--host=/src/.hammer-zig"
+#     Invalid configuration `/src/.hammer-zig': machine `/src/.hammer-unknown' not recognized
+#
+# La cadena es: qdrant → `raft-proto` (tikv/raft-rs) → `protobuf-build` → **`protobuf-src`**, que
+# compila protobuf 21.5 DESDE FUENTE con el crate `autotools` (o sea que ni siquiera usa el `protoc`
+# del corpus). Y `autotools` adivina el triple `--host` **recortándole el sufijo al nombre del
+# compilador** (`vendor/autotools/src/lib.rs`, leído en el árbol de post-mortem del worker):
+#
+#     let host = cc_path.strip_suffix("-cc").or_else(|| cc_path.strip_suffix("-gcc"));
+#     if let Some(host) = host { args.push(format!("--host={}", host)); }
+#
+# El lab exporta `CC="$PWD/.hammer-zig-cc"` ⇒ recortar `-cc` deja `/src/.hammer-zig`, que se pasa
+# como triple y `config.sub` rechaza. Con `compiler = "gcc"` el lab exporta `CC="gcc"`, al que NO se
+# le puede recortar `-cc` ni `-gcc` ⇒ el crate **no añade `--host`** y configure corre nativo, que
+# es lo correcto. (El propio crate ya trae un caso especial `cc_path != "musl-gcc"`, señal de que la
+# heurística es frágil y upstream lo sabe.)
+#
+# **NO se arregla renombrando el wrapper del lab**, aunque sea tentador: ese nombre está dentro de la
+# cadena de la fase `compile`, que entra en `hash_inputs` ⇒ tocarlo re-hashea las **234 recetas
+# Rust** del corpus. Eso es una campaña, no un arreglo de paso. La palanca por receta es la correcta.
+#
 # `link = "static"` es la apuesta por defecto del corpus para binarios Rust. Si jemalloc sobre musl
 # estático se resiste, la salida conocida es la perilla `MALLOC`/feature, no bajar a dinámico de
 # entrada — pero eso se decide con el log del worker delante, no acá.
@@ -39,7 +63,7 @@ tarball = "https://github.com/qdrant/qdrant/archive/refs/tags/v1.19.1.tar.gz"
 sha256  = "ca9f0cb5a6954d253b51f249161cb63e2c3fee2a3bf360056cf01f0e70b2b878"
 
 [build]
-compiler = "zig-cc"
+compiler = "gcc"
 target   = "x86_64-linux-musl"
 link     = "static"
 flags    = ["--bin", "qdrant"]