gnome onda 3: polkit SELLADO (b3:27d93b4c) — sólo librerías, el demonio ya lo pone arje

Primera de la cima. Da polkit-agent-1.pc (lo que gnome-shell enlaza en C) y los typelibs
Polkit-1.0 + PolkitAgent-1.0 (lo que su JS importa: gi://Polkit aparece en polkitAgent.js,
endSessionDialog.js, status/thunderbolt.js y environment.js — verificado, no supuesto).

-Dlibs-only=true y acá la opción SÍ recorta, al revés que en colord: el bloque `if not
libs_only` (:145-159) es justo el que pide expat, duktape y threads. Y no es un recorte a
desgana — la Semilla de arje ya trae compat-polkit implementando el servicio D-Bus; construir
polkitd sería competirle, no completarlo.

-Dsession_tracking=ConsoleKit no es preferencia por ConsoleKit: es la ÚNICA de las tres que no
exige una C-ABI de logind (logind→libsystemd, elogind→libelogind), 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. Cuando exista el shim, vuelve a `logind`.

-Dauthfw=shadow (no hay linux-pam). Isla dinámica, como manda la regla del registro único de
GType. Las 3 deps de tooling que faltaban salieron de precedentes ya escritos del frente:
gettext-tiny (msgfmt), py3-setuptools (distutils de g-ir-scanner) y glib-introspected
(Gio-2.0.gir para el scanner).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-28 06:36:01 -04:00
co-authored by Claude Opus 5
parent 43ec9a6933
commit 7de2ebd030
2 changed files with 91 additions and 19 deletions
+48 -19
View File
@@ -1,14 +1,14 @@
{
"schema": "hammer-build-state/1",
"totals": {
"recipes": 807,
"nodes": 807,
"sealed": 797,
"recipes": 808,
"nodes": 808,
"sealed": 798,
"never": 8,
"debt": 2
},
"by_class": {
"c": 173,
"c": 174,
"go": 362,
"gui": 40,
"kernel": 6,
@@ -26,7 +26,7 @@
"debt": 2
},
"incoming-gnome": {
"sealed": 39,
"sealed": 40,
"never": 6
}
},
@@ -54,7 +54,7 @@
"debt": 2
}
},
"sin_perfil": 648,
"sin_perfil": 649,
"orphan_deps": [],
"topo_ok": true,
"nodes": {
@@ -2754,7 +2754,7 @@
"base",
"cli"
],
"dependientes_total": 0
"dependientes_total": 1
},
"ddh": {
"iname": "ddh",
@@ -4230,7 +4230,7 @@
"escritorio-gnome",
"escritorio-kde"
],
"dependientes_total": 80
"dependientes_total": 81
},
"gh": {
"iname": "gh",
@@ -4717,7 +4717,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 23
"dependientes_total": 24
},
"glib-introspected": {
"iname": "glib-introspected",
@@ -4745,7 +4745,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 6
"dependientes_total": 7
},
"glow": {
"iname": "glow",
@@ -5155,7 +5155,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 11
"dependientes_total": 12
},
"gobuster": {
"iname": "gobuster",
@@ -8241,7 +8241,7 @@
"escritorio-kde",
"escritorio-mirada"
],
"dependientes_total": 72
"dependientes_total": 73
},
"libgcrypt": {
"iname": "libgcrypt",
@@ -9435,7 +9435,7 @@
"escritorio-kde",
"escritorio-mirada"
],
"dependientes_total": 85
"dependientes_total": 86
},
"micro": {
"iname": "micro",
@@ -10732,7 +10732,7 @@
"escritorio-gnome",
"escritorio-kde"
],
"dependientes_total": 58
"dependientes_total": 59
},
"peco": {
"iname": "peco",
@@ -10915,7 +10915,7 @@
"escritorio-kde",
"escritorio-mirada"
],
"dependientes_total": 300
"dependientes_total": 301
},
"plow": {
"iname": "plow",
@@ -10983,6 +10983,35 @@
"perfiles": [],
"dependientes_total": 0
},
"polkit": {
"iname": "polkit",
"version": "127",
"link": "dynamic",
"compiler": "zig-cc",
"deps": [
"meson",
"samurai",
"python3",
"pkgconf",
"gettext-tiny",
"py3-setuptools",
"gobject-introspection",
"glib",
"glib-introspected",
"dbus",
"libffi",
"pcre2",
"zlib"
],
"cls": "c",
"queue": "incoming-gnome",
"hash": "b3:27d93b4c927b99c8afa6b06691ef01f879bb88cd64c95affeaeeb091f65e2050",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
"perfiles": [],
"dependientes_total": 0
},
"pop": {
"iname": "pop",
"version": "0.2.1",
@@ -11238,7 +11267,7 @@
"perfiles": [
"escritorio-gnome"
],
"dependientes_total": 8
"dependientes_total": 9
},
"python3": {
"iname": "python3",
@@ -11262,7 +11291,7 @@
"escritorio-kde",
"escritorio-mirada"
],
"dependientes_total": 243
"dependientes_total": 244
},
"qrcp": {
"iname": "qrcp",
@@ -11808,7 +11837,7 @@
"escritorio-kde",
"escritorio-mirada"
],
"dependientes_total": 217
"dependientes_total": 218
},
"sassc": {
"iname": "sassc",
@@ -14565,7 +14594,7 @@
"escritorio-kde",
"escritorio-mirada"
],
"dependientes_total": 96
"dependientes_total": 97
},
"zlib-ng": {
"iname": "zlib-ng",
+43
View File
@@ -0,0 +1,43 @@
# 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"
[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"]