Files
hammer/recipes/incoming-gnome/libuuid-shared.toml
T
sergioandClaude Opus 5 fd73295c94 gnome onda 3: las tres piezas de soporte de eds — libsecret, libxml2-shared, libuuid-shared
Leído el CMakeLists real de evolution-data-server 3.56.2, la frontera de la cima
son cuatro cosas, no una. Estas son tres; la cuarta (NSS) va aparte.

  libsecret 0.21.7  b3:b75607c6  CMakeLists:932 la mete en el pkg_check_modules
        (DATA_SERVER REQUIRED …) sin perilla, y libedataserver-1.2 es lo que
        gnome-shell enlaza. En gcr se la había esquivado con -Dssh_agent=false;
        acá no hay cómo: eds guarda ahí las credenciales de correo y calendario.
        -Dcrypto=libgcrypt de las tres del combo — gnutls no existe en el corpus
        y 'disabled' apagaría el cifrado justo en la pieza que guarda contraseñas.

  libxml2-shared    b3:87389636  en libical la libxml2 sólo la enlazaba un binario
        de build y bastó la .a canónica; en eds entra en cuatro .so reales
        (CMakeLists:932,936,937,938) y la .a no es PIC. Mismos patches de CVE que
        la canónica: la superficie de seguridad no diverge.

  libuuid-shared    b3:d42cf850  `uuid` es REQUERIDA (:424). No es un
        "util-linux-shared": --disable-all-programs apaga los ~100 binarios y deja
        una sola librería. Duplicar la lista de --without-* del canónico para
        conseguir un .so de 30 KB sería mantener esa superficie en dos lugares.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 20:04:14 -04:00

52 lines
2.1 KiB
TOML

# libuuid-shared 2.42.2 — SÓLO libuuid.so del tarball de util-linux, para la isla dinámica.
#
# evolution-data-server pide `uuid` como REQUERIDA (CMakeLists.txt:424) para generar los UID de
# contactos y eventos. El util-linux canónico la provee, pero es `--disable-shared --enable-static`
# y su libuuid.a no es PIC (verificado) ⇒ no entra en libedataserver.so.
#
# La variante NO reconstruye util-linux entero: --disable-all-programs apaga los ~100 binarios
# (mount, fdisk, lsblk…) y --enable-libuuid deja exactamente una librería. Es deliberado que esta
# receta sea angosta y no un "util-linux-shared": el canónico tiene un radio grande y una lista
# larga de --without-* elegidos para el userland estático; duplicar todo eso para conseguir un .so
# de 30 KB sería copiar una superficie que después hay que mantener en dos lugares.
#
# El sed de -mcpu=baseline se conserva del canónico: zig cc traduce ese flag a un `-mcpu=` VACÍO en
# modo preprocesador (`-dM -E -`) y los generadores errnos.h/syscalls.h lo invocan así.
name = "libuuid-shared"
version = "2.42.2"
[source]
tarball = "https://www.kernel.org/pub/linux/utils/util-linux/v2.42/util-linux-2.42.2.tar.xz"
sha256 = "03a05d3adf9602ef128f2da05b84b3205ce60c351e5737c0370f74000679ce8a"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = '''
./configure \
--build=$CBUILD --host=$CHOST \
--prefix=/usr \
--enable-shared --disable-static \
--disable-all-programs \
--enable-libuuid \
--disable-nls --disable-rpath \
--without-python --without-systemd --without-systemdsystemunitdir \
--without-udev --without-ncursesw --without-ncurses --without-tinfo \
--without-readline --without-libz --without-selinux --without-audit --without-econf
'''
compile = '''
for f in tools/all_errnos tools/all_syscalls; do
[ -f "$f" ] || continue
sed -i 's#^"$@" -MD#a=(); for x in "$@"; do [ "$x" = "-mcpu=baseline" ] || a+=("$x"); done\n"${a[@]}" -MD#' "$f"
done
make -j"$(nproc)"
'''
install = 'make DESTDIR=/out install'
[deps]
build = ["linux-headers", "make", "pkgconf"]