qdrant: CONSTRUYE y ARRANCA — pero el artefacto venía con 69 M de basura, y la causa es del lab
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.
This commit is contained in:
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user