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 1572Shell 203Rust 109Markdown 993728 Sutichaykuna

⎇ main recipes/incoming-gnome/nautilus.toml TOML · 83 siq'ikuna · 7.2 KB Ñawpa willay ch'uya

nautilus y gvfs SELLADOS: las dos que faltaban eran deps del cierre, no del código 6aa26246c · Sergio ·

1# nautilus 48.7 — el gestor de ficheros de GNOME. Es el `dolphin` de este escritorio: hasta hoy el
2# perfil `escritorio-gnome` tenía shell, terminal, portales y llavero, y **ninguna forma de ver una
3# carpeta**. Va PEGADO a `gvfs` (misma tanda, receta hermana): sin gvfs esta app abre y navega, pero
4# la papelera que dibuja no existe.
5#
6# ── LAS CUATRO DEPS QUE NO SE PUEDEN APAGAR, con su línea ───────────────────────────────────────
7# El `meson.build` de esta versión las pide sin `required: false` — no hay perilla:
8#     :114  gnome-autoar-0   >= 0.4.4     ← extraer/comprimir desde el menú contextual
9#     :115  gnome-desktop-4  >= 43        ← ya sellada en esta cola (44.5)
10#     :123  libportal        >= 0.7    ┐  ← las dos salen de UNA receta, ver libportal.toml
11#     :124  libportal-gtk4   >= 0.5    ┘
12#     :129  tracker-sparql-3.0           ← la da `tinysparql` (publica ese `.pc` además del suyo)
13# Y `gtk4 >= 4.17.5` (:116), que la isla cumple con 4.18.6 — comprobado antes de elegir la versión,
14# porque un nautilus 48 sobre un gtk4 viejo no configura.
15#
16# ── `-Dextensions=false`: LO QUE SE PIERDE, DICHO CON NOMBRE ────────────────────────────────────
17# Es la perilla más cara de esta receta y conviene no disfrazarla. Con `extensions=true` (el
18# default) el bloque `:104-109` exige CUATRO deps de golpe: `gexiv2`, `gdk-pixbuf`,
19# `gstreamer-tag-1.0` y `gstreamer-pbutils-1.0`. De ésas sólo `gdk-pixbuf` está sellada; `gexiv2`
20# arrastra exiv2 (C++ grande) y las dos de gst arrastran gstreamer + gst-plugins-base enteros.
21#
22# ⇒ **Lo que NO va a estar: las pestañas de metadatos en «Propiedades».** Nada de EXIF de una foto
23# (cámara, apertura, fecha de disparo) ni de etiquetas de un MP3/vídeo (artista, duración, códec).
24# El resto de Propiedades —tamaño, permisos, tipo, abrir-con— es del núcleo y sí está. Es una app
25# completa con una pestaña menos, no una app mutilada; y el día que entre gstreamer al catálogo
26# —que es un frente propio, con las apps de usuario final detrás— esto es UNA bandera.
27#
28# ── LAS OTRAS PERILLAS ──────────────────────────────────────────────────────────────────────────
29#   -Dpackagekit=false     (default `true`) → PackageKit es el gestor de paquetes de las distros
30#                           rpm/deb; esta distro tiene el suyo (`takana install`, Etapa F). Sirve
31#                           para «este fichero no se abre con nada, ¿instalo algo?» y acá no hay del
32#                           otro lado a quién preguntarle. Dejarlo en `true` no rompe el build (habla
33#                           por D-Bus) pero deja un diálogo que nunca puede contestar.
34#   -Dcloudproviders=false (default `true`) → `libcloudproviders`, la barra lateral de Dropbox y
35#                           compañía. No está en el catálogo y no hay cliente que la pueble.
36#   -Dintrospection=false  → el typelib de `libnautilus-extension`, para extensiones en Python/JS.
37#                           No hay ninguna todavía; la isla sabe hacerlo cuando la haya.
38#   -Dselinux=false        → ya es el default; se declara porque el seed lo listaba como frontera y
39#                           no lo es: no hay SELinux en esta distro (musl, sin systemd).
40#   -Dtests=headless→none  → el default COMPILA tests; ninguno se instala.
41#
42# ── LA BÚSQUEDA, Y POR QUÉ NO ES LA COMPLETA ────────────────────────────────────────────────────
43# `tinysparql` da la librería y el almacén, pero el INDEXADOR (`localsearch`, ex tracker-miners) no
44# está en el catálogo. Sin él, nautilus usa `NautilusSearchEngineSimple`: encuentra por NOMBRE
45# recorriendo directorios, sin índice y sin mirar dentro de los ficheros. Está escrito también en el
46# encabezado de `tinysparql.toml`; se repite acá porque es lo que el usuario nota.
47#
48# ⚠ EL `sed` DEL `ar`, y acá es el caso más grosero de todos: `po/ar.po` trae **86** `msgstr[5]`.
49# El `msgfmt` de gettext-tiny muere con SIGILL ante el primero ([[gettext-tiny-msgfmt-plural-arabe]]).
50# Cuesta la traducción al árabe del gestor de ficheros; el arreglo real es autorar el gettext de GNU
51# y es una campaña de 108 recetas.
52name    = "nautilus"
53version = "48.7"
54license = "GPL-3.0-or-later"
55
56[source]
57tarball = "https://download.gnome.org/sources/nautilus/48/nautilus-48.7.tar.xz"
58sha256  = "60a7a371b5536fe329ced90cce46fff9b7b3ae256d448e1cb796df29d32ee235"
59
60[build]
61compiler = "zig-cc"
62target   = "x86_64-linux-musl"
63link     = "dynamic"
64
65[build.phases]
66configure = "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 -Dextensions=false -Dintrospection=false -Dpackagekit=false -Dcloudproviders=false -Dselinux=false -Ddocs=false -Dtests=none -Dc_args=-Wno-error=date-time"
67compile   = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
68install   = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
69
70[deps]
71# La lista es el cierre `.pc` COMPLETO, no las deps directas: la hidratación de takana es directa y
72# no transitiva, y `pkg-config` aborta si falta un `.pc` nombrado en `Requires.private` aunque el
73# link sea dinámico. Los tres que la gente olvida, verificados leyendo los `.pc` del store:
74#   libadwaita-1.pc     Requires.private: … appstream   ⇒ appstream + libxmlb + libyaml-shared +
75#                                                          curl + openssl + zstd
76#   gnome-desktop-4.pc  Requires.private: … xkeyboard-config, iso-codes, libseccomp
77#   libsoup-3.0.pc      Requires.private: sqlite3, libpsl, zlib, libnghttp2
78# Y uno que no es un `.pc` sino un PROGRAMA, que costó la primera corrida: `meson.build:249` hace
79# `find_program('update-desktop-database')` REQUERIDO —para la caché MIME→aplicación— y eso lo trae
80# `desktop-file-utils`. Falla en el configure, antes de compilar una línea, con
81# `ERROR: Program 'update-desktop-database' not found or not executable`. Es dep de BUILD además de
82# lo que ya era: `targets.toml` la declara raíz de los cuatro escritorios por el runtime.
83build = ["meson", "samurai", "python3", "pkgconf", "gettext-tiny", "desktop-file-utils", "glib", "gtk4", "libadwaita", "gnome-desktop", "gsettings-desktop-schemas", "gnome-autoar", "libarchive-shared", "libportal", "tinysparql", "json-glib", "libsoup", "libpsl", "nghttp2", "sqlite-shared", "icu4c", "libxml2-shared", "dbus", "appstream", "libxmlb", "libyaml-shared", "curl", "openssl", "zstd", "xkeyboard-config", "iso-codes", "libseccomp", "pango", "gdk-pixbuf", "cairo-shared", "graphene", "harfbuzz", "fribidi", "fontconfig-shared", "freetype-shared", "pixman", "libpng-shared", "expat", "libjpeg-turbo-shared", "libtiff-shared", "libepoxy", "wayland", "wayland-protocols", "libxkbcommon", "libdrm", "mesa", "pcre2", "libffi", "zlib-shared"]