opensmtpd: la familia «correo» estaba vacía — y la colisión de símbolos se CONTÓ antes de arreglarla
Tercera de las cuatro familias que la tabla de `planear.py` daba SIN NADA en el catálogo. Quedan dos:
contenedores y base vectorial (qdrant está moliendo en el worker).
Cuál de los tres servidores es una decisión, y va con el motivo para poder discutirla: **postfix**
asume glibc en varios sitios (NIS, nsswitch, su `dict_nis`) y son ~250 kLOC — portarlo a musl es un
frente, no una receta; **exim** tiene una configuración que es literalmente un lenguaje de
programación, y esa superficie ha sido su fuente histórica de CVEs; **OpenSMTPD** viene de OpenBSD
con separación de privilegios POR DISEÑO, ~40 kLOC, ISC, y su rama «portable» existe justo para
construirse fuera de OpenBSD ⇒ musl es un objetivo previsto. Si alguien necesita las tablas
MySQL/LDAP de postfix esto no sirve — pero se discute con la razón delante en vez de descubrir la
ausencia durante una mudanza.
Verificado: los 10 binarios estáticos, CERO NEEDED, y `smtpd -n -f` sobre una `smtpd.conf` real
contesta `configuration OK`. REPRODUCE bit a bit.
**El muro fue una colisión de símbolos, y lo que importa es que se MIDIÓ antes de elegir el arreglo.**
OpenSMTPD-portable trae su propia **libtls** (la envoltura de LibreSSL) porque la necesita cuando se
construye contra OpenSSL; y OpenSSL 3 define en su capa de récords una función INTERNA con el mismo
nombre. Estático, las dos caen en el mismo binario:
ld.lld: error: duplicate symbol: tls_free
defined at ../../openbsd-compat/libtls/tls.c:708
defined at ssl/record/methods/tls_common.c:1473 in archive /usr/lib/libssl.a
En vez de suponer el tamaño del problema, se contó:
nm -g --defined-only openbsd-compat/libtls/*.o | sort -u → 158 símbolos
comm -12 <esos> <los globales de libssl.a> → **1**: tls_free
Uno solo ⇒ el arreglo es renombrar ése y nada más, con `--with-cppflags=-Dtls_free=…` (la perilla que
upstream ya expone). El `-D` alcanza toda la compilación de OpenSMTPD, así que renombra a la vez la
definición, la declaración de `tls.h` y los usos — consistente por construcción; la de OpenSSL vive
en un `.a` ya compilado y no se toca. Es seguro porque esa libtls es interna a este build.
Si hubieran sido docenas de símbolos, el arreglo correcto era otro —traer LibreSSL al corpus, que es
contra lo que upstream construye— y por eso se midió primero. Queda escrito en la receta para que el
día que OpenSSL sume otro choque se vuelva a contar en vez de apilar `-D`s.
Dos cosas más anotadas y no tapadas: `--with-libfts=/usr` es obligatorio porque `fts(3)` está en
glibc y NO en musl (el corpus tiene `musl-fts` justo para eso) y sin pasarlo `configure` lo buscaría
en el LAB, que no entra en `hash_inputs`; y los usuarios `_smtpd`/`_smtpq` todavía no existen en la
distro — se dejan en su nombre canónico a propósito, porque cambiarlos por `root` tiraría la
separación de privilegios, que es la razón principal para elegir este servidor.
This commit is contained in:
+39
-14
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"schema": "hammer-build-state/1",
|
||||
"totals": {
|
||||
"recipes": 885,
|
||||
"nodes": 887,
|
||||
"sealed": 885,
|
||||
"recipes": 886,
|
||||
"nodes": 888,
|
||||
"sealed": 886,
|
||||
"ajeno": 2
|
||||
},
|
||||
"by_class": {
|
||||
"ajeno": 2,
|
||||
"c": 241,
|
||||
"c": 242,
|
||||
"go": 363,
|
||||
"gui": 41,
|
||||
"kernel": 6,
|
||||
@@ -17,7 +17,7 @@
|
||||
"debt_by_class": {},
|
||||
"by_queue": {
|
||||
"corpus": {
|
||||
"sealed": 885,
|
||||
"sealed": 886,
|
||||
"ajeno": 2
|
||||
}
|
||||
},
|
||||
@@ -43,7 +43,7 @@
|
||||
"sealed": 101
|
||||
}
|
||||
},
|
||||
"sin_perfil": 647,
|
||||
"sin_perfil": 648,
|
||||
"orphan_deps": [],
|
||||
"topo_ok": true,
|
||||
"nodes": {
|
||||
@@ -1026,7 +1026,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 55
|
||||
"dependientes_total": 56
|
||||
},
|
||||
"biome": {
|
||||
"iname": "biome",
|
||||
@@ -1303,7 +1303,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 15
|
||||
"dependientes_total": 16
|
||||
},
|
||||
"bwrap": {
|
||||
"iname": "bwrap",
|
||||
@@ -9511,7 +9511,7 @@
|
||||
"perfiles": [
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 1
|
||||
"dependientes_total": 2
|
||||
},
|
||||
"libffi": {
|
||||
"iname": "libffi",
|
||||
@@ -10825,7 +10825,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 131
|
||||
"dependientes_total": 132
|
||||
},
|
||||
"mako": {
|
||||
"iname": "mako",
|
||||
@@ -11739,7 +11739,7 @@
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 1
|
||||
"dependientes_total": 2
|
||||
},
|
||||
"musl-obstack": {
|
||||
"iname": "musl-obstack",
|
||||
@@ -12446,6 +12446,31 @@
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"opensmtpd": {
|
||||
"iname": "opensmtpd",
|
||||
"version": "7.8.0p1",
|
||||
"link": "static",
|
||||
"compiler": "zig-cc",
|
||||
"deps": [
|
||||
"binutils",
|
||||
"busybox",
|
||||
"libevent",
|
||||
"make",
|
||||
"musl-fts",
|
||||
"openssl",
|
||||
"pkgconf",
|
||||
"zlib"
|
||||
],
|
||||
"cls": "c",
|
||||
"queue": "corpus",
|
||||
"foreign": false,
|
||||
"hash": "b3:51b185ef7e032a4ee10a6ac31799a7baf2b9ea0b95a1fd8f7fcc5239fd287a5b",
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"openssh": {
|
||||
"iname": "openssh",
|
||||
"version": "10.3p1",
|
||||
@@ -12492,7 +12517,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 29
|
||||
"dependientes_total": 30
|
||||
},
|
||||
"openssl-threads": {
|
||||
"iname": "openssl-threads",
|
||||
@@ -13189,7 +13214,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 411
|
||||
"dependientes_total": 412
|
||||
},
|
||||
"plow": {
|
||||
"iname": "plow",
|
||||
@@ -17930,7 +17955,7 @@
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 118
|
||||
"dependientes_total": 119
|
||||
},
|
||||
"zlib-ng": {
|
||||
"iname": "zlib-ng",
|
||||
|
||||
Reference in New Issue
Block a user