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>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
2 archivos · +91 −19
diff --git a/docs/state/build-state-gnome.json b/docs/state/build-state-gnome.json
index 4d819be5..16989aa3 100644
--- a/docs/state/build-state-gnome.json
+++ b/docs/state/build-state-gnome.json
@@ -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",
diff --git a/recipes/incoming-gnome/polkit.toml b/recipes/incoming-gnome/polkit.toml
new file mode 100644
index 00000000..ed089e47
--- /dev/null
+++ b/recipes/incoming-gnome/polkit.toml
@@ -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"]