gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

⎇ main recipes/incoming-kde/polkit.toml TOML · 67 líneas · 4.5 KB Historia crudo

takana etapa 5a: los comentarios de las 741 recetas e852f4849 · Sergio ·

1# polkit 127 — variante incoming-kde: SÓLO las librerías, SIN introspección.
2#
3# ── POR QUÉ UNA SEGUNDA RECETA Y NO REUSAR recipes/incoming-gnome/polkit.toml ───────────────────
4# Porque no se puede: takana resuelve las deps hermano→padre (la cola propia, después `recipes/`) y
5# NUNCA cruza a una cola hermana. Desde incoming-kde, la de incoming-gnome es invisible. Y aunque se
6# pudiera, no serviría tal cual: aquella se construye con `-Dintrospection=true` contra
7# `glib-introspected`, que es la ISLA DINÁMICA del shell de GNOME (gjs importa `gi://Polkit` y por eso
8# necesita el typelib). KDE no importa nada por gjs: enlaza libpolkit-gobject-1 y libpolkit-agent-1
9# desde C++ y el typelib le sobra — traerlo obligaría a meter gobject-introspection entero en la cola.
10#
11# ⚠ HOMÓNIMA A PROPÓSITO. El artefacto se llama `polkit` igual que el de incoming-gnome, así que en el
12# store conviven dos `<hash>-polkit` con contenido distinto. Es el mismo patrón deliberado que ya
13# tienen `dbus` (incoming-kde vs raíz) y `gmp` (incoming-kde vs incoming-cosmic), y tiene el mismo
14# coste conocido: `store-gc` no puede decidir por NOMBRE cuál de los dos sellados es el vigente, sólo
15# por hash. No renombrarla a `polkit-kde` es deliberado: el `.pc` que busca polkit-qt-1 es
16# `polkit-gobject-1`, no el nombre del paquete, y renombrar sólo movería el problema al lector.
17#
18# ── LO QUE ESTA RECETA NO TRAE, Y NO ES UN OLVIDO ──────────────────────────────────────────────
19# `-Dlibs-only=true` deja fuera polkitd, y ahí la opción recorta de verdad: el bloque `if not
20# libs_only` del meson.build es justo el que pide expat y duktape (el motor JS de las reglas).
21# El demonio lo pone arje: `recipes/arje-polkit-compat.toml` implementa
22# `org.freedesktop.PolicyKit1` sobre el bus. Meter polkitd encima sería competirle, no completarlo.
23# ⚠ Y con ello viaja la postura de seguridad que ese shim declara: responde `is_authorized = true` a
24# TODO. Quien enlace estas librerías en esta distro está autorizado. Está escrito allá; lo repito acá
25# porque esta receta es la que pone las librerías en manos del escritorio.
26#
27# `-Dsession_tracking=ConsoleKit` NO es una preferencia por ConsoleKit: es la única de las tres
28# opciones que no exige una C-ABI de logind (`logind` pide libsystemd, `elogind` pide libelogind).
29# Con libs-only ese camino queda inerte —el seguimiento de sesión lo hace polkitd, que no
30# construimos—, así que la opción sólo sirve para que meson no salga a buscar una lib que no existe.
31name    = "polkit"
32version = "127"
33license = "LGPL-2.0-or-later"
34
35[source]
36# El .orig.tar.gz inmutable del pool de Debian. El proyecto se mudó a github.com/polkit-org/polkit y
37# sus `archive/refs/tags/*.tar.gz` son autogenerados ⇒ no deterministas (lección de cairo/iso-codes).
38tarball = "http://deb.debian.org/debian/pool/main/p/policykit-1/policykit-1_127.orig.tar.gz"
39sha256  = "9b7bc16f086479dcc626c575976568ba4a85d34297a750d8ab3d2e57f6d8b988"
40
41[build]
42compiler = "zig-cc"
43target   = "x86_64-linux-musl"
44link     = "dynamic"
45flags    = []
46
47[build.phases]
48configure = "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"
49compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
50install   = '''
51set -e
52PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild
53
54# Verificación por CONTENIDO: lo que polkit-qt-1 busca son estos dos `.pc` y sus `.so` versionados.
55# Un polkit sin libpolkit-agent-1 instala, pesa y deja el fallo para el dependiente.
56test -s /out/usr/lib/pkgconfig/polkit-gobject-1.pc
57test -s /out/usr/lib/pkgconfig/polkit-agent-1.pc
58test -f /out/usr/lib/libpolkit-gobject-1.so.0
59test -f /out/usr/lib/libpolkit-agent-1.so.0
60'''
61
62# glib-shared / pcre2-shared / zlib-shared: las variantes DINÁMICAS de la cola KDE. El glib canónico
63# es sólo `.a` sin PIC ⇒ no entra en un `.so`. Es la deuda Capa 0 que `glib-shared` existe para saldar
64# —y su propio encabezado ya nombraba a polkit como uno de los motivos por los que se escribió.
65[deps]
66build = ["meson", "samurai", "python3", "pkgconf", "gettext-tiny", "dbus",
67  "glib-shared", "pcre2-shared", "zlib-shared", "libffi"]