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>
This commit is contained in:
2026-06-30 12:56:44 -04:00
co-authored by Claude Opus 4.8
parent dfdddf062a
commit ec68fbe6f3
6 changed files with 150 additions and 0 deletions
+26
View File
@@ -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"]
+21
View File
@@ -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"]
+22
View File
@@ -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 = []
+41
View File
@@ -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 = []
+20
View File
@@ -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"]
+20
View File
@@ -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 = []