kde/Plasma: okular 25.04.3 (8va app, visor documentos) + poppler 25.02.0 + freetype/fontconfig shared — DEUDA CAPA 0 SALDADA

okular sella (5efc2ad9) con 8 generadores: poppler (PDF) + kimgio + txt + comicbook + fax + fb + dvi +
xps. okularGenerator_poppler.so → libpoppler-qt6.so.3 verificado.

poppler 25.02.0 (59461aff), Qt6-only: sin QT5/glib/cpp/utils/tests; NSS3/GPGME/LIBCURL/LIBTIFF off y
LIBOPENJPEG=none (sin deps selladas; los JPEG2000 embebidos no renderizan, el resto del PDF sí).
Cierre libpoppler.so VERIFICADO soberano: libfreetype.so.6 + libfontconfig.so.1 + libjpeg.so.62 +
libpng16.so.16 + liblcms2.so.2 + libz.so.1 — sin fugas al sysroot.

**DEUDA CAPA 0 'freetype/fontconfig shared-PIC' (marcada pendiente en ADR 0011) SALDADA:**
freetype-shared 2.14.3 (76fd1f4b, libfreetype.so.6, --without-harfbuzz corta el ciclo con harfbuzz) +
fontconfig-shared 2.18.1 (6ed9e303, libfontconfig.so.1). expat NO necesita variante: el canónico ya usa
--with-pic. Las variantes omiten los 3 patches Alpine de rendering (viven en recipes/, copiarlos
arriesga colisión de patches homónimos; no afectan el rasterizado que poppler necesita).

Fixes okular: FORCE_NOT_REQUIRED_DEPENDENCIES (flag OFICIAL que sugiere el propio feature_summary) para
DocTools/Purpose/TIFF/LibSpectre/KExiv2Qt6/DjVuLibre/EPub/Discount/QMobipocket6; +plasma-activities
(REQUIRED), +kpty (comicbook), +kwallet (ya sellada). GOTCHA musl durable: synctex_parser.c usa
vasprintf (extensión GNU) con -std=c99 ⇒ musl no la declara en modo estricto ⇒ CMAKE_C_FLAGS=-D_GNU_SOURCE.

Apps: konsole+dolphin+kate+kcalc+ark+filelight+gwenview+okular.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 09:56:17 -04:00
co-authored by Claude Opus 4.8
parent 31fe5eb937
commit 122557615f
4 changed files with 180 additions and 0 deletions
@@ -0,0 +1,27 @@
# fontconfig-shared 2.18.1 — variante DINÁMICA (libfontconfig.so.1, PIC) para el escritorio KDE.
# El canónico (recipes/fontconfig.toml) es --disable-shared (sólo libfontconfig.a sin PIC) ⇒ no enlaza en
# un .so. Lo exige poppler (búsqueda/sustitución de fuentes del PDF) → okular. Deuda Capa 0 del ADR 0011.
#
# expat NO necesita variante: el canónico ya usa --with-pic (su .a lleva objetos PIC, enlazable en .so).
# libpng-shared+zlib-shared: freetype se compila --with-png ⇒ freetype2.pc trae `Requires: libpng` (y
# libpng.pc → zlib); sin ellos pkg-config no resuelve freetype2 y ./configure aborta (gotcha .pc transitivo).
name = "fontconfig-shared"
version = "2.18.1"
[source]
tarball = "https://gitlab.freedesktop.org/api/v4/projects/890/packages/generic/fontconfig/2.18.1/fontconfig-2.18.1.tar.xz"
sha256 = "2300f3dbfa7253b3a44f4feecdbc8dfa45dde5dc2cfb71fceaf31f394cb41031"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = "./configure --build=$CBUILD --host=$CHOST --prefix=/usr --sysconfdir=/etc --enable-shared --disable-static --disable-docs"
compile = 'make -j"$(nproc)"'
install = "make install DESTDIR=/out && find /out -name '*.la' -delete"
[deps]
build = ["freetype-shared", "expat", "pkgconf", "gperf", "python3", "libpng-shared", "zlib-shared"]
+31
View File
@@ -0,0 +1,31 @@
# freetype-shared 2.14.3 — variante DINÁMICA (libfreetype.so.6, PIC) para el escritorio KDE.
# El canónico (recipes/freetype.toml) es --disable-shared (sólo libfreetype.a sin PIC) ⇒ no enlaza dentro
# de un .so. Lo exige poppler (rasterizado de fuentes del PDF) → okular. Deuda Capa 0 que el ADR 0011
# marcaba pendiente ("freetype/fontconfig shared-PIC").
#
# SIN los 3 patches del canónico (pcf-family-names/subpixel/table-validation-modules): son tweaks de
# rendering de Alpine y viven en recipes/ (copiarlos a esta cola arriesga la colisión de patches homónimos).
# No afectan la corrección del rasterizado que poppler necesita.
#
# --without-harfbuzz: corta el ciclo freetype↔harfbuzz (harfbuzz autodetectaría freetype). --without-brotli:
# no hay brotli sellado (sólo afecta fuentes WOFF2). zlib/png dinámicos vía las variantes -shared.
name = "freetype-shared"
version = "2.14.3"
[source]
tarball = "https://download.savannah.gnu.org/releases/freetype/freetype-2.14.3.tar.xz"
sha256 = "36bc4f1cc413335368ee656c42afca65c5a3987e8768cc28cf11ba775e785a5f"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = './configure --build=$CBUILD --host=$CHOST --prefix=/usr --enable-shared --disable-static --without-harfbuzz --without-brotli --with-zlib=yes --with-png=yes CPPFLAGS=-I/usr/include LDFLAGS=-L/usr/lib'
compile = 'make -j"$(nproc)"'
install = "make DESTDIR=/out install && find /out -name '*.la' -delete"
[deps]
build = ["zlib-shared", "libpng-shared", "pkgconf"]
+65
View File
@@ -0,0 +1,65 @@
# okular 25.04.3 — el visor de documentos de KDE. 8va APP del escritorio.
# Patrón KF6 app (dynamic, wrapper zig, ECM). Dep nueva clave: poppler 25.02.0 (Qt6) = el generador PDF.
# ZLIB es REQUIRED. okular marca sus generadores TYPE REQUIRED pero ofrece el flag OFICIAL
# `FORCE_NOT_REQUIRED_DEPENDENCIES` (lo sugiere el propio feature_summary al abortar) ⇒ se degradan los que
# no tenemos sellados: DocTools, Purpose, TIFF, LibSpectre (PS), KExiv2Qt6, DjVuLibre, EPub, Discount
# (markdown), QMobipocket6. Sí entran: poppler (PDF, lo importante), kimgio (imágenes), txt, comicbook
# (pide KF6Pty), fictionbook, xps. Aprovechados por estar ya sellados: kwallet (claves de PDF), phonon
# (sonido), qtspeech (lectura en voz), plasma-activities (REQUIRED).
#
# GOTCHA musl: core/synctex/synctex_parser.c usa vasprintf (extensión GNU) y compila con -std=c99; en modo
# estricto (__STRICT_ANSI__) musl NO declara vasprintf en stdio.h (sólo bajo _GNU_SOURCE/_BSD_SOURCE) ⇒
# "call to undeclared function 'vasprintf'" con -Werror=implicit-function-declaration. Fix: CMAKE_C_FLAGS=-D_GNU_SOURCE.
name = "okular"
version = "25.04.3"
[source]
tarball = "https://download.kde.org/stable/release-service/25.04.3/src/okular-25.04.3.tar.xz"
sha256 = "d0b5bb0b0eeab46aa2367c8d81096185bd2261710701c84f1c6e2398e5058bfb"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = '''
rm -rf po doc
sed -i '/add_subdirectory(doc)/d' CMakeLists.txt
sed -i '/kdoctools_install/d' CMakeLists.txt
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
cat > "$ZW/cc" <<'W'
#!/bin/sh
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
exec /opt/zig/zig cc -mcpu=baseline $a
W
cat > "$ZW/cxx" <<'W'
#!/bin/sh
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
exec /opt/zig/zig c++ -mcpu=baseline $a
W
chmod +x "$ZW/cc" "$ZW/cxx"
cmake -B build -G Ninja -Wno-dev \
-DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \
-DCMAKE_C_FLAGS="-D_GNU_SOURCE" \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DBUILD_TESTING=OFF \
-DFORCE_NOT_REQUIRED_DEPENDENCIES="KF6DocTools;KF6Purpose;TIFF;LibSpectre;KExiv2Qt6;DjVuLibre;EPub;Discount;QMobipocket6"
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtsvg", "dbus", "extra-cmake-modules",
"qttools", "gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland", "qtdeclarative",
"poppler", "freetype-shared", "fontconfig-shared", "zlib-shared", "lcms2",
"libjpeg-turbo-shared", "libpng-shared", "expat", "phonon", "qtspeech", "qtmultimedia",
"karchive", "kbookmarks", "kcompletion", "kconfig", "kconfigwidgets", "kcoreaddons", "ki18n",
"kio", "threadweaver", "kwindowsystem", "kxmlgui", "kparts", "kcolorscheme", "kcrash",
"kiconthemes", "kitemviews", "ktextwidgets", "kwidgetsaddons",
"kservice", "kjobwidgets", "kcodecs", "kguiaddons", "solid", "sonnet", "attica", "kpackage",
"kirigami", "kglobalaccel", "kauth", "icu4c", "knotifications", "kitemmodels", "plasma-activities",
"kpty", "kwallet",
"libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", "libXi",
"libxcb", "xcb-util", "xcb-util-keysyms", "xcb-util-wm", "xcb-util-image", "xcb-util-renderutil"]
+57
View File
@@ -0,0 +1,57 @@
# poppler 25.02.0 — motor de renderizado PDF (libpoppler.so + libpoppler-qt6.so). Campaña KDE (ADR 0011):
# es el backend de okular (visor de documentos).
#
# CMake + wrapper zig, C++20. Recortado al frontend Qt6: sin QT5/glib/gobject/cpp/utils/tests. Cripto y
# formatos extra OFF por no tener las deps selladas: NSS3/GPGME (firma de PDF), LIBCURL (PDF remoto),
# LIBTIFF, LIBOPENJPEG=none (JPX/JPEG2000 — imágenes JPEG2000 dentro del PDF no renderizan; el resto sí).
# ENABLE_BOOST=OFF (sólo perf del backend Splash). Sustrato: freetype-shared + fontconfig-shared (las
# variantes .so/PIC nuevas; el .a canónico no enlaza en libpoppler.so) + lcms2 + libjpeg-turbo-shared
# (DCTDECODER) + libpng-shared + zlib-shared.
name = "poppler"
version = "25.02.0"
[source]
tarball = "https://poppler.freedesktop.org/poppler-25.02.0.tar.xz"
sha256 = "21234cb2a9647d73c752ce4031e65a79d11a511a835f2798284c2497b8701dee"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = '''
ZW="$PWD/.zwrap"; mkdir -p "$ZW"
cat > "$ZW/cc" <<'W'
#!/bin/sh
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
exec /opt/zig/zig cc -mcpu=baseline $a
W
cat > "$ZW/cxx" <<'W'
#!/bin/sh
a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
exec /opt/zig/zig c++ -mcpu=baseline $a
W
chmod +x "$ZW/cc" "$ZW/cxx"
cmake -B build -G Ninja -Wno-dev \
-DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DBUILD_SHARED_LIBS=ON \
-DENABLE_QT5=OFF -DENABLE_QT6=ON -DENABLE_GLIB=OFF -DENABLE_GOBJECT_INTROSPECTION=OFF \
-DENABLE_CPP=OFF -DENABLE_UTILS=OFF -DENABLE_BOOST=OFF \
-DENABLE_LIBOPENJPEG=none -DENABLE_DCTDECODER=libjpeg -DENABLE_LCMS=ON \
-DENABLE_LIBCURL=OFF -DENABLE_LIBTIFF=OFF -DENABLE_NSS3=OFF -DENABLE_GPGME=OFF \
-DBUILD_GTK_TESTS=OFF -DBUILD_QT5_TESTS=OFF -DBUILD_QT6_TESTS=OFF -DBUILD_CPP_TESTS=OFF \
-DBUILD_MANUAL_TESTS=OFF
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "extra-cmake-modules", "qttools",
"gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland", "dbus",
"freetype-shared", "fontconfig-shared", "expat", "lcms2",
"libjpeg-turbo-shared", "libpng-shared", "zlib-shared", "gperf",
"libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", "libXi",
"libxcb", "xcb-util", "xcb-util-keysyms", "xcb-util-wm", "xcb-util-image", "xcb-util-renderutil"]