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
69 lines
3.5 KiB
TOML
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"]
|