gnome onda 3: gcr SELLADO (b3:698096b0) + p11-kit + las variantes shared de libgcrypt/libgpg-error
Tercera de la cima. gnome-shell la exige por gcr-4 (meson.build:74) y su JS importa gi://Gcr
(js/ui/components/keyring.js) ⇒ tenía que ser .so con typelib, no había opción estática.
Cadena nueva: p11-kit (b3:8dbec390) → gcr. p11-kit va con -Dtrust_module=disabled, que es lo
único que arrastraba libtasn1: una receta menos.
EL NUDO REAL fue el PIC, otra vez. libgcrypt y libgpg-error del corpus son estáticas SIN PIC
(y libgcrypt además está afinada para binarios -all-static -no-pie, con la advertencia escrita
de que el flag va en compile e install pero nunca en configure). Meterlas en un .so da
«relocation R_X86_64_32 ... recompile with -fPIC».
NO se tocaron las canónicas: `yupana radio` dio 5 sellados cayendo a deuda en base/cli, y
mostró además que existe OTRA libgpg-error en incoming-kde con 39 dependientes — justo el
tipo de colisión que el radio existe para ver. Se hicieron variantes -shared en la cola, que
es el idioma que este frente ya tiene (zlib-shared, cairo-shared, freetype-shared…).
libgcrypt-shared compiló con ZIG-CC, no gcc como la canónica: evidencia de que esa receta puede
migrar cuando le toque el turno de matar-gcc. Necesitó -fno-sanitize=undefined (el runtime UBSan
que inyecta zig deja __ubsan_handle_* sin definir en el .so), remedio ya documentado en zlib-shared.
Otros dos apagados de gcr, cada uno ahorrando una receta: -Dssh_agent=false (libsecret sólo la
pide el agente ssh) y -Dgpg_path fijo (gcr sólo quiere la RUTA de gpg para hornearla, no ejecuta
nada). Y el sed de subdir('po'): el msgfmt de gettext-tiny ABORTA con SIGABRT en po/ar.po. Es la
segunda vez que ese msgfmt marca el límite; si hay una tercera, conviene autorar el gettext de GNU.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"schema": "hammer-build-state/1",
|
||||
"totals": {
|
||||
"recipes": 808,
|
||||
"nodes": 808,
|
||||
"sealed": 798,
|
||||
"recipes": 812,
|
||||
"nodes": 812,
|
||||
"sealed": 802,
|
||||
"never": 8,
|
||||
"debt": 2
|
||||
},
|
||||
"by_class": {
|
||||
"c": 174,
|
||||
"c": 178,
|
||||
"go": 362,
|
||||
"gui": 40,
|
||||
"kernel": 6,
|
||||
@@ -26,7 +26,7 @@
|
||||
"debt": 2
|
||||
},
|
||||
"incoming-gnome": {
|
||||
"sealed": 40,
|
||||
"sealed": 44,
|
||||
"never": 6
|
||||
}
|
||||
},
|
||||
@@ -54,7 +54,7 @@
|
||||
"debt": 2
|
||||
}
|
||||
},
|
||||
"sin_perfil": 649,
|
||||
"sin_perfil": 653,
|
||||
"orphan_deps": [],
|
||||
"topo_ok": true,
|
||||
"nodes": {
|
||||
@@ -4128,6 +4128,38 @@
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"gcr": {
|
||||
"iname": "gcr",
|
||||
"version": "4.4.0.1",
|
||||
"link": "dynamic",
|
||||
"compiler": "zig-cc",
|
||||
"deps": [
|
||||
"meson",
|
||||
"samurai",
|
||||
"python3",
|
||||
"pkgconf",
|
||||
"gettext-tiny",
|
||||
"py3-setuptools",
|
||||
"gi-foreign-girs",
|
||||
"gobject-introspection",
|
||||
"glib",
|
||||
"glib-introspected",
|
||||
"p11-kit",
|
||||
"libgcrypt-shared",
|
||||
"libgpg-error-shared",
|
||||
"libffi",
|
||||
"pcre2",
|
||||
"zlib"
|
||||
],
|
||||
"cls": "c",
|
||||
"queue": "incoming-gnome",
|
||||
"hash": "b3:698096b035c82ad5facb2b705aedb9a2b70ff78c9baef1c19522a5e6efef8bee",
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"gdk-pixbuf": {
|
||||
"iname": "gdk-pixbuf",
|
||||
"version": "2.44.6",
|
||||
@@ -4238,7 +4270,7 @@
|
||||
"escritorio-gnome",
|
||||
"escritorio-kde"
|
||||
],
|
||||
"dependientes_total": 82
|
||||
"dependientes_total": 83
|
||||
},
|
||||
"gh": {
|
||||
"iname": "gh",
|
||||
@@ -4323,7 +4355,7 @@
|
||||
"perfiles": [
|
||||
"escritorio-gnome"
|
||||
],
|
||||
"dependientes_total": 4
|
||||
"dependientes_total": 5
|
||||
},
|
||||
"giflib": {
|
||||
"iname": "giflib",
|
||||
@@ -4725,7 +4757,7 @@
|
||||
"perfiles": [
|
||||
"escritorio-gnome"
|
||||
],
|
||||
"dependientes_total": 24
|
||||
"dependientes_total": 25
|
||||
},
|
||||
"glib-introspected": {
|
||||
"iname": "glib-introspected",
|
||||
@@ -4753,7 +4785,7 @@
|
||||
"perfiles": [
|
||||
"escritorio-gnome"
|
||||
],
|
||||
"dependientes_total": 8
|
||||
"dependientes_total": 9
|
||||
},
|
||||
"glow": {
|
||||
"iname": "glow",
|
||||
@@ -5163,7 +5195,7 @@
|
||||
"perfiles": [
|
||||
"escritorio-gnome"
|
||||
],
|
||||
"dependientes_total": 13
|
||||
"dependientes_total": 14
|
||||
},
|
||||
"gobuster": {
|
||||
"iname": "gobuster",
|
||||
@@ -8249,7 +8281,7 @@
|
||||
"escritorio-kde",
|
||||
"escritorio-mirada"
|
||||
],
|
||||
"dependientes_total": 73
|
||||
"dependientes_total": 75
|
||||
},
|
||||
"libgcrypt": {
|
||||
"iname": "libgcrypt",
|
||||
@@ -8272,6 +8304,24 @@
|
||||
],
|
||||
"dependientes_total": 1
|
||||
},
|
||||
"libgcrypt-shared": {
|
||||
"iname": "libgcrypt-shared",
|
||||
"version": "1.12.2",
|
||||
"link": "dynamic",
|
||||
"compiler": "zig-cc",
|
||||
"deps": [
|
||||
"make",
|
||||
"libgpg-error-shared"
|
||||
],
|
||||
"cls": "c",
|
||||
"queue": "incoming-gnome",
|
||||
"hash": "b3:0219f2ee56ba8c2192ec4fd0a2884e26ce86eca097d7987e77235d8d8e0131ac",
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 1
|
||||
},
|
||||
"libgpg-error": {
|
||||
"iname": "libgpg-error",
|
||||
"version": "1.61",
|
||||
@@ -8292,6 +8342,23 @@
|
||||
],
|
||||
"dependientes_total": 4
|
||||
},
|
||||
"libgpg-error-shared": {
|
||||
"iname": "libgpg-error-shared",
|
||||
"version": "1.61",
|
||||
"link": "dynamic",
|
||||
"compiler": "zig-cc",
|
||||
"deps": [
|
||||
"make"
|
||||
],
|
||||
"cls": "c",
|
||||
"queue": "incoming-gnome",
|
||||
"hash": "b3:e0a7d62ecd6aa7447f09ebc5794bce4ff0591434dc5d92bde52f5c06d6636a70",
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 2
|
||||
},
|
||||
"libgudev": {
|
||||
"iname": "libgudev",
|
||||
"version": "238",
|
||||
@@ -9085,7 +9152,7 @@
|
||||
"escritorio-kde",
|
||||
"escritorio-mirada"
|
||||
],
|
||||
"dependientes_total": 88
|
||||
"dependientes_total": 90
|
||||
},
|
||||
"mako": {
|
||||
"iname": "mako",
|
||||
@@ -9443,7 +9510,7 @@
|
||||
"escritorio-kde",
|
||||
"escritorio-mirada"
|
||||
],
|
||||
"dependientes_total": 86
|
||||
"dependientes_total": 88
|
||||
},
|
||||
"micro": {
|
||||
"iname": "micro",
|
||||
@@ -10556,6 +10623,27 @@
|
||||
"perfiles": [],
|
||||
"dependientes_total": 0
|
||||
},
|
||||
"p11-kit": {
|
||||
"iname": "p11-kit",
|
||||
"version": "0.26.4",
|
||||
"link": "dynamic",
|
||||
"compiler": "zig-cc",
|
||||
"deps": [
|
||||
"meson",
|
||||
"samurai",
|
||||
"python3",
|
||||
"pkgconf",
|
||||
"libffi"
|
||||
],
|
||||
"cls": "c",
|
||||
"queue": "incoming-gnome",
|
||||
"hash": "b3:8dbec39048f0cf52019e804bbc587e410051a21cb88bdd0ea078dbf98445991e",
|
||||
"state": "sealed",
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [],
|
||||
"dependientes_total": 1
|
||||
},
|
||||
"packaging": {
|
||||
"iname": "packaging",
|
||||
"version": "26.2",
|
||||
@@ -10740,7 +10828,7 @@
|
||||
"escritorio-gnome",
|
||||
"escritorio-kde"
|
||||
],
|
||||
"dependientes_total": 59
|
||||
"dependientes_total": 60
|
||||
},
|
||||
"peco": {
|
||||
"iname": "peco",
|
||||
@@ -10923,7 +11011,7 @@
|
||||
"escritorio-kde",
|
||||
"escritorio-mirada"
|
||||
],
|
||||
"dependientes_total": 301
|
||||
"dependientes_total": 303
|
||||
},
|
||||
"plow": {
|
||||
"iname": "plow",
|
||||
@@ -11275,7 +11363,7 @@
|
||||
"perfiles": [
|
||||
"escritorio-gnome"
|
||||
],
|
||||
"dependientes_total": 10
|
||||
"dependientes_total": 11
|
||||
},
|
||||
"python3": {
|
||||
"iname": "python3",
|
||||
@@ -11299,7 +11387,7 @@
|
||||
"escritorio-kde",
|
||||
"escritorio-mirada"
|
||||
],
|
||||
"dependientes_total": 244
|
||||
"dependientes_total": 246
|
||||
},
|
||||
"qrcp": {
|
||||
"iname": "qrcp",
|
||||
@@ -11845,7 +11933,7 @@
|
||||
"escritorio-kde",
|
||||
"escritorio-mirada"
|
||||
],
|
||||
"dependientes_total": 218
|
||||
"dependientes_total": 220
|
||||
},
|
||||
"sassc": {
|
||||
"iname": "sassc",
|
||||
@@ -14602,7 +14690,7 @@
|
||||
"escritorio-kde",
|
||||
"escritorio-mirada"
|
||||
],
|
||||
"dependientes_total": 97
|
||||
"dependientes_total": 98
|
||||
},
|
||||
"zlib-ng": {
|
||||
"iname": "zlib-ng",
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# gcr 4.4.0.1 — criptografía y almacén de claves para el escritorio (parseo de certificados, prompts
|
||||
# de contraseña, agente ssh). gnome-shell la exige por `gcr-4` (meson.build:74).
|
||||
#
|
||||
# Feature-minimal, y cada apagado se paga en recetas que NO hay que autorar:
|
||||
# -Dssh_agent=false → libsecret sólo es requerida por el agente ssh (meson.build:96). Sin él,
|
||||
# libsecret deja de ser frontera. El shell usa gcr para prompts, no como
|
||||
# agente ssh (eso lo hace gnome-keyring, que no está en esta campaña).
|
||||
# -Dsystemd=disabled → libsystemd es `required: get_option('systemd')` (:104), o sea que acá SÍ
|
||||
# hay perilla. Es la tercera vez que aparece la C-ABI de logind en este
|
||||
# frente y la tercera que se esquiva; mutter sigue siendo la única sin salida.
|
||||
# -Dgtk4=false → la UI de prompts es opcional; `gcr-4` (lo que el shell enlaza) es la lib base.
|
||||
# -Dcrypto=libgcrypt -Dgpg_path=/usr/bin/gpg → de las dos opciones (libgcrypt/gnutls), libgcrypt YA está en el corpus y
|
||||
# sellada, con su libgpg-error. gnutls no existe acá.
|
||||
#
|
||||
# -Dgpg_path=… → gcr sólo quiere la RUTA del binario gpg para hornearla en el código
|
||||
# (meson.build:63-66: si la opción está vacía, hace find_program). No compila
|
||||
# ni ejecuta nada de gnupg, así que fijar la ruta evita meter gnupg entero al
|
||||
# sandbox por un string. La ruta es la del futuro artefacto, no la del host.
|
||||
#
|
||||
# El sed saca `subdir('po')` (:153). NO es capricho: el msgfmt de gettext-tiny —lo único que hay en
|
||||
# el corpus— ABORTA con SIGABRT en po/ar.po (src/msgfmt.c:183). Es la segunda vez que ese msgfmt
|
||||
# marca el límite (en iso-codes lo esquivé de antemano); si aparece una tercera, conviene autorar el
|
||||
# gettext de GNU de verdad en vez de seguir apagando traducciones receta por receta. Lo que se pierde
|
||||
# son los textos traducidos de los prompts de contraseña; la librería que enlaza el shell es la misma.
|
||||
#
|
||||
#: libgcrypt en el corpus es SÓLO estática, y su libgcrypt.pc pone
|
||||
# gpg-error en `Requires.private`, que pkg-config expande únicamente con --static. Al enlazar el .a
|
||||
# dentro de un .so ese cierre se pierde y el linker corta con `undefined symbol:
|
||||
# gpg_err_code_to_errno` (referenciado desde libgcrypt.a). Se agrega a mano en vez de tocar
|
||||
# libgcrypt.toml: re-hashearla arrastraría a todo lo que ya la tiene sellada.
|
||||
#
|
||||
# p11-kit es la única frontera que gcr abrió, y se cerró con -Dtrust_module=disabled del lado de ella.
|
||||
# ISLA DINÁMICA: produce .so con GObject ⇒ glib dinámica, un registro de GType.
|
||||
name = "gcr"
|
||||
version = "4.4.0.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://download.gnome.org/sources/gcr/4.4/gcr-4.4.0.1.tar.xz"
|
||||
sha256 = "0c3c341e49f9f4f2532a4884509804190a0c2663e6120360bb298c5d174a8098"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
|
||||
[build.phases]
|
||||
configure = "sed -i \"/^subdir('po')$/d\" meson.build && 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 -Dgtk4=false -Dssh_agent=false -Dsystemd=disabled -Dcrypto=libgcrypt -Dgpg_path=/usr/bin/gpg -Dintrospection=true -Dvapi=false -Dgtk_doc=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", "gi-foreign-girs", "gobject-introspection", "glib", "glib-introspected", "p11-kit", "libgcrypt-shared", "libgpg-error-shared", "libffi", "pcre2", "zlib"]
|
||||
@@ -0,0 +1,33 @@
|
||||
# libgcrypt-shared 1.12.2 — variante DINÁMICA de libgcrypt para el escritorio GNOME.
|
||||
#
|
||||
# La pide gcr (-Dcrypto=libgcrypt), que es un .so; la canónica (recipes/libgcrypt.toml) es estática
|
||||
# sin PIC y no entra en una librería compartida. Ver libgpg-error-shared.toml para el razonamiento
|
||||
# completo de por qué se hace variante en vez de tocar la canónica (radio medido, ajuste fino
|
||||
# documentado en la receta original).
|
||||
#
|
||||
# -fno-sanitize=undefined: zig cc inyecta el runtime UBSan y el .so queda con referencias a
|
||||
# __ubsan_handle_* que nadie define, que `--no-allow-shlib-undefined` rechaza. Es exactamente lo que
|
||||
# zlib-shared ya tenía documentado para este mismo frente.
|
||||
#
|
||||
# compiler = zig-cc, NO gcc: la canónica sigue en gcc y es una de las 16 que quedan en la lista de
|
||||
# matar-gcc. Esta variante nace ya del lado correcto — si compila bien acá, es evidencia de que la
|
||||
# canónica también puede migrar cuando le toque.
|
||||
name = "libgcrypt-shared"
|
||||
version = "1.12.2"
|
||||
|
||||
[source]
|
||||
tarball = "https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.12.2.tar.bz2"
|
||||
sha256 = "7ce33c2492221a0436f96a8500215e9f3e3dcb5fd26a757cd415e7a843babd5e"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
|
||||
[build.phases]
|
||||
configure = 'CFLAGS="-O2 -fPIC -fno-sanitize=undefined" ./configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --with-pic --with-libgpg-error-prefix=/usr --disable-doc'
|
||||
compile = 'make -j"$(nproc)"'
|
||||
install = 'make DESTDIR=/out install'
|
||||
|
||||
[deps]
|
||||
build = ["make", "libgpg-error-shared"]
|
||||
@@ -0,0 +1,33 @@
|
||||
# libgpg-error-shared 1.61 — variante DINÁMICA de libgpg-error para el escritorio GNOME.
|
||||
#
|
||||
# Mismo patrón y misma razón que zlib-shared / cairo-shared / freetype-shared de este frente: la
|
||||
# canónica (recipes/libgpg-error.toml) es `--disable-shared` y además está afinada para que sus
|
||||
# binarios salgan 100% estáticos (`-all-static -no-pie`). Sus objetos NO son PIC, así que al meter
|
||||
# libgpg-error.a dentro de un .so el linker corta con «relocation R_X86_64_32 ... recompile with
|
||||
# -fPIC» (medido al construir gcr).
|
||||
#
|
||||
# POR QUÉ NO SE ARREGLA LA CANÓNICA: `yupana radio libgpg-error` da 5 sellados que caerían a deuda
|
||||
# en las imágenes base y cli, y esa receta tiene un ajuste fino documentado (el `-all-static` va en
|
||||
# compile Y en install, nunca en configure) que no conviene mover por una necesidad del escritorio.
|
||||
# La regla del frente es clara: variante `-shared` en la cola, canónica intacta.
|
||||
# (Ojo: yupana muestra que existe TAMBIÉN una libgpg-error en incoming-kde con 39 dependientes.
|
||||
# Ésta no la toca ninguna de las dos.)
|
||||
name = "libgpg-error-shared"
|
||||
version = "1.61"
|
||||
|
||||
[source]
|
||||
tarball = "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.61.tar.bz2"
|
||||
sha256 = "7a85413f2bc354f4f8aa832b718af122e48965e9e0eb9012ee659c13c6385c93"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
|
||||
[build.phases]
|
||||
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --with-pic --disable-doc --disable-tests --enable-install-gpg-error-config'
|
||||
compile = 'make -j"$(nproc)"'
|
||||
install = 'make DESTDIR=/out install'
|
||||
|
||||
[deps]
|
||||
build = ["make"]
|
||||
@@ -0,0 +1,32 @@
|
||||
# p11-kit 0.26.4 — capa común de PKCS#11: carga y comparte módulos criptográficos entre procesos.
|
||||
# Entra por gcr, que la exige sin perilla (gcr-4.4.0.1/meson.build:91), y gcr entra por gnome-shell.
|
||||
#
|
||||
# -Dtrust_module=disabled: el módulo de confianza (el que expone el almacén de CAs del sistema como
|
||||
# un token PKCS#11) es lo ÚNICO que arrastra libtasn1, que no está en el corpus. gcr no lo usa: le
|
||||
# alcanza con la carga de módulos. Ahorra una receta entera; si algún día hace falta el almacén de
|
||||
# CAs por PKCS#11, vuelve junto con libtasn1.
|
||||
#
|
||||
# systemd=disabled (arje-zero es PID1). Completions de shell fuera: son datos de un shell que esta
|
||||
# imagen no fija.
|
||||
#
|
||||
# Dinámica por diseño, no por la regla de GType: p11-kit ES un dlopen()-eador de módulos; su razón de
|
||||
# ser es el enlace tardío.
|
||||
name = "p11-kit"
|
||||
version = "0.26.4"
|
||||
|
||||
[source]
|
||||
tarball = "https://github.com/p11-glue/p11-kit/releases/download/0.26.4/p11-kit-0.26.4.tar.xz"
|
||||
sha256 = "89c3ffb10e076ee036e14732bf6547a1e1c4fb48699a5dee7ceb5ce4f7c0c462"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
|
||||
[build.phases]
|
||||
configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload -Ddefault_library=shared -Dtrust_module=disabled -Dsystemd=disabled -Dbash_completion=disabled -Dzsh_completion=disabled -Dlibffi=enabled -Dc_args=-Wno-error=date-time"
|
||||
compile = "ninja -C output"
|
||||
install = "DESTDIR=/out ninja -C output install"
|
||||
|
||||
[deps]
|
||||
build = ["meson", "samurai", "python3", "pkgconf", "libffi"]
|
||||
Reference in New Issue
Block a user