musl-fts: nueva receta — el fts(3) que musl no trae
Tercera pieza del frente libdw/musl. `libdwfl` de elfutils usa fts en linux-kernel-modules.c, y dwarves necesita libdwfl. ⚠ Sus símbolos casi nunca se ENLAZAN (dwarves no llama dwfl_linux_kernel_*, así que ese objeto no sale del archive), pero el fichero tiene que COMPILAR: hace falta un <fts.h> real con los campos y constantes que usa. Escribir ese header a mano es fácil de hacer mal en silencio; traer la implementación real es más honesto. Se compila a mano como musl-obstack. Gotcha menor: fts.c hace `#include "config.h"` con COMILLAS (obstack.c lo hace con ÁNGULOS).
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# musl-fts 1.2.7 — el `fts(3)` de BSD/glibc, empaquetado aparte para musl.
|
||||
#
|
||||
# POR QUÉ EXISTE: musl no trae `fts`, y `libdwfl` de elfutils lo usa en
|
||||
# `linux-kernel-modules.c` (recorre /lib/modules). `dwarves` necesita libdwfl, así que la cadena
|
||||
# entera lo arrastra. Es lo que Alpine empaqueta como `musl-fts`. Tercera pieza del frente
|
||||
# libdw/musl, junto a `musl-obstack` y `argp-standalone`.
|
||||
#
|
||||
# ⚠ En la práctica sus símbolos casi nunca se ENLAZAN: `dwarves` no llama a `dwfl_linux_kernel_*`,
|
||||
# así que ese objeto no se saca del archive. Pero el fichero tiene que COMPILAR, y para eso hace
|
||||
# falta un `<fts.h>` de verdad con los campos (`fts_namelen`, `fts_name`, `fts_info`…) y las
|
||||
# constantes (FTS_NOSTAT, FTS_LOGICAL, FTS_SKIP, FTS_F…). Escribir ese header a mano es fácil de
|
||||
# hacer MAL en silencio; traer la implementación real es más honesto.
|
||||
#
|
||||
# Se compila a mano (sin autotools), igual que musl-obstack: es UN fichero .c.
|
||||
name = "musl-fts"
|
||||
version = "1.2.7"
|
||||
license = "BSD-3-Clause"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/void-linux/musl-fts/archive/refs/tags/v1.2.7.tar.gz"
|
||||
sha256 = "49ae567a96dbab22823d045ffebe0d6b14b9b799925e9ca9274d47d26ff482a6"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
|
||||
[build.phases]
|
||||
# `fts.c` hace `#include "config.h"` (con comillas, a diferencia del de obstack que usa ángulos).
|
||||
configure = "printf '%s\\n' '/* minimo para musl */' > config.h"
|
||||
compile = '''
|
||||
$CC -c -O2 -fPIC -I. -D_GNU_SOURCE fts.c -o fts.o
|
||||
ar rcs libfts.a fts.o
|
||||
'''
|
||||
install = '''
|
||||
mkdir -p /out/usr/lib /out/usr/include
|
||||
cp libfts.a /out/usr/lib/
|
||||
cp fts.h /out/usr/include/
|
||||
test -f /out/usr/lib/libfts.a && test -f /out/usr/include/fts.h
|
||||
'''
|
||||
|
||||
[deps]
|
||||
build = ["binutils"]
|
||||
Reference in New Issue
Block a user