diff --git a/config/redbear-full.toml b/config/redbear-full.toml index ae0ba310..7636e6ec 100644 --- a/config/redbear-full.toml +++ b/config/redbear-full.toml @@ -72,6 +72,7 @@ kf6-kdeclarative = {} kf6-kcmutils = {} kf6-kwayland = {} kdecoration = {} +kf6-kded6 = {} # KWin Wayland compositor kwin = {} diff --git a/local/recipes/kde/kf6-kded6/recipe.toml b/local/recipes/kde/kf6-kded6/recipe.toml new file mode 100644 index 00000000..2252b63a --- /dev/null +++ b/local/recipes/kde/kf6-kded6/recipe.toml @@ -0,0 +1,54 @@ +#TODO: kded6 — KDE daemon for module loading and D-Bus service management. +[source] +tar = "https://invent.kde.org/frameworks/kded/-/archive/v6.10.0/kded-v6.10.0.tar.gz" + +[build] +template = "custom" +dependencies = [ + "qtbase", + "kf6-extra-cmake-modules", + "kf6-kconfig", + "kf6-kcoreaddons", + "kf6-kcrash", + "kf6-kdbusaddons", + "kf6-kservice", +] +script = """ +DYNAMIC_INIT + +HOST_BUILD="${COOKBOOK_ROOT}/build/qt-host-build" + +for qtdir in plugins mkspecs metatypes modules; do + if [ -d "${COOKBOOK_SYSROOT}/usr/${qtdir}" ] && [ ! -e "${COOKBOOK_SYSROOT}/${qtdir}" ]; then + ln -s "usr/${qtdir}" "${COOKBOOK_SYSROOT}/${qtdir}" + fi +done + +if [ -d "${COOKBOOK_SYSROOT}/usr/plugins" ] && [ ! -e "${COOKBOOK_SYSROOT}/plugins" ]; then + ln -s "usr/plugins" "${COOKBOOK_SYSROOT}/plugins" +fi + +sed -i "s/^ecm_install_po_files_as_qm/#ecm_install_po_files_as_qm/" \ + "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true +sed -i 's/^ki18n_install(po)/#ki18n_install(po)/' \ + "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true + +cmake "${COOKBOOK_SOURCE}" \ + -GNinja \ + -DCMAKE_TOOLCHAIN_FILE="${COOKBOOK_ROOT}/local/recipes/qt/redox-toolchain.cmake" \ + -DQT_HOST_PATH="${HOST_BUILD}" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" \ + -DBUILD_TESTING=OFF \ + -DBUILD_QCH=OFF \ + -Wno-dev + +cmake --build . -j${COOKBOOK_MAKE_JOBS} +DESTDIR="${COOKBOOK_STAGE}" cmake --install . --prefix /usr + +for lib in "${COOKBOOK_STAGE}/usr/lib/"libKF6*.so.*; do + [ -f "${lib}" ] || continue + patchelf --remove-rpath "${lib}" 2>/dev/null || true +done +""" diff --git a/local/recipes/kde/kirigami/recipe.toml b/local/recipes/kde/kirigami/recipe.toml index 702ebda3..8b635b57 100644 --- a/local/recipes/kde/kirigami/recipe.toml +++ b/local/recipes/kde/kirigami/recipe.toml @@ -1,4 +1,4 @@ -#TODO: Kirigami — QtQuick lightweight UI framework. QML-heavy but required by KDE Plasma. +#TODO: Kirigami — QtQuick lightweight UI framework. Required by KDE Plasma. [source] tar = "https://invent.kde.org/frameworks/kirigami/-/archive/v6.10.0/kirigami-v6.10.0.tar.gz" @@ -7,6 +7,8 @@ template = "custom" dependencies = [ "qtbase", "qtdeclarative", + "qtshadertools", + "qtsvg", "kf6-extra-cmake-modules", "kf6-kcoreaddons", "kf6-ki18n", @@ -24,44 +26,33 @@ for qtdir in plugins mkspecs metatypes modules; do fi done -STAGE="${COOKBOOK_STAGE}/usr" -mkdir -p "${STAGE}/lib/cmake/KF6Kirigami" -mkdir -p "${STAGE}/lib/cmake/KF6Kirigami2" +if [ -d "${COOKBOOK_SYSROOT}/usr/plugins" ] && [ ! -e "${COOKBOOK_SYSROOT}/plugins" ]; then + ln -s "usr/plugins" "${COOKBOOK_SYSROOT}/plugins" +fi -cat > "${STAGE}/lib/cmake/KF6Kirigami/KF6KirigamiConfig.cmake" << 'EOFCFG' -add_library(KF6::Kirigami INTERFACE IMPORTED) -EOFCFG +sed -i "s/^ecm_install_po_files_as_qm/#ecm_install_po_files_as_qm/" \ + "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true +sed -i 's/^ki18n_install(po)/#ki18n_install(po)/' \ + "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true -cat > "${STAGE}/lib/cmake/KF6Kirigami/KF6KirigamiConfigVersion.cmake" << 'EOFVER' -set(PACKAGE_VERSION "6.10.0") -set(PACKAGE_VERSION_COMPATIBLE TRUE) -EOFVER +cmake "${COOKBOOK_SOURCE}" \ + -GNinja \ + -DCMAKE_TOOLCHAIN_FILE="${COOKBOOK_ROOT}/local/recipes/qt/redox-toolchain.cmake" \ + -DQT_HOST_PATH="${HOST_BUILD}" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" \ + -DBUILD_TESTING=OFF \ + -DBUILD_QCH=OFF \ + -DWITH_X11=OFF \ + -DKDE_INSTALL_QMLDIR=/usr/lib/qt6/qml \ + -Wno-dev -cat > "${STAGE}/lib/cmake/KF6Kirigami/KF6KirigamiTargets.cmake" << 'EOFTGT' -add_library(KF6::Kirigami INTERFACE IMPORTED) -EOFTGT +cmake --build . -j${COOKBOOK_MAKE_JOBS} +DESTDIR="${COOKBOOK_STAGE}" cmake --install . --prefix /usr -cat > "${STAGE}/lib/cmake/KF6Kirigami2/KF6Kirigami2Config.cmake" << 'EOFCFG2' -add_library(KF6::Kirigami2 INTERFACE IMPORTED) -EOFCFG2 - -cat > "${STAGE}/lib/cmake/KF6Kirigami2/KF6Kirigami2ConfigVersion.cmake" << 'EOFVER2' -set(PACKAGE_VERSION "6.10.0") -set(PACKAGE_VERSION_COMPATIBLE TRUE) -EOFVER2 - -mkdir -p "${STAGE}/lib" -echo "/* dummy */" > "${STAGE}/lib/libKirigami.a" - -mkdir -p "${STAGE}/share/ECM/kde-modules" -cat > "${STAGE}/share/ECM/kde-modules/KDEFrameworkCompilerSettings.cmake" << 'EOFKDE' -macro(kde_configure_git_pre_commit_hook) -endmacro() -macro(ecm_set_disabled_deprecation_versions) -endmacro() -EOFKDE - -echo "=== Kirigami stub installation complete ===" -echo "Note: Kirigami is QML-based and cannot be built on Redox without Qt6Quick." -echo "Dummy cmake configs installed for dependency resolution." +for lib in "${COOKBOOK_STAGE}/usr/lib/"libKF6*.so.*; do + [ -f "${lib}" ] || continue + patchelf --remove-rpath "${lib}" 2>/dev/null || true +done """ diff --git a/local/recipes/system/redbear-dbus-services/source/session-services/org.kde.kded6.service b/local/recipes/system/redbear-dbus-services/source/session-services/org.kde.kded6.service index e9d7f6b3..77d8b573 100644 --- a/local/recipes/system/redbear-dbus-services/source/session-services/org.kde.kded6.service +++ b/local/recipes/system/redbear-dbus-services/source/session-services/org.kde.kded6.service @@ -1,4 +1,3 @@ -#TODO: kded6 daemon not yet built for Redox — D-Bus activation will fail until it exists [D-BUS Service] Name=org.kde.kded6 Exec=/usr/bin/kded6