tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

⎇ main recipes/incoming-gnome/gnome-shell.toml TOML · 75 líneas · 6.8 KB Historia crudo

licencias: campo `license` en la receta — de 0 a 228 de 1141, sin re-hashear nada 346cd5970 · sergio ·

1# gnome-shell 48.8 — LA CIMA del frente GNOME: la UI del escritorio (barra superior, overview,
2# pantalla de bloqueo). Su lógica está en JavaScript sobre gjs/spidermonkey y su compositor es
3# mutter; por eso es lo último que cae y por eso toda la onda 3 tuvo que ser una ISLA DINÁMICA —
4# el shell lee sus dependencias por typelib, y un typelib exige una .so real que gjs pueda dlopen().
5# Ver [[gnome-introspection-dinamica]].
6#
7# ── LA FRONTERA, YA CERRADA ─────────────────────────────────────────────────────────────────────
8# El draft de esta receta estimaba "~10 recetas nuevas, dominadas por eds+icu; es una campaña, no
9# una tanda". Fue una campaña, y el presupuesto se movió en las dos direcciones:
10#   · icu4c NO había que autorarla: ya estaba sellada por KDE y sólo depende de pkgconf+python3,
11#     o sea del corpus padre, así que copiarla a esta cola dio hash idéntico y cero rebuild.
12#   · libxml2 para libsoup NO hacía falta (libsoup 3.x la dejó de usar), ni para libical (sólo la
13#     enlaza un binario de build). Sí para eds, y ahí sí en .so ⇒ libxml2-shared.
14#   · NSS, en cambio, NO se pudo esquivar: el -DENABLE_SMIME=OFF de eds está roto en 3.56.2 porque
15#     camel.c incluye nss/nspr sin guardar. Se pagó, y selló a la primera (ver nss.toml).
16# Las deps de :71-89 verificadas contra el meson.build real están TODAS selladas hoy:
17#   atk-bridge-2.0 → at-spi2-core · libecal-2.0 + libedataserver-1.2 → evolution-data-server
18#   gcr-4 → gcr · polkit-agent-1 → polkit · libxml-2.0 → libxml2-shared · json-glib
19#   clutter/cogl/mtk/libmutter → mutter · gjs · gtk4 · gnome-desktop-4 · gsettings-desktop-schemas
20#
21# ── APAGADOS, y la receta que cada uno ahorra ───────────────────────────────────────────────────
22# Ojo que acá TODOS los defaults vienen en true (meson.options), así que no apagar es optar por la
23# frontera más cara:
24#   -Dnetworkmanager=false → libnm (NetworkManager entero). Es el applet de red del panel; el
25#                        escritorio arranca sin él. libsecret, la otra dep de esa rama, YA está
26#                        sellada (entró por eds), así que lo único que falta acá es NetworkManager.
27#   -Dportal_helper=false → el propio meson ERROREA si se deja en true sin networkmanager (:113).
28#   -Dcamera_monitor=false → libpipewire-0.3. Es el indicador de "cámara en uso"; PipeWire es una
29#                        campaña propia y no la pide nada más de esta onda.
30#   -Dsystemd=false     → libsystemd. Cuarta vez que la C-ABI de logind aparece en este frente y
31#                        cuarta que se esquiva; mutter sigue siendo la única sin salida (por eso
32#                        existe libelogind sobre arje-sdlogin-compat).
33#   -Dman=false         → rst2man (docutils). Mismo motivo que en mutter, donde hubo que sacar
34#                        subdir('doc/man') a mano.
35#   -Dtests=false -Dgtk_doc=false
36#   -Dextensions_app=false -Dextensions_tool=false → la app GTK4 de extensiones y su CLI. NO son el
37#                        shell: son herramientas aparte que se instalan al lado. Se dejan fuera de
38#                        la primera pasada para que la cima caiga con la superficie mínima; ambas
39#                        tienen todas sus deps ya selladas, así que encenderlas después es barato.
40#
41# El segundo sed borra `#include <X11/Xlib.h>` y `<X11/Xatom.h>` de src/shell-app-usage.c. NO es
42# una mutilación: son includes VESTIGIALES de la era X11 — el fichero no usa un solo símbolo de X11
43# (`grep X11\|XA_\|Display \*\|Atom ` devuelve exactamente esas dos líneas y nada más). El código X11
44# de verdad vive en src/tray/ (el tray XEmbed), y ÉSE sí está cerrado por `have_x11_client`, que sale
45# de mutter y acá es false porque nuestro mutter es Wayland puro. O sea que shell-app-usage.c es el
46# único que quedó fuera del guard, por olvido del upstream.
47#
48# El primer sed saca `subdir('po')` (:324). CUARTA vez en esta campaña que el msgfmt de gettext-tiny —lo
49# único que hay en el corpus— aborta con SIGABRT, acá en po/ar.po; ya pasó en iso-codes, gcr y eds.
50# La deuda está clara y anotada: hace falta autorar el gettext de GNU de verdad. Se pierden los
51# textos traducidos del shell, no el shell.
52#
53# ISLA DINÁMICA: link=dynamic y las variantes -shared de la cadena C (cairo/freetype/libpng/
54# libjpeg-turbo/libtiff/zlib/fontconfig), igual que gtk4 y mutter. Con las estáticas el linker corta
55# con `relocation R_X86_64_32 ... recompile with -fPIC` — es el muro que ya frenó a mutter.
56name    = "gnome-shell"
57version = "48.8"
58license = "GPL-2.0-or-later"
59
60[source]
61tarball = "https://download.gnome.org/sources/gnome-shell/48/gnome-shell-48.8.tar.xz"
62sha256  = "cb9b7d86cf362530e648e68caaf109a32af4e832874a26791ca8789773efd233"
63
64[build]
65compiler = "zig-cc"
66target   = "x86_64-linux-musl"
67link     = "dynamic"
68
69[build.phases]
70configure = "sed -i \"/^subdir('po')$/d\" meson.build && sed -i '/^#include <X11\\/X\\(lib\\|atom\\).h>$/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"
71compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
72install   = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
73
74[deps]
75build = ["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"]