# zathura-pdf-poppler 2026.07.18 — el backend de PDF de `zathura`. Sin esto, zathura abre la # ventana y no muestra un solo documento: los formatos entran por `.so` que carga con gmodule desde # `/usr/lib/zathura`, y ésta es la única receta que pone uno ahí. # # El `plugindir` NO se codifica: sale de `zathura.pc` (`zathura.get_variable(pkgconfig:'plugindir')`), # así que las dos recetas no pueden desincronizarse. Por eso `zathura` va en `[deps]` aunque el # plugin no enlace nada suyo: aporta el `.pc`, las cabeceras de `plugin-api.h` y esa variable. # # Los símbolos `zathura_*` que el plugin usa NO se resuelven en el link: los resuelve el dlopen # contra el EJECUTABLE, que zathura liga con `export_dynamic: true`. Es normal y es por qué esto es # un `shared_module` y no una `shared_library`. # # `poppler-glib` es la receta del corpus escrita para esto: la poppler que ya existía va # `-DENABLE_GLIB=OFF` y vive en `incoming-kde`. Ver su cabecera, que además explica por qué zathura # no se declara en el perfil de KDE. # # ⚠ `glib-shared` y no `glib`, igual que las otras dos de la cadena: dos copias estáticas de # GObject en el mismo proceso rompen el dlopen. Ver `recipes/poppler-glib.toml`. # # Su `data/meson.build` busca `desktop-file-validate` y `appstreamcli` con `required:false` — sin # ellos simplemente no registra esos dos tests. No hace falta traer nada. # # Fuente por commit git (ADR 0006): `2026.07.18` es un objeto TAG ⇒ éste es su commit pelado. name = "zathura-pdf-poppler" version = "2026.07.18" license = "Zlib" [source] repo = "https://github.com/pwmt/zathura-pdf-poppler.git" commit = "2aaedd3342a12f8d45b209995c375cbdfbf05137" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "dynamic" flags = [] [build.phases] configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release" compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output" install = ''' set -e PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild # Un plugin que no aterriza donde zathura lo busca es un artefacto que sella y no sirve para nada: # zathura arrancaría igual y diría «unknown file type». Se comprueba la ruta, no el exit code. test -e /out/usr/lib/zathura/libpdf-poppler.so || { echo "ERROR: el plugin no quedó en /usr/lib/zathura — ¿cambió el plugindir de zathura.pc?" >&2 ls -R /out/usr/lib >&2 exit 1 } ''' [deps] build = [ "meson", "samurai", "python3", "pkgconf", "linux-headers", "zathura", "girara", "poppler-glib", "glib-shared", "pcre2-shared", "cairo", "pixman", "libffi", "zlib", "freetype-shared", "fontconfig-shared", "expat", "lcms2", "libjpeg-turbo-shared", "libpng-shared", "zlib-shared", ]