# shared-mime-info 2.4 — la base de datos MIME de freedesktop: qué tipo tiene un fichero y con qué # se abre. Sin ella el escritorio no resuelve asociaciones, iconos por tipo ni «abrir con», y GIO cae # a adivinar por extensión. # # POR QUÉ AHORA. Salió de `yupana frontera` (2026-09-08) como HUECO real: `kcoreaddons` la pide y no # había receta. Es un hueco de RUNTIME, no de build — KDE sella 1037/1037 sin ella, y por eso no la # veía ninguna métrica de deuda. Va al CORPUS y no a `incoming-kde` porque la necesitan las cuatro # imágenes de escritorio, y una receta resuelve sibling-first y después el catálogo PADRE, nunca una # cola hermana (mismo criterio que `xkeyboard-config`). # # ⚠ EL TARBALL DE GITLAB NO TRAE EL SUBMÓDULO `xdgmime`, y está bien. `.gitmodules` lo declara y el # directorio llega VACÍO, pero `meson.build` lo busca con `required: false` y sólo para la suite de # tests (`print-mime-data`, `test-mime-data`, `test-mime`). Con `build-tests=false` no se echa en # falta: lo único que hace es imprimir un warning. Comprobado leyendo meson.build:26-47 antes de # construir, no después de que fallara. # # `build-translations=false` por la misma razón que json-glib: las traducciones piden un `msgfmt` # completo y el corpus sólo tiene gettext-tiny. name = "shared-mime-info" version = "2.4" license = "GPL-2.0-or-later" [source] # Archive de GitLab pineado por sha256, como ca-certificates/cairo/libdrm. El pin ES la guarda: si # GitLab regenera el tarball con otros bytes, el fetch falla RUIDOSAMENTE en vez de construir otra # cosa. El blob va al mirror (ADR 0013) para que un upstream caído no deje la receta irreconstruible. tarball = "https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.4/shared-mime-info-2.4.tar.bz2" sha256 = "32dc32ae39ff1c1bf8434dd3b36770b48538a1772bc0298509d034f057005992" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" [build.phases] # `--prefer-static` NO es redundante con link=static: gobierna con qué se enlazan los EJECUTABLES # (acá `update-mime-database`), que es justo lo que se le escapaba a json-glib — declaraba estático # y salía dinámico contra `libc.so`, o sea un binario que no corre fuera del sandbox. # `update-mimedb=true` (upstream lo trae en false) para que el ARTEFACTO traiga la `mime.cache` ya # compilada. Sin ella el paquete son datos crudos: GIO y KDE leen `mime.cache`, no el XML, y alguien # tendría que acordarse de correr `update-mime-database` al armar cada imagen. Medido: la caché son # ~157 KB y 26 directorios de media-type generados desde el XML que instala esta misma receta. configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Dbuild-tests=false -Dbuild-translations=false -Dupdate-mimedb=true" compile = "ninja -C output" install = "DESTDIR=/out meson install -C output --no-rebuild" [deps] # `libffi`/`pcre2`/`zlib` son la clausura de pkg-config que declara el `.pc` de glib en # `Requires.private` — sin ellas el link estático muere buscando símbolos de glib. # `gettext-tiny` por su `msgfmt`: `data/meson.build` usa `i18n.merge_file` para generar # `freedesktop.org.xml` desde el `.in`, y eso NO lo gobierna `build-translations` — corre siempre, # porque no traduce cadenas de UI sino que arma el fichero de datos. Sin msgfmt el configure muere # con «Program 'msgfmt' not found» aunque las traducciones estén apagadas. build = ["meson", "samurai", "python3", "pkgconf", "libxml2", "glib", "libffi", "pcre2", "zlib", "gettext-tiny"]