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 939Rust 57Shell 37Markdown 331282 Definitions

⎇ 84e3737e10e17927380ed3e232e50cebfdd39123 recipes/incoming-gnome/gnome-tweaks.toml TOML · 97 lines · 6.5 KB History raw

gnome: dash-to-panel, appindicator y gnome-tweaks — y la lista de activas sale de las recetas 4e4a2c8d2 · Sergio ·

1# gnome-tweaks 46.1 — el «tenés que instalarte esto» clásico de GNOME. Es la app que expone lo que
2# el shell no deja tocar desde Configuración: tema, iconos, cursor, tipografías, botones de la barra
3# de título (minimizar/maximizar, que GNOME esconde), comportamiento del touchpad, aplicaciones al
4# inicio y el interruptor de las extensiones.
5#
6# ⚠ POR QUÉ 46.1 Y NO LA ÚLTIMA. gnome-tweaks NO tiene release 47 ni 48: la lista de
7# download.gnome.org salta de 46.1 a 49.rc/49.0. Nuestro shell es el 48, así que la que corresponde
8# es la ÚLTIMA anterior — la 49 apunta a la serie 49 de libadwaita/GTK y no hay motivo para
9# arriesgar APIs nuevas contra un escritorio 48. Comprobado en el `cache.json` del propio servidor,
10# no en una lista de memoria.
11#
12# ══ NO CUESTA NINGUNA RECETA NUEVA, y eso hubo que medirlo ═════════════════════════════════════
13# Su `meson.build:22-28` declara las versiones mínimas de runtime en un bloque explícito «to make
14# packaging more obvious», y las siete se cumplen con lo que ya está sellado:
15#   glib >= 2.78          ✓ 2.88     gobject-introspection >= 1.78  ✓ 1.84
16#   gtk4 >= 4.10          ✓          libadwaita-1 >= 1.4            ✓ 1.7.6
17#   pygobject-3.0 >= 3.46 ✓ 3.50     gudev-1.0 >= 238               ✓ 238
18#   gsettings-desktop-schemas >= 46  ✓ 48.0
19#
20# ⚠ El `pygobject-3.0` de esa lista lo provee `py3-gobject`, que YA ESTABA en el corpus con otro
21# nombre —la escribió el frente GNOME para el build de libgweather— y publica `pygobject-3.0.pc`
22# (verificado en su artefacto). Sin mirar eso, esta receta parecía arrastrar una cadena de Python
23# entera. El nombre no es el hecho, otra vez.
24#
25# ⚠ Y NO necesita pycairo, que es la parte que `py3-gobject` construye con `-Dpycairo=disabled`:
26# ningún fichero de `gtweak/` importa `cairo` (verificado sobre el tarball).
27#
28# ══ ES UNA APP DE PYTHON: SUS DEPS DE RUNTIME NO SON LAS DE BUILD ══════════════════════════════
29# No se enlaza nada — `gnome-tweaks` es un script que importa `gi.repository`. Si `python3` y
30# `py3-gobject` no están EN LA IMAGEN, la app se instala y no arranca, y el build no puede
31# delatarlo. Por eso van en `[deps] runtime`, que es exactamente el caso de `xkbcomp` en xwayland.
32name    = "gnome-tweaks"
33version = "46.1"
34# licencia: no hace falta interpretar nada — los fuentes llevan etiqueta SPDX explícita.
35# `gtweak/tweakmodel.py:2`: «SPDX-License-Identifier: GPL-3.0+», que es la forma vieja de
36# `GPL-3.0-or-later`. El tarball no trae COPYING sino un directorio `LICENSES/`.
37license = "GPL-3.0-or-later"
38
39[source]
40tarball = "https://download.gnome.org/sources/gnome-tweaks/46/gnome-tweaks-46.1.tar.xz"
41sha256  = "2f192a7085fbd6843ecf825716d9da21ec9272029149ea35f3e159e0ac309b80"
42
43[build]
44compiler = "zig-cc"
45target   = "x86_64-linux-musl"
46link     = "dynamic"
47
48[build.phases]
49# ⚠ SE SACA EL ÁRABE, y NO es una decisión sobre el idioma: es un BUG del `msgfmt` de
50# `gettext-tiny`, el único que hay en el corpus. Revienta con SIGILL —«index 6 out of bounds for
51# type 'size_t[6]'», exit 132— al compilar un mensaje con SEIS formas plurales, que es justo lo que
52# tiene el árabe. Reproducido FUERA de la receta, con el binario sellado:
53#     msgfmt -o /tmp/x.mo po/ar.po   →   panic, exit 132, y deja un .mo de 0 bytes
54# No es el idioma: `blur-my-shell` compila su `ar.po` sin problema porque no tiene NINGÚN mensaje
55# plural (msgstr[5] = 0 apariciones); el de tweaks tiene exactamente uno (msgstr[5] = 1).
56# ⚠ ARREGLARLO DE VERDAD ES OTRA UNIDAD DE TRABAJO: `gettext-tiny` la usan 108 recetas, así que
57# tocarla re-hashea el corpus entero. Acá se pierde la traducción al árabe de UNA app y se deja el
58# diagnóstico escrito; lo que NO se hace es callarlo.
59configure = "sed -i '/^ar$/d' po/LINGUAS && PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload"
60compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
61install = '''
62set -e
63PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild
64
65# Guardián: `gnome.post_install()` de meson se SALTA sus pasos cuando DESTDIR está seteado (lo dice
66# en el log: «Skipping custom install script because DESTDIR is set»), así que lo que hay que
67# comprobar es lo que SÍ tiene que quedar en el árbol. El gschema va al directorio GLOBAL, que es el
68# que compila el lanzador al arrancar — igual que el de las extensiones.
69test -s /out/usr/bin/gnome-tweaks
70test -s /out/usr/share/glib-2.0/schemas/org.gnome.tweaks.gschema.xml
71test -s /out/usr/share/applications/org.gnome.tweaks.desktop
72# El módulo Python tiene que estar donde el intérprete lo busque, no en cualquier lado.
73test -d /out/usr/lib/python3.12/site-packages/gtweak
74'''
75
76[deps]
77# ⚠ RUNTIME, no build: es una app de Python que importa gi.repository. Sin estas dos en la imagen se
78# instala y no arranca, y ningún build lo delata.
79runtime = ["python3", "py3-gobject"]
80# La clausura ENTERA, que las deps de hammer no son transitivas. Copiada de la que ya usa
81# xdg-desktop-portal-gnome, que es el otro consumidor de gtk4+libadwaita de esta cola.
82build = ["meson", "samurai", "python3", "pkgconf", "gettext-tiny", "gobject-introspection",
83  "py3-gobject", "gsettings-desktop-schemas", "gtk4", "libadwaita", "glib", "glib-introspected",
84  "gi-foreign-girs", "libgudev", "libudev-zero",
85  "cairo-shared", "pango", "graphene", "libepoxy", "wayland", "wayland-protocols", "libdrm",
86  "harfbuzz", "fribidi", "libpng-shared", "pixman", "freetype-shared", "expat", "libffi", "pcre2",
87  "zlib-shared", "gdk-pixbuf", "libjpeg-turbo-shared", "libtiff-shared", "mesa",
88  "fontconfig-shared", "xkeyboard-config", "iso-codes", "libseccomp",
89  # ⚠ `appstream` y su cola NO son un capricho: `libadwaita-1.pc` la lleva en `Requires`, así que
90  # pkg-config la resuelve TRANSITIVAMENTE y sin ella el configure corta con «Package 'appstream',
91  # required by 'libadwaita-1', not found» — culpando a libadwaita, que está perfectamente
92  # instalada. Es el patrón `.pc Requires` → `[deps].build` que el corpus ya tiene documentado.
93  "appstream", "libxmlb", "curl", "openssl", "libxml2-shared", "libyaml-shared", "zstd",
94  # `desktop-file-utils` por `update-desktop-database`: su `gnome.post_install()` lo pide como
95  # PROGRAMA y meson corta en el configure si no está (no es una librería que se enlace). La receta
96  # ya existe y encima está en el perfil desde el 2026-09-09.
97  "desktop-file-utils"]