# libportal 0.9.1 — la librería cliente de los portales XDG. Es dep DURA de nautilus, y DOS VECES: # # meson.build:123 libportal = dependency('libportal', version: '>= 0.7') # meson.build:124 libportal_gtk4 = dependency('libportal-gtk4', version: '>= 0.5') # # ── UNA RECETA DA LAS DOS LIBRERÍAS, y por eso el censo de frontera contaba de más ────────────── # `targets.toml` listaba `libportal-gtk4` como una frontera aparte. No lo es: sale del MISMO source. # `libportal/meson.build:186` construye el backend GTK4 desde esta misma compilación # (`gtk4_dep = dependency('gtk4', required: get_option('backend-gtk4'))`), y el tarball publica # `libportal.pc` y `libportal-gtk4.pc` juntos. Es la misma forma que el seed de nixpkgs ya avisa que # tiene (sobreestima 5-10×): un `.pc` extra se lee como un paquete extra. # # ── QUÉ ES, para que el apagado de abajo se entienda ──────────────────────────────────────────── # El portal es el camino por el que una app pide al escritorio algo que no puede hacer sola: abrir # el selector de ficheros del sistema, abrir un URI, pedir una captura. En nautilus es lo que hace # que «abrir con otra aplicación» y el diálogo de ficheros de otras apps hablen el mismo idioma. # El servidor del otro lado —`xdg-desktop-portal` + `xdg-desktop-portal-gnome`— YA está sellado en # esta cola. Esta receta es el lado cliente. # # ── LOS CUATRO BACKENDS, y por qué sólo uno ───────────────────────────────────────────────────── # backend-gtk4 = enabled ← el que pide nautilus. `gtk4` es la isla dinámica de esta cola. # backend-gtk3 = disabled ← GTK3 está aparcado por diseño en este frente (ver gnome-autoar). # backend-qt5 = disabled ┐ son el camino de KDE, que vive en OTRA cola y es estático. Con # backend-qt6 = disabled ┘ `auto` meson los buscaría y encenderlos acá mezclaría los dos mundos. # ⚠ Las cuatro son `feature` con valor `auto`: dejarlas sin declarar NO es neutral, es «encendé lo # que encuentres». Se declaran las cuatro a propósito para que el artefacto no dependa de qué haya # en el sysroot el día que se construya. # # `-Ddocs=false` saca `gi-docgen` (default `true`, y no está en el catálogo). # `-Dintrospection=false` / `-Dvapi=false`: mismo criterio que gnome-autoar — el consumidor de hoy # es C. Encenderlas es una línea el día que una extensión JS quiera Portal por typelib. # # ⚠ SIN `gettext-tiny`: este tarball tampoco trae `po/` (comprobado: sus subdirs son `libportal`, # `portal-test`, `tests` y `doc`). name = "libportal" version = "0.9.1" license = "LGPL-3.0-only" [source] tarball = "https://github.com/flatpak/libportal/releases/download/0.9.1/libportal-0.9.1.tar.xz" sha256 = "de801ee349ed3c255a9af3c01b1a401fab5b3fc1c35eb2fd7dfb35d4b8194d7f" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "dynamic" [build.phases] configure = "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 -Dbackend-gtk4=enabled -Dbackend-gtk3=disabled -Dbackend-qt5=disabled -Dbackend-qt6=disabled -Dintrospection=false -Dvapi=false -Ddocs=false -Dtests=false -Dportal-tests=false -Dc_args=-Wno-error=date-time" compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output" install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild" [deps] # gtk4 + su cierre `.pc` completo: la hidratación es DIRECTA, no transitiva, así que lo que # `gtk4.pc` declara en `Requires` tiene que estar nombrado acá. La lista es la de `gtk4.toml` # (misma cola) menos lo que sólo hace falta para construir gtk4 en sí. build = ["meson", "samurai", "python3", "pkgconf", "glib", "gtk4", "cairo-shared", "pango", "gdk-pixbuf", "graphene", "libepoxy", "wayland", "wayland-protocols", "libxkbcommon", "libdrm", "fontconfig-shared", "harfbuzz", "fribidi", "libpng-shared", "pixman", "freetype-shared", "expat", "libffi", "pcre2", "zlib-shared", "libtiff-shared", "libjpeg-turbo-shared", "mesa"]