# gnome-shell 48.8 — LA CIMA del frente GNOME: la UI del escritorio (barra superior, overview, # pantalla de bloqueo). Su lógica está en JavaScript sobre gjs/spidermonkey y su compositor es # mutter; por eso es lo último que cae y por eso toda la onda 3 tuvo que ser una ISLA DINÁMICA — # el shell lee sus dependencias por typelib, y un typelib exige una .so real que gjs pueda dlopen(). # Ver [[gnome-introspection-dinamica]]. # # ── LA FRONTERA, YA CERRADA ───────────────────────────────────────────────────────────────────── # El draft de esta receta estimaba "~10 recetas nuevas, dominadas por eds+icu; es una campaña, no # una tanda". Fue una campaña, y el presupuesto se movió en las dos direcciones: # · icu4c NO había que autorarla: ya estaba sellada por KDE y sólo depende de pkgconf+python3, # o sea del corpus padre, así que copiarla a esta cola dio hash idéntico y cero rebuild. # · libxml2 para libsoup NO hacía falta (libsoup 3.x la dejó de usar), ni para libical (sólo la # enlaza un binario de build). Sí para eds, y ahí sí en .so ⇒ libxml2-shared. # · NSS, en cambio, NO se pudo esquivar: el -DENABLE_SMIME=OFF de eds está roto en 3.56.2 porque # camel.c incluye nss/nspr sin guardar. Se pagó, y selló a la primera (ver nss.toml). # Las deps de :71-89 verificadas contra el meson.build real están TODAS selladas hoy: # atk-bridge-2.0 → at-spi2-core · libecal-2.0 + libedataserver-1.2 → evolution-data-server # gcr-4 → gcr · polkit-agent-1 → polkit · libxml-2.0 → libxml2-shared · json-glib # clutter/cogl/mtk/libmutter → mutter · gjs · gtk4 · gnome-desktop-4 · gsettings-desktop-schemas # # ── APAGADOS, y la receta que cada uno ahorra ─────────────────────────────────────────────────── # Ojo que acá TODOS los defaults vienen en true (meson.options), así que no apagar es optar por la # frontera más cara: # -Dnetworkmanager=false → libnm (NetworkManager entero). Es el applet de red del panel; el # escritorio arranca sin él. libsecret, la otra dep de esa rama, YA está # sellada (entró por eds), así que lo único que falta acá es NetworkManager. # -Dportal_helper=false → el propio meson ERROREA si se deja en true sin networkmanager (:113). # -Dcamera_monitor=false → libpipewire-0.3. Es el indicador de "cámara en uso"; PipeWire es una # campaña propia y no la pide nada más de esta onda. # -Dsystemd=false → libsystemd. Cuarta vez que la C-ABI de logind aparece en este frente y # cuarta que se esquiva; mutter sigue siendo la única sin salida (por eso # existe libelogind sobre arje-sdlogin-compat). # -Dman=false → rst2man (docutils). Mismo motivo que en mutter, donde hubo que sacar # subdir('doc/man') a mano. # -Dtests=false -Dgtk_doc=false # -Dextensions_app=false -Dextensions_tool=false → la app GTK4 de extensiones y su CLI. NO son el # shell: son herramientas aparte que se instalan al lado. Se dejan fuera de # la primera pasada para que la cima caiga con la superficie mínima; ambas # tienen todas sus deps ya selladas, así que encenderlas después es barato. # # El segundo sed borra `#include ` y `` de src/shell-app-usage.c. NO es # una mutilación: son includes VESTIGIALES de la era X11 — el fichero no usa un solo símbolo de X11 # (`grep X11\|XA_\|Display \*\|Atom ` devuelve exactamente esas dos líneas y nada más). El código X11 # de verdad vive en src/tray/ (el tray XEmbed), y ÉSE sí está cerrado por `have_x11_client`, que sale # de mutter y acá es false porque nuestro mutter es Wayland puro. O sea que shell-app-usage.c es el # único que quedó fuera del guard, por olvido del upstream. # # El primer sed saca `subdir('po')` (:324). CUARTA vez en esta campaña que el msgfmt de gettext-tiny —lo # único que hay en el corpus— aborta con SIGABRT, acá en po/ar.po; ya pasó en iso-codes, gcr y eds. # La deuda está clara y anotada: hace falta autorar el gettext de GNU de verdad. Se pierden los # textos traducidos del shell, no el shell. # # ISLA DINÁMICA: link=dynamic y las variantes -shared de la cadena C (cairo/freetype/libpng/ # libjpeg-turbo/libtiff/zlib/fontconfig), igual que gtk4 y mutter. Con las estáticas el linker corta # con `relocation R_X86_64_32 ... recompile with -fPIC` — es el muro que ya frenó a mutter. name = "gnome-shell" version = "48.8" license = "GPL-2.0-or-later" [source] tarball = "https://download.gnome.org/sources/gnome-shell/48/gnome-shell-48.8.tar.xz" sha256 = "cb9b7d86cf362530e648e68caaf109a32af4e832874a26791ca8789773efd233" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "dynamic" [build.phases] configure = "sed -i \"/^subdir('po')$/d\" meson.build && sed -i '/^#include $/d' src/shell-app-usage.c && 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 -Dnetworkmanager=false -Dportal_helper=false -Dcamera_monitor=false -Dsystemd=false -Dman=false -Dtests=false -Dgtk_doc=false -Dextensions_app=false -Dextensions_tool=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", "gjs", "mutter", "gtk4", "gnome-desktop", "gsettings-desktop-schemas", "at-spi2-core", "dbus-shared", "gcr", "polkit", "evolution-data-server", "json-glib", "libxml2-shared", "libsecret", "pulseaudio", "libsndfile", "spidermonkey", "graphene", "pango", "gdk-pixbuf", "mesa", "libdrm", "libepoxy", "pixman", "harfbuzz", "fribidi", "wayland", "wayland-protocols", "libinput", "libxkbcommon", "cairo-shared", "libpng-shared", "freetype-shared", "libjpeg-turbo-shared", "libtiff-shared", "fontconfig-shared", "zlib-shared", "expat", "libffi", "pcre2", "sqlite-shared", "libsoup", "libical", "icu4c", "nspr", "nss", "libgcrypt-shared", "libgpg-error-shared", "libuuid-shared", "nghttp2", "libpsl", "p11-kit", "lcms2", "libdisplay-info", "hwdata", "colord", "libgudev", "libudev-zero", "libgusb", "libusb", "libei", "libevdev", "xkeyboard-config", "iso-codes", "libseccomp", "libelogind", "udev-pc", "libxcvt"]