# 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"]