recipes/elfutils: de-Alpinizar libelf (último build-dep Alpine del kernel)

tools/objtool del kernel enlaza -lelf (libelf+gelf.h); venía de `apk add
elfutils-dev`. Ahora recipes/elfutils.toml construye SÓLO libelf (0.194, lo que
objtool necesita — no libdw/libdwfl/src) desde fuente, wired como deps.build del
kernel. Con esto NINGÚN build-dep del kernel viene de Alpine: el camino del
kernel es 100% hammer-from-source.

elfutils es glibc-céntrico; musl no trae <error.h>/<argp.h>/<libintl.h>/fts/
obstack/rawmemchr. En vez del parche completo de Alpine, shims mínimos en compat/
(vía CPPFLAGS/-include): error.h y argp.h (sólo los usan color.c/printversion.c,
cuyos .o van en libeu.a pero objtool NO referencia ⇒ basta que compilen); libintl
no-op (+ --disable-nls); rawmemchr inline; y libargp/libfts/libobstack.a stubs
para pasar los AC_SEARCH_LIBS del configure (símbolos inertes para libelf). CC=gcc.

bootstrap-devfs.sh: elfutils-dev fuera del NEEDED. Validado: purgué elfutils-dev
del devfs, rebuild → objtool linkea el libelf hammer (sin gelf.h Alpine), y
HAMMER_KERNEL=1 verify → ✓ REPRODUCIBLE bit a bit, DRIVER_RC=0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-19 13:51:15 -04:00
co-authored by Claude Opus 4.8
parent 7304eb3381
commit 5937f746e5
3 changed files with 132 additions and 8 deletions
+5 -5
View File
@@ -132,14 +132,14 @@ else
# un compilador C++. (zlib-dev quedará reemplazado por recipes/zlib.toml cuando el frente avance.)
# `flex bison`: build-deps del kernel (lexer/parser de kconfig). También hay recipes/{flex,bison}.toml
# hammer-built; aquí en el devfs base son el arranque (frente kernel-from-source).
# `elfutils-dev`: aporta libelf + gelf.h, que `tools/objtool` del kernel necesita (en x86_64 las
# mitigaciones seleccionan CONFIG_OBJTOOL aunque se use frame-pointer unwinder). Build-tool de
# arranque (mismo status que g++/zlib-dev; no se enlaza en nada enviado, no afecta of_tree del 4/4);
# quedará reemplazado por recipes/elfutils.toml (libelf desde fuente) cuando el frente kernel avance.
# NOTA: `elfutils-dev` YA NO va aquí — de-Alpinizado a recipes/elfutils.toml (sólo libelf, con shims
# musl argp/error/libintl/fts/obstack/rawmemchr), deps.build del kernel. objtool enlaza el libelf
# hammer desde la capa overlay. (El runtime libelf.so.1 de Alpine, si algún otro tool lo necesita,
# es la misma versión 0.194 ABI-compatible.)
# NOTA: `openssl-dev` YA NO va aquí — de-Alpinizado a recipes/openssl.toml (libcrypto estática,
# deps.build del kernel). El host-tool certs/extract-cert lo enlaza desde la capa overlay hammer.
# El runtime libcrypto3/libssl3 (que curl/git necesitan) lo trae Alpine aparte, no es openssl-dev.
NEEDED="make autoconf automake m4 patch coreutils libtool pkgconf bash binutils g++ zlib-dev flex bison elfutils-dev rust cargo linux-headers bubblewrap git curl kmod"
NEEDED="make autoconf automake m4 patch coreutils libtool pkgconf bash binutils g++ zlib-dev flex bison rust cargo linux-headers bubblewrap git curl kmod"
missing=""
for pkg in $NEEDED; do
# apk info -e devuelve el paquete si está instalado, vacío si no.