# polkit 127 — variante incoming-kde: SÓLO las librerías, SIN introspección. # # ── POR QUÉ UNA SEGUNDA RECETA Y NO REUSAR recipes/incoming-gnome/polkit.toml ─────────────────── # Porque no se puede: takana resuelve las deps hermano→padre (la cola propia, después `recipes/`) y # NUNCA cruza a una cola hermana. Desde incoming-kde, la de incoming-gnome es invisible. Y aunque se # pudiera, no serviría tal cual: aquella se construye con `-Dintrospection=true` contra # `glib-introspected`, que es la ISLA DINÁMICA del shell de GNOME (gjs importa `gi://Polkit` y por eso # necesita el typelib). KDE no importa nada por gjs: enlaza libpolkit-gobject-1 y libpolkit-agent-1 # desde C++ y el typelib le sobra — traerlo obligaría a meter gobject-introspection entero en la cola. # # ⚠ HOMÓNIMA A PROPÓSITO. El artefacto se llama `polkit` igual que el de incoming-gnome, así que en el # store conviven dos `-polkit` con contenido distinto. Es el mismo patrón deliberado que ya # tienen `dbus` (incoming-kde vs raíz) y `gmp` (incoming-kde vs incoming-cosmic), y tiene el mismo # coste conocido: `store-gc` no puede decidir por NOMBRE cuál de los dos sellados es el vigente, sólo # por hash. No renombrarla a `polkit-kde` es deliberado: el `.pc` que busca polkit-qt-1 es # `polkit-gobject-1`, no el nombre del paquete, y renombrar sólo movería el problema al lector. # # ── LO QUE ESTA RECETA NO TRAE, Y NO ES UN OLVIDO ────────────────────────────────────────────── # `-Dlibs-only=true` deja fuera polkitd, y ahí la opción recorta de verdad: el bloque `if not # libs_only` del meson.build es justo el que pide expat y duktape (el motor JS de las reglas). # El demonio lo pone arje: `recipes/arje-polkit-compat.toml` implementa # `org.freedesktop.PolicyKit1` sobre el bus. Meter polkitd encima sería competirle, no completarlo. # ⚠ Y con ello viaja la postura de seguridad que ese shim declara: responde `is_authorized = true` a # TODO. Quien enlace estas librerías en esta distro está autorizado. Está escrito allá; lo repito acá # porque esta receta es la que pone las librerías en manos del escritorio. # # `-Dsession_tracking=ConsoleKit` NO es una preferencia por ConsoleKit: es la única de las tres # opciones que no exige una C-ABI de logind (`logind` pide libsystemd, `elogind` pide libelogind). # Con libs-only ese camino queda inerte —el seguimiento de sesión lo hace polkitd, que no # construimos—, así que la opción sólo sirve para que meson no salga a buscar una lib que no existe. 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" flags = [] [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=false -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 = ''' set -e PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild # Verificación por CONTENIDO: lo que polkit-qt-1 busca son estos dos `.pc` y sus `.so` versionados. # Un polkit sin libpolkit-agent-1 instala, pesa y deja el fallo para el dependiente. test -s /out/usr/lib/pkgconfig/polkit-gobject-1.pc test -s /out/usr/lib/pkgconfig/polkit-agent-1.pc test -f /out/usr/lib/libpolkit-gobject-1.so.0 test -f /out/usr/lib/libpolkit-agent-1.so.0 ''' # glib-shared / pcre2-shared / zlib-shared: las variantes DINÁMICAS de la cola KDE. El glib canónico # es sólo `.a` sin PIC ⇒ no entra en un `.so`. Es la deuda Capa 0 que `glib-shared` existe para saldar # —y su propio encabezado ya nombraba a polkit como uno de los motivos por los que se escribió. [deps] build = ["meson", "samurai", "python3", "pkgconf", "gettext-tiny", "dbus", "glib-shared", "pcre2-shared", "zlib-shared", "libffi"]