Files
takana/recipes/incoming-kde/polkit.toml
T
Sergio e852f48491 takana etapa 5a: los comentarios de las 741 recetas
Barrido de TEXTO puro: 1427 líneas de comentario TOML. Cero ArtifactHash
movidos, y eso está MEDIDO, no deducido: hasheé las 741 antes y después y los
ficheros de hashes son idénticos byte a byte (723 con hash real + 18 que ya no
hasheaban de antes).

El guardián valió la pena: el primer barrido, filtrando por 'la línea empieza
con #', movió el hash de helix, lsof y steam-runtime-sniper. La causa es que una
fase se escribe como compile = <triple> ... <triple> y sus comentarios de SHELL
también empiezan con #, pero viven dentro del VALOR — y las fases sí entran en
hash_inputs. El barrido ahora calcula los rangos de las cadenas multilínea de
TOML y no entra ahí.

Quedan intactos a propósito: .hammer-zig-cc y .hammer-cargo-vendor (literales
dentro de fases), hammerd, hammer-recover y toda ruta que empiece por /
2026-09-09 19:23:26 +00:00

68 lines
4.5 KiB
TOML

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