Files
takana/recipes/incoming-kde/purpose.toml
T
SergioandClaude Opus 5 3c628deeb6 purpose: el último hueco de la frontera, y enganchado a las tres apps
purpose 6.27.0 — el marco de «compartir» de KDE. 23 plugins (código de barras, bluetooth,
portapapeles, correo, imgur…) más sharefileitemaction.so, que añade «Compartir» al menú de
Dolphin.

Era el último hueco. La receta de okular lo degradaba con el flag oficial
FORCE_NOT_REQUIRED_DEPENDENCIES y su cabecera decía «los que no tenemos sellados» — un ESTADO,
no una preferencia. Ahora sale de esa lista.

⚠ Y va ENGANCHADO, no sólo autorado: una receta que nadie alcanza no arregla nada. okular sale
de la lista de degradados; gwenview y spectacle lo declaran (ninguna lo mencionaba: construían
sin él y el CMake se lo saltaba en silencio). Coste medido antes de tocar: las tres son hojas
con 0 dependientes transitivos ⇒ 3 builds, sin cascada.

La prueba es el enlace, no la intención: las tres referencian libKF6Purpose (2 cada una).

Un tropiezo con su lección: el CMake abortó pidiendo tres MÓDULOS QML —org.kde.prison,
org.kde.kitemmodels, org.kde.kcmutils— que no salen de ningún find_package. Los pide con
ecm_find_qmlmodule, o sea que comprueba que el IMPORT exista, no que la librería esté enlazada.
Las tres recetas ya existían y publicaban su qmldir; sólo faltaba pedirlas. Un requisito que no
se ve leyendo los find_package.

KAccounts6 NO se pide: su find_package va sin REQUIRED y arrastraría toda la torre de
kaccounts/signond que esta distro no tiene.

Verificado: REPRODUCE bit a bit · tarball en el mirror · escritorio-kde 304/304 sellado, deuda 0.

FRONTERA: 0 HUECOS.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
2026-09-09 14:21:02 +00:00

69 lines
3.5 KiB
TOML

# purpose 6.27.0 — el marco de KDE para «compartir»: el menú que ofrece enviar por correo, subir a
# un servicio o abrir en otra aplicación, con los plugins que resuelven cada destino.
#
# POR QUÉ AHORA. Último HUECO de la frontera (triaje 2026-09-09). Lo piden gwenview, okular y
# spectacle, y la receta de okular lo degrada con el flag OFICIAL `FORCE_NOT_REQUIRED_DEPENDENCIES`
# junto a otros que su cabecera describe como «los que no tenemos sellados» — un ESTADO, no una
# preferencia. Las tres apps construyen y arrancan; lo que falta es el menú Compartir.
#
# Hueco de RUNTIME, como los dos anteriores: nada del build lo necesita, así que KDE sellaba 303/303
# sin él y ninguna métrica de deuda podía verlo.
#
# `KAccounts6` (integración con cuentas en línea) NO se pide: su find_package va sin REQUIRED y
# arrastraría toda la torre de kaccounts/signond, que esta distro no tiene. Sin él quedan los plugins
# que no dependen de una cuenta configurada.
name = "purpose"
version = "6.27.0"
license = "LGPL-2.1-or-later OR LGPL-3.0-or-later"
[source]
tarball = "https://download.kde.org/stable/frameworks/6.27/purpose-6.27.0.tar.xz"
sha256 = "c4e348fa5ac990a77b3926105c62bc4f2dddaf8d7554c43ee4f18de3d16a3699"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
flags = []
[build.phases]
configure = '''
rm -rf po
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_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF -DBUILD_TESTING=OFF
'''
compile = "cmake --build build"
install = "DESTDIR=/out cmake --install build"
[deps]
# Lo que exige su CMakeLists (ECM · Qt6 Core/Qml/Gui/Widgets/Network/DBus · KF6 CoreAddons/I18n/
# Config/Kirigami/Notifications/KIO/Service) MÁS la clausura de KIO, que es la dep pesada y arrastra
# media capa 2 de KF6. Las deps de hammer NO son transitivas: va entera.
build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtdeclarative", "qtsvg", "qttools",
"dbus", "extra-cmake-modules", "gettext-tiny", "mesa", "libdrm", "libxkbcommon", "wayland",
"kcoreaddons", "ki18n", "kconfig", "kirigami", "knotifications", "kio", "kservice",
# ⚠ Tres MÓDULOS QML que el CMake exige y que no salen de la lista de find_package: los pide
# con `ecm_find_qmlmodule`, o sea que comprueba que el import exista, no que la librería esté
# enlazada. Lo dijo el feature_summary al abortar: org.kde.prison, org.kde.kitemmodels y
# org.kde.kcmutils. Las tres recetas ya existían y publican su qmldir; sólo faltaba pedirlas.
"prison", "kitemmodels", "kcmutils", "kdeclarative", "kpackage",
"kcodecs", "kwidgetsaddons", "karchive", "solid", "kguiaddons", "kwindowsystem", "kdbusaddons",
"kitemviews", "kcrash", "kcolorscheme", "kcompletion", "kconfigwidgets", "kjobwidgets",
"kbookmarks", "sonnet", "ktextwidgets", "kiconthemes", "kglobalaccel", "kxmlgui", "kwallet",
"util-linux", "libgcrypt", "libgpg-error",
"libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", "libXi", "libxcb"]