diff --git a/recipes/musl-obstack.toml b/recipes/musl-obstack.toml new file mode 100644 index 00000000..3183b089 --- /dev/null +++ b/recipes/musl-obstack.toml @@ -0,0 +1,44 @@ +# musl-obstack 1.2.3 — la `obstack` de glibc, empaquetada aparte para musl. +# +# POR QUÉ EXISTE: `obstack` es una extensión de GNU libc que musl NO trae, y la necesitan DOS cosas +# del corpus: `libdw` de elfutils (su `libdwP.h` mete `struct obstack` en el `Dwarf`) y `dwarves`, +# que hace `find_package(obstack REQUIRED)`. Es la misma pieza que Alpine empaqueta como +# `musl-obstack`. Ver [[frente libdw/musl]] en la receta `elfutils-libdw`. +# +# SE COMPILA A MANO, sin autotools: el tarball trae `Makefile.am` pero NO un `configure` generado, y +# el corpus no tiene recetas de autoconf/automake/libtool. Son DOS ficheros .c, así que un +# `$CC -c` + `ar` es más honesto que arrastrar toda la cadena autotools para esto. +# Los nombres importan: `dwarves` busca `libobstack` con `find_library(... NAMES obstack)` en +# /usr/lib, así que el artefacto tiene que instalar `/usr/lib/libobstack.a` y `obstack.h`. +name = "musl-obstack" +version = "1.2.3" +license = "GPL-2.0-or-later" + +[source] +tarball = "https://github.com/void-linux/musl-obstack/archive/refs/tags/v1.2.3.tar.gz" +sha256 = "9ffb3479b15df0170eba4480e51723c3961dbe0b461ec289744622db03a69395" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" + +[build.phases] +# `obstack.c` hace `#include ` SIN guarda (fuera de `_LIBC`), así que hay que darle uno +# aunque no venga de autotools. Lo único que mira de él es `HAVE_LIBINTL_H`, que en musl NO existe +# ⇒ basta con no definirlo. Escribimos el config.h mínimo en vez de arrastrar autoconf. +configure = "printf '/* minimo para musl: sin libintl */\\n' > config.h" +compile = ''' +$CC -c -O2 -fPIC -I. obstack.c -o obstack.o +$CC -c -O2 -fPIC -I. obstack_printf.c -o obstack_printf.o +ar rcs libobstack.a obstack.o obstack_printf.o +''' +install = ''' +mkdir -p /out/usr/lib /out/usr/include +cp libobstack.a /out/usr/lib/ +cp obstack.h /out/usr/include/ +test -f /out/usr/lib/libobstack.a && test -f /out/usr/include/obstack.h +''' + +[deps] +build = ["binutils"]