gioser

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 1472Shell 176Rust 106Markdown 953592 Definiciones

⎇ main recipes/incoming-gnome/upower.toml TOML · 73 líneas · 4.4 KB Historia crudo

SDD 30 4c: GNOME con los demonios supervisados por arje — y el control arregló colord 3d79cdf98 · Sergio ·

1# upower 1.90.10 — el servicio de energía (batería, carga, suspensión por batería crítica) y su
2# librería cliente `libupower-glib`, de donde sale el typelib `UPowerGlib-1.0`.
3#
4# POR QUÉ ENTRA: gnome-shell lo importa desde JavaScript sin condicional
5# (`js/misc/dependencies.js`: `import 'gi://UPowerGlib?version=1.0'`). O sea que **es dep de RUNTIME
6# del shell** aunque no aparezca en su meson.build — el indicador de batería del panel se apoya en
7# esto. Se destapó arrancando la sesión, no compilando.
8#
9# FUENTE: el archivo de gitlab.freedesktop.org y no `upower.freedesktop.org/releases/`, que hoy sirve
10# un índice generado por `tree` sin los tarballs de la serie 1.90. Es el mismo patrón que ya usan
11# cairo, libdrm, libinput, pixman y modemmanager en este repo.
12#
13# LAS TRES PERILLAS QUE HAY QUE FIJAR A MANO, y las tres por el mismo motivo — el `auto` de upower
14# significa «preguntale a un pkg-config de systemd», que acá no existe:
15#
16#  -Dudevrulesdir / -Dudevhwdbdir: con `auto` hace `udev_dep.get_variable(pkgconfig: 'udev_dir')`
17#   (meson.build:97 y :103). Nuestro `udev-pc` declara la variable **`udevdir`**, no `udev_dir` —
18#   el nombre con guión bajo es de systemd-udev; el sin guión es el histórico de eudev, que es el que
19#   copiamos. En vez de tocar `udev-pc` (que arrastraría a libudev-zero y sus 51 dependientes) se
20#   fijan los dos directorios acá, que es lo que la opción existe para permitir.
21#
22#  -Dsystemdsystemunitdir=no: con la cadena vacía hace `dependency('systemd')` DURA
23#   (meson.build:120-122). El valor `no` está contemplado por upstream y saltea la instalación de la
24#   unit (src/meson.build:107). Acá PID1 es arje-zero.
25#
26# -Dintrospection=enabled es el punto de todo esto. `-Didevice=disabled` saca libimobiledevice (el
27# soporte de batería de iPhone), que no está en el corpus. `-Dpolkit=enabled` porque polkit YA está
28# sellada y es lo que decide quién puede suspender.
29#
30# ISLA DINÁMICA: el typelib nombra `libupower-glib.so.3` y gjs la dlopea.
31name    = "upower"
32version = "1.90.10"
33license = "GPL-2.0-or-later"
34
35[source]
36tarball = "https://gitlab.freedesktop.org/upower/upower/-/archive/v1.90.10/upower-v1.90.10.tar.gz"
37sha256  = "7fcd51bece2526dbee5170feb3ffd1adab5b0cd023575f1fd119d969b73f4b90"
38
39[build]
40compiler = "zig-cc"
41target   = "x86_64-linux-musl"
42link     = "dynamic"
43
44[build.phases]
45configure = '''
46set -e
47PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output \
48  --prefix=/usr --buildtype=release --wrap-mode=nodownload \
49  -Ddefault_library=both -Dos_backend=linux -Dintrospection=enabled \
50  -Didevice=disabled -Dpolkit=enabled -Dman=false -Dgtk-doc=false \
51  -Dudevrulesdir=/usr/lib/udev/rules.d -Dudevhwdbdir=/usr/lib/udev/hwdb.d \
52  -Dsystemdsystemunitdir=no -Dc_args=-Wno-error=date-time
53'''
54compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
55install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
56
57[deps]
58build = ["meson", "samurai", "python3", "pkgconf", "gettext-tiny", "py3-setuptools", "gobject-introspection", "gi-foreign-girs", "glib", "glib-introspected", "libgudev", "udev-pc", "libudev-zero", "polkit", "libffi", "pcre2", "zlib-shared", "expat", "dbus-shared"]
59
60# ── EL SERVICIO QUE ESTE PAQUETE TRAE (SDD 30) ──────────────────────────────────────────────────
61# ⚠ EL `argv` ESPERA AL BUS ANTES DEL `exec`, Y NO ES UNA MAÑA DE ESTA RECETA. arje ordena el
62# arranque por capacidades (orden topológico real), pero eso ordena el SPAWN, no el ESTAR LISTO: no
63# existe primitiva «esperá a que aparezca este socket» (DE-SYSTEMD-A-ARJE.md §13 lo lista como hueco
64# abierto). Sin la espera, este daemon puede arrancar antes de que dbus-daemon escuche y quedarse en
65# modo idle sin registrar nunca su nombre — un fallo que NO se ve: el proceso vive, el bus no lo
66# tiene. Mientras el hueco siga abierto la espera va DENTRO del card, a la vista en el argv y no
67# escondida en un wrapper, para que se pueda contar cuántos servicios la están pagando.
68[[service]]
69label   = "upowerd"
70id      = "01HQAR53D4M2NBV8KZTYXFQA24"
71exec    = "/bin/busybox"
72argv    = ["sh", "-c", "i=0; while [ ! -S /run/dbus/system_bus_socket ] && [ $i -lt 100 ]; do i=$((i+1)); sleep 0.2; done; exec /usr/libexec/upowerd"]
73restart = { initial_ms = 500, max_ms = 20000 }