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…

⎇ main recipes/incoming-gnome/udisks.toml TOML · 87 siq'ikuna · 6.7 KB Ñawpa willay ch'uya

udisks SELLADO: enchufar un USB ya hace algo, y gvfs trae su monitor de volúmenes 53ff22480 · Sergio ·

1# udisks 2.11.2 — el demonio que hace que enchufar un USB signifique algo. Es la pieza que falta
2# para cerrar el hueco que quedó escrito en `recipes/incoming-gnome/gvfs.toml` y en `targets.toml`:
3# **hasta hoy esta distro montaba lo que dijera el `fstab` y lo que el usuario montara a mano.**
4#
5# ── ⚠ HOY VIVE EN `incoming-gnome/`, Y ESO ES UNA DEUDA CONOCIDA, NO EL SITIO CORRECTO ────────
6# Lo usan los CUATRO escritorios: GNOME por el monitor de volúmenes de `gvfs` (que enlaza
7# `udisks2.pc`), y KDE/COSMIC/sway por Solid y sus applets, que hablan con él **por D-Bus** sin
8# enlazarlo. El sitio natural sería el corpus, que es la única cola que las cuatro alcanzan.
9#
10# No está ahí por un motivo medido: **`polkit` NO existe en el corpus** — sólo en
11# `incoming-kde/polkit.toml` y `incoming-gnome/polkit.toml` —, y este configure lo pide duro
12# (`polkit-gobject-1` y `polkit-agent-1`, :152 y :156). Una receta del corpus no puede alcanzar a
13# una hermana de cola. O se promueve polkit al corpus —con el cuidado de no acabar con dos polkit
14# distintos en la misma ruta, que es la advertencia que `targets.toml` ya escribió para
15# NetworkManager— o se duplica esta receta en las otras colas.
16# ⇒ **Con esto, hoy el USB aparece en GNOME y no en KDE, COSMIC ni sway.** Está escrito acá porque
17# un hueco que se nombra se arregla, y es la misma forma exacta que ya pagaron `wireplumber` y
18# `networkmanager` antes de promoverse.
19#
20# ── `link = dynamic` Y LA GLib DE LA ISLA, NO la estática ─────────────────────────────────────
21# No es preferencia: `libblockdev` carga sus plugins con `dlopen`, así que el proceso acaba con el
22# núcleo y cuatro `.so` dentro. Si cada uno embebiera su propia GLib estática habría varios
23# registros de GType en el mismo proceso, que es el SIGSEGV del keystone
24# ([[dos-glib-estaticas-en-un-proceso]]). Es el mismo camino que ya sigue `networkmanager` en el
25# corpus con `glib-shared`, que también es un demonio con plugins; acá la dinámica que toca es la
26# de la isla, porque es la cola en la que vive.
27#
28# ── LAS PERILLAS ──────────────────────────────────────────────────────────────────────────────
29#   --disable-acl    → `libacl` (de acl/attr) no está en el catálogo. Lo que apaga: udisks pone
30#                      ACLs en el punto de montaje para que el usuario de la sesión activa pueda
31#                      escribir sin ser root. ⚠ **Esto se nota**: sin ACL, el montaje queda con los
32#                      permisos de siempre y el acceso se resuelve por el uid del que monta. Es el
33#                      hueco más fino de esta receta y merece su propia medición en la imagen.
34#   --disable-smart  → `libatasmart`; sin salud del disco (temperatura, horas, reasignados).
35#   --disable-lvm2 --disable-btrfs --disable-iscsi --disable-lsm → módulos opcionales cuyo cierre
36#                      no está (lvm2, libstoragemgmt…). Ninguno hace falta para un USB.
37#   --disable-man    → las genera con `xsltproc` + docbook, que no están.
38#   --disable-introspection → el consumidor de hoy (gvfs) es C.
39#   --with-systemdsystemunitdir=no --with-tmpfilesdir=no → no hay systemd (ADR 0007).
40#   --with-modprobedir / --with-modloaddir → instalan ficheros de opciones de MÓDULOS, y este kernel
41#                      se construye con `-d MODULES` (ver `recipes/kmod.toml`). Se dejan donde
42#                      upstream los pone: son datos inertes, no cuesta nada, y el día que haya
43#                      módulos ya están.
44#
45# ⚠ SIN `[[service]]`, y es una decisión: udisks se instala como servicio ACTIVABLE del bus de
46# sistema (`org.freedesktop.UDisks2.service` en `/usr/share/dbus-1/system-services`), que es como lo
47# despierta el monitor de volúmenes del escritorio al abrir sesión. Declararlo además como demonio
48# de arranque lo levantaría dos veces. El día que se quiera `udisksd` vivo ANTES de que haya sesión
49# —para automontar en un servidor sin pantalla, por ejemplo— eso es una Card con `scope = "system"`
50# y su propia decisión. Mismo criterio que `gnome-keyring`.
51#
52# ⚠ SIN `sed` del `ar`: sus 70 `.po` incluyen `ar.po` con CERO `msgstr[5]` (medido) ⇒ la mina del
53# msgfmt de gettext-tiny no aplica.
54name    = "udisks"
55version = "2.11.2"
56license = "GPL-2.0-or-later"
57
58[source]
59tarball = "https://github.com/storaged-project/udisks/releases/download/udisks-2.11.2/udisks-2.11.2.tar.bz2"
60sha256  = "18630a8aad806bea0bc626ce97e71e50ec82c742956ac1c834a4275f8f22207b"
61
62[build]
63compiler = "zig-cc"
64target   = "x86_64-linux-musl"
65link     = "dynamic"
66
67[build.phases]
68configure = "CFLAGS='-O2 -fPIC' PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure --build=$CBUILD --host=$CHOST --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-shared --disable-static --disable-dependency-tracking --enable-daemon --disable-acl --disable-smart --disable-lvm2 --disable-btrfs --disable-iscsi --disable-man --disable-gtk-doc --disable-introspection --disable-nls --with-systemdsystemunitdir=no --with-tmpfilesdir=no && sed -i 's/ -nostdlib//g' libtool"
69compile   = 'make -j"$(nproc)"'
70install   = 'make DESTDIR=/out install'
71
72[deps]
73# ⚠ `gettext-tiny` hace falta AUNQUE se pase `--disable-nls`: el configure busca `msgfmt` antes de
74# mirar esa opción y aborta con `configure: error: msgfmt not found (gettext package)`. Quinta
75# herramienta de build de la jornada que sólo delata el configure.
76#
77# ⚠ `python3` es dep de BUILD aunque las bindings de Python estén APAGADAS: el `configure` de los
78# dos ejecuta `AM_PATH_PYTHON` igual y, al no encontrar intérprete, recorre toda la lista hasta
79# `python2.0` y aborta con `configure: error: no suitable Python interpreter found`. El mensaje no
80# menciona ninguna opción, así que se lee como si faltara una perilla. Cuarta herramienta de build
81# que se olvida en esta jornada, y por el mismo motivo que las otras tres: no sale en ningún `.pc`
82# ni en ningún `NEEDED` — sólo la ve el configure, fallando.
83#
84# `polkit` da polkit-gobject-1 Y polkit-agent-1 (las dos las pide el configure, :152 y :156).
85# `libelogind` responde al `dependency('libsystemd')` fallido (:197-208): es quien le dice a udisks
86# qué sesión está activa, que es la base de «este USB es tuyo, podés montarlo».
87build = ["make", "pkgconf", "python3", "gettext-tiny", "glib", "libffi", "pcre2", "zlib-shared", "libblockdev", "kmod", "libudev-zero", "udev-pc", "libgudev", "polkit", "e2fsprogs-shared", "libblkid-shared", "libmount-shared", "libuuid-shared", "libfdisk-shared", "libelogind", "dbus", "expat"]