crun: un contenedor ARRANCÓ de verdad — la hoja de la última familia vacía
`crun` 1.29.1, y la prueba no es `--version`: con el `busybox` del propio corpus como rootfs y un
bundle OCI mínimo, rootless,
$ crun run prueba-takana
HOLA-DESDE-EL-CONTENEDOR
Linux
0
93
Entra como HOJA a propósito de la familia «contenedores», la última que la tabla de `planear.py`
daba vacía. Un runtime OCI es lo que cualquiera de los tres candidatos (docker, podman, containerd)
acaba ejecutando por debajo, así que esto **no presupone cuál se elige arriba** — esa decisión sigue
abierta y no la toma una receta.
crun y no runc: C en vez de Go, ~300 KB contra ~10 MB, y es el runtime por defecto de Alpine ⇒ musl
es objetivo probado. No son excluyentes.
Tres deps que NO se deducen del proyecto, y las tres abortaban el `configure`:
· `--disable-systemd` no es preferencia: `AC_CHECK_HEADERS([systemd/sd-bus.h], [], [AC_MSG_ERROR…])`
lo hace OBLIGATORIO salvo que se apague. Esta distro no lleva systemd ⇒ el cgroup manager será
`cgroupfs`. Coherente con el resto del sistema, y mejor decidido acá que descubierto después.
· **`argp-standalone`**: crun parsea flags con `argp_parse(3)`, extensión de glibc que musl no tiene.
La receta YA estaba en el corpus y sellada — sólo faltaba que alguien la pidiera.
· **`python3`** aunque crun sea C puro: su `AM_PATH_PYTHON` no está marcado opcional. Misma figura
que meson.
**Y el vigía de enlace estático se ganó el sueldo.** El primer sellado pasó todo —corría, 0 deuda—
pero `static-audit.sh` cantó: `✗ crun dice static, es DINÁMICO → libc.so`. crun enlaza con libtool,
que lee el `-static` del lab como «preferí los `.a` de libtool» y no como flag al linker. El arreglo
es `LDFLAGS="-all-static -no-pie"` en compile **y en install** — libtool RELINKEA al instalar, así
que sólo en compile deja bueno el árbol de build y dinámico lo que se sella. Ahora: 0 NEEDED, y
`+CAP +SECCOMP +EBPF +JSON_C` intactos.
libcap y libseccomp se declaran y NO se apagan, que es la decisión contraria a los `--disable-*` de
arriba y es deliberada: son las dos piezas con las que un runtime OCI acota de verdad al contenedor.
Un crun sin ellas compila igual, aísla mucho menos, y el binario no lo diría.
**Promoción**: `libseccomp` pasa de `recipes/incoming-gnome/` al corpus, porque ya tiene dos
consumidores independientes (el stack de GNOME y crun) y no hay variante homónima con la que colisionar.
Control en los dos sentidos antes de moverla: su hash y los de `gnome-shell`/`mutter` son idénticos
antes y después, y coinciden con los que el grafo ya tenía registrados ⇒ **cero re-hasheo**. La
resolución sibling→padre de `resolve_dep_path` hace que los consumidores de la cola la sigan viendo.
This commit is contained in:
+61
-14
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"schema": "hammer-build-state/1",
|
||||
"totals": {
|
||||
"recipes": 886,
|
||||
"nodes": 888,
|
||||
"sealed": 886,
|
||||
"recipes": 888,
|
||||
"nodes": 890,
|
||||
"sealed": 888,
|
||||
"ajeno": 2
|
||||
},
|
||||
"by_class": {
|
||||
"ajeno": 2,
|
||||
"c": 242,
|
||||
"c": 244,
|
||||
"go": 363,
|
||||
"gui": 41,
|
||||
"kernel": 6,
|
||||
@@ -17,7 +17,7 @@
|
||||
"debt_by_class": {},
|
||||
"by_queue": {
|
||||
"corpus": {
|
||||
"sealed": 886,
|
||||
"sealed": 888,
|
||||
"ajeno": 2
|
||||
}
|
||||
},
|
||||
@@ -43,7 +43,7 @@
|
||||
"sealed": 101
|
||||
}
|
||||
},
|
||||
"sin_perfil": 648,
|
||||
"sin_perfil": 649,
|
||||
"orphan_deps": [],
|
||||
"topo_ok": true,
|
||||
"nodes": {
|
||||
@@ -514,7 +514,7 @@
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 2
|
||||
"dependientes_total": 3
|
||||
},
|
||||
"arje-absorb": {
|
||||
"iname": "arje-absorb",
|
||||
@@ -1026,7 +1026,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 56
|
||||
"dependientes_total": 57
|
||||
},
|
||||
"biome": {
|
||||
"iname": "biome",
|
||||
@@ -1303,7 +1303,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 16
|
||||
"dependientes_total": 17
|
||||
},
|
||||
"bwrap": {
|
||||
"iname": "bwrap",
|
||||
@@ -2937,6 +2937,32 @@
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"crun": {
|
||||
"iname": "crun",
|
||||
"version": "1.29.1",
|
||||
"link": "static",
|
||||
"compiler": "zig-cc",
|
||||
"deps": [
|
||||
"argp-standalone",
|
||||
"binutils",
|
||||
"busybox",
|
||||
"json-c",
|
||||
"libcap",
|
||||
"libseccomp",
|
||||
"make",
|
||||
"pkgconf",
|
||||
"python3"
|
||||
],
|
||||
"cls": "c",
|
||||
"queue": "corpus",
|
||||
"foreign": false,
|
||||
"hash": "b3:ecf33acabf992acf1f204e7e942699abb179ff50e912e02c993e309cc1146a0f",
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"csview": {
|
||||
"iname": "csview",
|
||||
"version": "1.3.4",
|
||||
@@ -8098,7 +8124,7 @@
|
||||
"perfiles": [
|
||||
"escritorio-sway"
|
||||
],
|
||||
"dependientes_total": 2
|
||||
"dependientes_total": 3
|
||||
},
|
||||
"json-glib": {
|
||||
"iname": "json-glib",
|
||||
@@ -9366,7 +9392,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 4
|
||||
"dependientes_total": 5
|
||||
},
|
||||
"libdisplay-info": {
|
||||
"iname": "libdisplay-info",
|
||||
@@ -9961,6 +9987,27 @@
|
||||
],
|
||||
"dependientes_total": 1
|
||||
},
|
||||
"libseccomp": {
|
||||
"iname": "libseccomp",
|
||||
"version": "2.6.1",
|
||||
"link": "static",
|
||||
"compiler": "zig-cc",
|
||||
"deps": [
|
||||
"gperf",
|
||||
"make"
|
||||
],
|
||||
"cls": "c",
|
||||
"queue": "corpus",
|
||||
"foreign": false,
|
||||
"hash": "b3:1910d00c4c59f3a9d339ff0aac6c5f31dacdc156719777f24b1a2e94eec6a9b5",
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [
|
||||
"escritorio-gnome"
|
||||
],
|
||||
"dependientes_total": 6
|
||||
},
|
||||
"libsndfile": {
|
||||
"iname": "libsndfile",
|
||||
"version": "1.2.2",
|
||||
@@ -10825,7 +10872,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 132
|
||||
"dependientes_total": 133
|
||||
},
|
||||
"mako": {
|
||||
"iname": "mako",
|
||||
@@ -13214,7 +13261,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 412
|
||||
"dependientes_total": 413
|
||||
},
|
||||
"plow": {
|
||||
"iname": "plow",
|
||||
@@ -13736,7 +13783,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 320
|
||||
"dependientes_total": 321
|
||||
},
|
||||
"qrcp": {
|
||||
"iname": "qrcp",
|
||||
|
||||
@@ -80,3 +80,4 @@ abseil-cpp a0d2ad6f771ecb64471a7e25db365cfcfb785574d75d4161ee2423beb7f35b5f 2026
|
||||
protobuf c01f39d4a566e48f09d077ac20a5c6249c6a36fe3c53196c1c6e5e4ce0bc5991 2026-09-11 reproduce
|
||||
kubectl ca95c5292688c838715727f9b909a0722d9fc98a778edefb2a4864e01678056e 2026-09-11 reproduce
|
||||
opensmtpd 51b185ef7e032a4ee10a6ac31799a7baf2b9ea0b95a1fd8f7fcc5239fd287a5b 2026-09-11 reproduce
|
||||
crun ecf33acabf992acf1f204e7e942699abb179ff50e912e02c993e309cc1146a0f 2026-09-11 reproduce
|
||||
|
||||
|
Reference in New Issue
Block a user