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"]