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>
52 lines
2.1 KiB
TOML
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"]
|