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 /
68 lines
4.5 KiB
TOML
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"]
|