From 733065b1c453dc70c6836621e051b29f5291c028 Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 11 Sep 2026 21:36:20 +0000 Subject: [PATCH] =?UTF-8?q?qdrant:=20CONSTRUYE=20y=20ARRANCA=20=E2=80=94?= =?UTF-8?q?=20pero=20el=20artefacto=20ven=C3=ADa=20con=2069=20M=20de=20bas?= =?UTF-8?q?ura,=20y=20la=20causa=20es=20del=20lab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Selló en el worker con el arreglo del `compiler = "gcc"`. Verificado allá, corriéndolo y no por el código de salida: binario estático de 70 M sin NEEDED, `qdrant --version` → `qdrant 1.19.1`, y levantándolo de verdad: Qdrant HTTP listening on 6399 Qdrant gRPC listening on 6334 Access web UI at http://localhost:6399/dashboard ⚠ **Y al mirar el ÁRBOL del artefacto antes de promoverlo, pesaba 139 M — la mitad, basura.** 140 ficheros bajo `src/target/release/build/protobuf-src-*/out/install/include/google/protobuf/…`: las cabeceras y libs del protobuf que `protobuf-src` compila para su uso interno. **La causa no es de esta receta, y por eso vale escribirla.** El sandbox exporta **`DESTDIR=/out` de forma GLOBAL** (`sandbox.rs`), para que el `make install` de las recetas autotools funcione. `protobuf-src` hace su propio `make install` DENTRO de la fase compile, con `--prefix=/src/target/release/build/…/out/install`, y ese install anidado **hereda el DESTDIR** ⇒ su prefijo aterriza en `/out/src/target/…`. Nadie lo pidió, nada falla, y el artefacto sella con el doble de tamaño y un `/src` en la raíz que al hidratar se proyectaría sobre el FHS de la imagen. Le puede pasar a cualquier receta cuyo build ejecute un `make install` anidado — los crates `*-src` son la familia entera. Se limpia en la receta y NO en el lab: quitar el `DESTDIR` global cambiaría el comportamiento de todas las recetas autotools del corpus, que es una campaña con su propia verificación. `/out/src` nunca es salida legítima — la raíz del artefacto es un FHS y `/src` es el nombre del bind del lab. Queda en `incoming/` hasta que el worker selle la versión limpia; promover a `recipes/` con el artefacto sucio sería meter los 69 M al grafo. --- recipes/incoming/qdrant.toml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/recipes/incoming/qdrant.toml b/recipes/incoming/qdrant.toml index 66673b3b..0c699a9c 100644 --- a/recipes/incoming/qdrant.toml +++ b/recipes/incoming/qdrant.toml @@ -68,5 +68,26 @@ target = "x86_64-linux-musl" link = "static" flags = ["--bin", "qdrant"] +[build.phases] +# ⚠ **HAY QUE LIMPIAR `/out/src`, Y LA CAUSA NO ESTÁ EN ESTA RECETA.** El primer artefacto sellado +# pesaba 139 M y **la mitad —69 M— era basura**: 140 ficheros bajo +# `src/target/release/build/protobuf-src-*/out/install/include/google/protobuf/…`, o sea las +# cabeceras y libs del protobuf que `protobuf-src` compila para su uso interno. +# +# El mecanismo: el sandbox **exporta `DESTDIR=/out` de forma GLOBAL** (`sandbox.rs`, para que el +# `make install` de las recetas autotools funcione). `protobuf-src` hace su propio `make install` +# DENTRO de la fase compile, con `--prefix=/src/target/release/build/…/out/install` — y ese +# `make install` anidado **hereda el `DESTDIR`**, así que su prefijo aterriza en +# `/out/src/target/…`. Nadie lo pidió y nada falla: el artefacto sella con el doble de tamaño y con +# un `/src` en la raíz, que al hidratar se proyectaría sobre el sistema de ficheros de la imagen. +# +# Le va a pasar a **cualquier** receta cuyo build ejecute un `make install` anidado —los crates +# `*-src` son la familia entera—. Se limpia acá y no en el lab porque quitar el `DESTDIR` global +# cambiaría el comportamiento de las recetas autotools del corpus entero. +# +# `/out/src` nunca es una salida legítima: la raíz del artefacto es un FHS, y `/src` es el nombre del +# bind del lab. El resto de la fase es el default de Cargo, copiado tal cual. +install = 'rm -rf /out/src && mkdir -p /out/usr/bin && find target/release -maxdepth 1 -type f -perm -100 -exec cp {} /out/usr/bin/ \;' + [deps] build = ["binutils", "busybox", "make", "pkgconf", "protobuf"]