# gcr 4.4.0.1 — criptografía y almacén de claves para el escritorio (parseo de certificados, prompts
# de contraseña, agente ssh). gnome-shell la exige por `gcr-4` (meson.build:74).
#
# Feature-minimal, y cada apagado se paga en recetas que NO hay que autorar:
#   -Dssh_agent=false  → libsecret sólo es requerida por el agente ssh (meson.build:96). Sin él,
#                        libsecret deja de ser frontera. El shell usa gcr para prompts, no como
#                        agente ssh (eso lo hace gnome-keyring, que no está en esta campaña).
#   -Dsystemd=disabled    → libsystemd es `required: get_option('systemd')` (:104), o sea que acá SÍ
#                        hay perilla. Es la tercera vez que aparece la C-ABI de logind en este
#                        frente y la tercera que se esquiva; mutter sigue siendo la única sin salida.
#   -Dgtk4=false       → la UI de prompts es opcional; `gcr-4` (lo que el shell enlaza) es la lib base.
#   -Dcrypto=libgcrypt -Dgpg_path=/usr/bin/gpg → de las dos opciones (libgcrypt/gnutls), libgcrypt YA está en el corpus y
#                        sellada, con su libgpg-error. gnutls no existe acá.
#
#   -Dgpg_path=…      → gcr sólo quiere la RUTA del binario gpg para hornearla en el código
#                        (meson.build:63-66: si la opción está vacía, hace find_program). No compila
#                        ni ejecuta nada de gnupg, así que fijar la ruta evita meter gnupg entero al
#                        sandbox por un string. La ruta es la del futuro artefacto, no la del host.
#
# El sed saca `subdir('po')` (:153). NO es capricho: el msgfmt de gettext-tiny —lo único que hay en
# el corpus— ABORTA con SIGABRT en po/ar.po (src/msgfmt.c:183). Es la segunda vez que ese msgfmt
# marca el límite (en iso-codes lo esquivé de antemano); si aparece una tercera, conviene autorar el
# gettext de GNU de verdad en vez de seguir apagando traducciones receta por receta. Lo que se pierde
# son los textos traducidos de los prompts de contraseña; la librería que enlaza el shell es la misma.
#
#: libgcrypt en el corpus es SÓLO estática, y su libgcrypt.pc pone
# gpg-error en `Requires.private`, que pkg-config expande únicamente con --static. Al enlazar el .a
# dentro de un .so ese cierre se pierde y el linker corta con `undefined symbol:
# gpg_err_code_to_errno` (referenciado desde libgcrypt.a). Se agrega a mano en vez de tocar
# libgcrypt.toml: re-hashearla arrastraría a todo lo que ya la tiene sellada.
#
# p11-kit es la única frontera que gcr abrió, y se cerró con -Dtrust_module=disabled del lado de ella.
# ISLA DINÁMICA: produce .so con GObject ⇒ glib dinámica, un registro de GType.
name    = "gcr"
version = "4.4.0.1"
license = "LGPL-2.1-or-later"

[source]
tarball = "https://download.gnome.org/sources/gcr/4.4/gcr-4.4.0.1.tar.xz"
sha256  = "0c3c341e49f9f4f2532a4884509804190a0c2663e6120360bb298c5d174a8098"

[build]
compiler = "zig-cc"
target   = "x86_64-linux-musl"
link     = "dynamic"

[build.phases]
configure = "sed -i \"/^subdir('po')$/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 -Ddefault_library=shared -Dgtk4=false -Dssh_agent=false -Dsystemd=disabled -Dcrypto=libgcrypt -Dgpg_path=/usr/bin/gpg -Dintrospection=true -Dvapi=false -Dgtk_doc=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", "gettext-tiny", "py3-setuptools", "gi-foreign-girs", "gobject-introspection", "glib", "glib-introspected", "p11-kit", "libgcrypt-shared", "libgpg-error-shared", "libffi", "pcre2", "zlib"]
