Etapa G (GUI): cadena de soporte de libadwaita — libsass/sassc (C++), libyaml, curl(min), libxmlb, gettext-tiny, itstool(stub), appstream(lean)
appstream 1.0.5 lean (compose/svg/stemming/gir/systemd off) destrabado con: gettext-tiny (msgfmt
p/ i18n de meson), itstool stub (copia el join-source, sin traducciones), curl mínimo (sin TLS, solo
satisface el link), libxmlb+libyaml, y sed que elimina subdir('docs/') incondicional (xsltproc+docbook).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
6 archivos · +150 −0
diff --git a/recipes/incoming-clib/appstream.toml b/recipes/incoming-clib/appstream.toml
new file mode 100644
index 00000000..14c9d756
--- /dev/null
+++ b/recipes/incoming-clib/appstream.toml
@@ -0,0 +1,26 @@
+# appstream 1.0.5 — metadatos de software (libadwaita lo exige duro p/ AdwAboutDialog). meson static LEAN:
+# systemd/svg/stemming/gir/vapi/docs/compose OFF (como pide el default_options de libadwaita). Solo
+# glib + libxml2 + libyaml.
+name = "appstream"
+version = "1.0.5"
+
+[source]
+tarball = "https://www.freedesktop.org/software/appstream/releases/AppStream-1.0.5.tar.xz"
+sha256 = "ce0ed29e89abd5f0cf790ea87d792f1967c3413060beb30e63a979578d975121"
+# las entradas del tar tienen `./` líder (./AppStream-1.0.5/…) ⇒ strip=2 (recorta `.` y el top-level).
+strip_components = 2
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+
+[build.phases]
+# subdir('docs/') es INCONDICIONAL (ignora -Ddocs=false) y exige xsltproc + stylesheets docbook-xsl
+# (otro pozo). Lo elimino: man pages prescindibles para la lib que consume libadwaita.
+configure = "sed -i \"\\#subdir('docs/')#d\" meson.build && PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Ddefault_library=static -Dsystemd=false -Ddocs=false -Dapidocs=false -Dinstall-docs=false -Dstemming=false -Dsvg-support=false -Dgir=false -Dvapi=false -Dcompose=false -Dc_args=-Wno-error=date-time"
+compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
+install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
+
+[deps]
+build = ["meson", "samurai", "python3", "pkgconf", "gperf", "gettext-tiny", "itstool", "glib", "libxml2", "libyaml", "curl", "libxmlb", "zstd", "pcre2", "libffi", "zlib"]
diff --git a/recipes/incoming-clib/curl.toml b/recipes/incoming-clib/curl.toml
new file mode 100644
index 00000000..54b50a06
--- /dev/null
+++ b/recipes/incoming-clib/curl.toml
@@ -0,0 +1,21 @@
+# curl 8.11.1 — solo para satisfacer el link de appstream (libadwaita no descarga nada). Build MÍNIMO:
+# sin TLS/ldap/psl/nghttp2/brotli/zstd/idn — libcurl.a presente basta. autotools static.
+name = "curl"
+version = "8.11.1"
+
+[source]
+tarball = "https://curl.se/download/curl-8.11.1.tar.xz"
+sha256 = "c7ca7db48b0909743eaef34250da02c19bc61d4f1dcedd6603f109409536ab56"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+
+[build.phases]
+configure = "./configure --prefix=/usr --build=$CBUILD --host=$CHOST --disable-shared --enable-static --without-ssl --without-libpsl --without-nghttp2 --without-brotli --without-zstd --without-libidn2 --disable-ldap --disable-ldaps --disable-docs --disable-manual --with-zlib"
+compile = "make -j4"
+install = "make install DESTDIR=/out"
+
+[deps]
+build = ["zlib"]
diff --git a/recipes/incoming-clib/gettext-tiny.toml b/recipes/incoming-clib/gettext-tiny.toml
new file mode 100644
index 00000000..4f40fe02
--- /dev/null
+++ b/recipes/incoming-clib/gettext-tiny.toml
@@ -0,0 +1,22 @@
+# gettext-tiny 0.3.2 — implementación mínima de las herramientas gettext (msgfmt/xgettext/msgmerge +
+# libintl) pensada para musl. Destraba el módulo i18n de meson (appstream/libadwaita lo necesitan para
+# i18n.gettext()). LIBINTL=MUSL: usa la libintl que ya trae musl. Reemplaza al gettext "1.0" roto del import.
+name = "gettext-tiny"
+version = "0.3.2"
+
+[source]
+tarball = "https://github.com/sabotage-linux/gettext-tiny/archive/refs/tags/v0.3.2.tar.gz"
+sha256 = "29cc165e27e83d2bb3760118c2368eadab550830d962d758e51bd36eb860f383"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+
+[build.phases]
+configure = "true"
+compile = "make -j4 LIBINTL=MUSL CC='zig cc'"
+install = "make install LIBINTL=MUSL prefix=/usr DESTDIR=/out"
+
+[deps]
+build = []
diff --git a/recipes/incoming-clib/itstool.toml b/recipes/incoming-clib/itstool.toml
new file mode 100644
index 00000000..cb20cd25
--- /dev/null
+++ b/recipes/incoming-clib/itstool.toml
@@ -0,0 +1,41 @@
+# itstool (sustituto) — el itstool real es un script Python que exige bindings libxml2 de python (ausentes
+# en el lab) y solo sirve para FUSIONAR traducciones en XML. Sin traducciones (gettext-tiny no genera .mo
+# reales), un itstool que copia el join-source al output produce el metainfo SIN traducir, que es exactamente
+# lo que necesita appstream/libadwaita aquí. Satisface i18n.itstool_join de meson. [source]=carrier.
+name = "itstool"
+version = "2.0.7"
+
+[source]
+tarball = "https://github.com/sabotage-linux/gettext-tiny/archive/refs/tags/v0.3.2.tar.gz"
+sha256 = "29cc165e27e83d2bb3760118c2368eadab550830d962d758e51bd36eb860f383"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+
+[build.phases]
+configure = "true"
+compile = '''
+cat > itstool <<'IEOF'
+#!/bin/sh
+# itstool falso: parsea la invocación de meson (i18n.itstool_join) y copia el join-source (-j) al output
+# (-o), ignorando its (-i) y los .mo. Resultado: XML sin traducir, válido.
+in=""; out=""
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -j) in="$2"; shift 2;;
+ -o) out="$2"; shift 2;;
+ -i) shift 2;;
+ --version) echo "itstool 2.0.7 (hammer stub)"; exit 0;;
+ *) shift;;
+ esac
+done
+[ -n "$in" ] && [ -n "$out" ] && cp "$in" "$out"
+IEOF
+chmod +x itstool
+'''
+install = "mkdir -p /out/usr/bin && cp itstool /out/usr/bin/itstool"
+
+[deps]
+build = []
diff --git a/recipes/incoming-clib/libxmlb.toml b/recipes/incoming-clib/libxmlb.toml
new file mode 100644
index 00000000..a4bc3be9
--- /dev/null
+++ b/recipes/incoming-clib/libxmlb.toml
@@ -0,0 +1,20 @@
+# libxmlb 0.3.22 — cache binaria de XML (appstream la exige). meson static. glib + zstd; lo opcional off.
+name = "libxmlb"
+version = "0.3.22"
+
+[source]
+tarball = "https://github.com/hughsie/libxmlb/releases/download/0.3.22/libxmlb-0.3.22.tar.xz"
+sha256 = "f3c46e85588145a1a86731c77824ec343444265a457647189a43b71941b20fa0"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+
+[build.phases]
+configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Ddefault_library=static -Dintrospection=false -Dgtkdoc=false -Dtests=false -Dstemmer=false -Dcli=false -Dc_args=-Wno-error=date-time"
+compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
+install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
+
+[deps]
+build = ["meson", "samurai", "python3", "pkgconf", "glib", "zstd", "pcre2", "libffi", "zlib"]
diff --git a/recipes/incoming-clib/libyaml.toml b/recipes/incoming-clib/libyaml.toml
new file mode 100644
index 00000000..05b4e0b1
--- /dev/null
+++ b/recipes/incoming-clib/libyaml.toml
@@ -0,0 +1,20 @@
+# libyaml 0.2.5 — parser YAML (lo usa appstream). autotools static mínimo, leaf.
+name = "libyaml"
+version = "0.2.5"
+
+[source]
+tarball = "https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz"
+sha256 = "c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+
+[build.phases]
+configure = "./configure --prefix=/usr --build=$CBUILD --host=$CHOST --disable-shared --enable-static"
+compile = "make -j4"
+install = "make install DESTDIR=/out"
+
+[deps]
+build = []