gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

⎇ main recipes/incoming-kde/plasma-desktop.toml TOML · 109 siq'ikuna · 6.8 KB Ñawpa willay ch'uya

licencias: campo `license` en la receta — de 0 a 228 de 1141, sin re-hashear nada 346cd5970 · sergio ·

1# plasma-desktop 6.7.2 — provee el SHELL org.kde.plasma.desktop (corona/containment de escritorio) +
2# los KCM del System Settings + kcminit. Es lo que separa "plasmashell corre" de "escritorio prende":
3# sin él plasmashell reporta `starting invalid corona "org.kde.plasma.desktop"`. Patrón KF6 (dynamic,
4# wrapper zig filtra -Wl,--fatal-warnings, Ninja, rm -rf po, WITH_X11=OFF Wayland-puro).
5name    = "plasma-desktop"
6version = "6.7.2"
7license = "GPL-2.0-or-later"
8
9[source]
10tarball = "https://download.kde.org/stable/plasma/6.7.2/plasma-desktop-6.7.2.tar.xz"
11sha256  = "6d1a0d5970b553329d26268f9eb3c84aa83358238afcfc2f8691147046569831"
12
13[build]
14compiler = "zig-cc"
15target   = "x86_64-linux-musl"
16link     = "dynamic"
17flags    = []
18
19[build.phases]
20configure = '''
21rm -rf po
22# NetworkManagerQt REQUIRED → glib rabbit-hole (como plasma-workspace); DocTools → docs. A opcional.
23sed -i 's/find_package(KF6NetworkManagerQt \([^)]*\)REQUIRED)/find_package(KF6NetworkManagerQt \1)/' CMakeLists.txt
24sed -i 's/find_package(KF6NetworkManagerQt REQUIRED)/find_package(KF6NetworkManagerQt)/' CMakeLists.txt
25# KF6DocTools: find_package (línea 104) ya es opcional; el bloqueo es su set_package_properties TYPE
26# REQUIRED (feature_summary aborta). A OPTIONAL (docs, no runtime; kdoctools_install(po) ya está gated).
27sed -i '/set_package_properties(KF6DocTools/,/)/ s/TYPE REQUIRED/TYPE OPTIONAL/' CMakeLists.txt
28# doc/ construye handbooks con kdoctools_create_handbook (KF6DocTools, ahora opcional/ausente) y no está
29# bien gated ⇒ falla. Docs no hacen falta para el shell. Removemos el subdir doc.
30sed -i '/add_subdirectory(doc)/d' CMakeLists.txt
31sed -i '/kdoctools_install(po)/d' CMakeLists.txt
32# kaccess (daemon accesibilidad) incluye un header generado por el KCM access (subdir kcms removido) ⇒
33# 'kcmaccessibilityactivationgestures.h' file not found. No hace falta para el shell. Removemos.
34sed -i '/add_subdirectory(kaccess)/d' CMakeLists.txt
35# runners/keys usa filteredmodel.h (generado por el KCM teclado removido). Los runners son plugins
36# krunner opcionales, no el shell. Removemos el subdir.
37sed -i '/add_subdirectory(runners)/d' CMakeLists.txt
38# imports/activitymanager provee el módulo QML org.kde.plasma.activityswitcher que Desktop.qml del shell
39# IMPORTA (sin él, el desktop no carga). switcherbackend.cpp incluye xwindowtasksmodel.h (X11), ausente en
40# plasma-workspace wayland-puro; y HAVE_X11 queda =1 (detecta las libs X11 de deps) pese a WITH_X11=OFF, así
41# que el guard #if HAVE_X11 no basta. Solución: borrar el include X11 y reemplazar sus usos por
42# WaylandTasksModel (que SÍ está y ya se usa en la rama wayland) — el drag-drop de ventanas anda igual.
43sed -i '\|#include <xwindowtasksmodel.h>|d' imports/activitymanager/switcherbackend.cpp
44sed -i 's/#if HAVE_X11/#if 0/g' imports/activitymanager/switcherbackend.cpp
45# applet pager: único que usa xwindowtasksmodel.h (X11, ausente en plasma-workspace wayland-puro; los
46# applets esenciales taskmanager/kickoff usan el genérico windowtasksmodel.h que SÍ está). Podamos pager.
47sed -i '/add_subdirectory(pager)/d' applets/CMakeLists.txt
48# libwacom (tableta gráfica) REQUIRED → hardware opcional, sin receta. Quitar REQUIRED del
49# pkg_check_modules del top-level CMakeLists (busybox grep del sandbox NO soporta --include, por eso
50# un grep -rl fallaba silenciosamente; sed directo sobre el fichero conocido).
51sed -i '/pkg_check_modules(LIBWACOM/ s/ REQUIRED//' CMakeLists.txt
52# KSMServerDBusInterface: mi plasma-workspace es wayland-puro (sin ksmserver, deprecado en Wayland) ⇒ no
53# provee ese cmake config. Su consumidor es el KCM de logout (subdir kcms, ya removido). A opcional.
54sed -i '/find_package(KSMServerDBusInterface/ s/ REQUIRED//' CMakeLists.txt
55# xkbregistry REQUIRED (lo consume el KCM de teclado, subdir kcms ya removido). A opcional.
56sed -i '/pkg_check_modules(XKBREGISTRY/ s/ REQUIRED//' CMakeLists.txt
57# El SHELL (org.kde.plasma.desktop) + containments + applets es lo que plasmashell necesita para la
58# corona; los KCMs (System Settings: kaccounts/wacom/touchpad/… con su infierno de deps opcionales)
59# NO. Desactivamos el subdir kcms para saltear ese tail de REQUIREDs (kaccounts6, libwacom, ibus, …).
60sed -i '/add_subdirectory(kcms)/d' CMakeLists.txt
61ZW="$PWD/.zwrap"; mkdir -p "$ZW"
62cat > "$ZW/cc"  <<'W'
63#!/bin/sh
64a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
65exec /opt/zig/zig cc -mcpu=baseline $a
66W
67cat > "$ZW/cxx" <<'W'
68#!/bin/sh
69a=""; for x in "$@"; do [ "$x" = "-Wl,--fatal-warnings" ] && continue; a="$a $x"; done
70exec /opt/zig/zig c++ -mcpu=baseline $a
71W
72chmod +x "$ZW/cc" "$ZW/cxx"
73PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig \
74cmake -B build -G Ninja -Wno-dev \
75  -DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \
76  -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr \
77  -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \
78  -DBUILD_TESTING=OFF \
79  -DWITH_X11=OFF
80'''
81compile = "cmake --build build"
82install = "DESTDIR=/out cmake --install build"
83
84[deps]
85build = ["cmake", "samurai", "python3", "pkgconf", "qtbase", "qtdeclarative", "qtsvg", "qtshadertools",
86  "qtwayland", "qttools", "dbus", "extra-cmake-modules", "gettext-tiny",
87  "mesa", "libdrm", "libxkbcommon", "wayland", "wayland-protocols", "plasma-wayland-protocols",
88  "kded", "krunner", "ktexteditor", "prison",
89  "plasma-activities-stats", "libksysguard", "libkscreen",
90  "layer-shell-qt", "kscreenlocker",
91  "karchive", "kauth", "kcoreaddons", "kcrash", "kdbusaddons", "kdeclarative", "kglobalaccel",
92  "kguiaddons", "kholidays", "ki18n", "kiconthemes", "kidletime", "kitemmodels", "kcmutils",
93  "kio", "knewstuff", "knotifications", "kpackage", "kparts", "ksvg", "ktextwidgets", "kwallet",
94  "kcolorscheme",
95  "libplasma", "kwayland", "plasma-activities", "knighttime", "kwin", "kirigami", "plasma5support",
96  "qqc2-desktop-style",
97  # plasma-workspace provee LibKLookAndFeel/LibKWorkspace/LibTaskManager/LibNotificationManager +
98  # KRunnerAppDBusInterface/KSMServerDBusInterface (todos CONFIG REQUIRED en plasma-desktop):
99  "plasma-workspace",
100  "kconfig", "kconfigwidgets", "kcodecs", "kcompletion", "kwidgetsaddons", "kitemviews",
101  "kxmlgui", "syntax-highlighting", "qtspeech", "qtmultimedia", "qt5compat", "knotifyconfig",
102  "sonnet", "kjobwidgets", "kbookmarks", "kservice", "attica", "solid", "kdnssd",
103  "kfilemetadata", "kwindowsystem", "kglobalacceld", "kdecoration", "kplotting",
104  "qtpositioning", "kholidays",
105  "libgcrypt", "libgpg-error", "openssl", "util-linux", "zlib", "zstd",
106  "libX11", "xorgproto", "libXau", "libXdmcp", "libXext", "libXrender", "libXfixes", "libXi",
107  "libxcb", "xcb-util", "xcb-util-cursor", "xcb-util-keysyms", "xcb-util-wm",
108  "xcb-util-image", "xcb-util-renderutil",
109  "libudev-zero", "pixman", "lcms2", "fontconfig", "freetype", "libcanberra", "xkeyboard-config"]