# polkit 127 — elevación de privilegios. gnome-shell lo exige por `polkit-agent-1` (meson.build:86)
# y además lo usa DESDE JS: `gi://Polkit` aparece en js/ui/components/polkitAgent.js,
# endSessionDialog.js, status/thunderbolt.js y environment.js.
#
# SÓLO LAS LIBRERÍAS (-Dlibs-only=true -Dsession_tracking=ConsoleKit -Dauthfw=shadow), y acá la opción sí recorta de verdad (a diferencia de lo que
# pasó con colord): el bloque `if not libs_only` de meson.build:145-159 es exactamente el que pide
# expat, duktape (el motor JS de las reglas) y threads. Sin polkitd no hace falta ninguno.
#
# Y NO ES UN RECORTE A DESGANO: el demonio ya lo pone arje. La Semilla `session-gnome` tiene un
# `compat-polkit` (/usr/lib/arje/arje-polkit-compat) que implementa el servicio D-Bus; lo que falta
# del lado del corpus es la librería que las aplicaciones enlazan y el typelib que el shell importa.
# Meterse polkitd encima sería competirle a arje, no completarlo.
#
# -Dsession_tracking=ConsoleKit -Dauthfw=shadow NO es una preferencia por ConsoleKit: es la única de las tres
# opciones que NO exige una C-ABI de logind. `logind` pide libsystemd y `elogind` pide libelogind
# (meson.build:198-211), y son LAS MISMAS funciones sd-login que trabaN a mutter (sd_uid_get_display,
# sd_pidfd_get_session). Con libs-only ese camino queda inerte: el seguimiento de sesión lo hace
# polkitd, que no construimos. Cuando exista el shim de sd-login, esto puede volver a `logind`.
#
# ISLA DINÁMICA obligatoria: el typelib exige un .so real que gjs pueda dlopen(), y además cualquier
# cosa que produzca .so y use GObject tiene que enlazar la glib .so — si no, dos registros de GType
# (la lección que costó los SIGSEGV de colord).
name    = "polkit"
version = "127"
license = "LGPL-2.0-or-later"

[source]
# El .orig.tar.gz inmutable del pool de Debian. El proyecto se mudó a github.com/polkit-org/polkit y
# sus `archive/refs/tags/*.tar.gz` son autogenerados ⇒ no deterministas (lección de cairo/iso-codes).
tarball = "http://deb.debian.org/debian/pool/main/p/policykit-1/policykit-1_127.orig.tar.gz"
sha256  = "9b7bc16f086479dcc626c575976568ba4a85d34297a750d8ab3d2e57f6d8b988"

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

[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 -Ddefault_library=shared -Dlibs-only=true -Dsession_tracking=ConsoleKit -Dauthfw=shadow -Dintrospection=true -Dexamples=false -Dtests=false -Dman=false -Dgtk_doc=false -Dgettext=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", "gobject-introspection", "glib", "glib-introspected", "dbus", "libffi", "pcre2", "zlib"]
