#TODO: KWin — full build with Qt6Quick/QML. Effect frames, scripted effects, OSD overlay, outline overlay all enabled. [source] tar = "https://invent.kde.org/plasma/kwin/-/archive/v6.3.4/kwin-v6.3.4.tar.gz" blake3 = "2aa1e234a75b0aa94f0da3a74d93e2a8e49b30a3afb12dc24b2ecd3abaa94e7f" [build] template = "custom" dependencies = [ "qtbase", "qtdeclarative", "qt5compat", "kf6-extra-cmake-modules", "kf6-kauth", "kf6-kcolorscheme", "kf6-kcompletion", "kf6-kconfig", "kf6-kconfigwidgets", "kf6-kcoreaddons", "kf6-kcrash", "kf6-kdbusaddons", "kf6-kglobalaccel", "kf6-kguiaddons", "kf6-ki18n", "kf6-kidletime", "kf6-kpackage", "kf6-kservice", "kf6-ksvg", "kf6-kwayland", "kf6-kwidgetsaddons", "kf6-kwindowsystem", "kf6-kxmlgui", "kf6-kiconthemes", "kf6-kcmutils", "kf6-kdeclarative", "kf6-knotifications", "kf6-kio", "kf6-kitemmodels", "kf6-kitemviews", "kf6-kjobwidgets", "kf6-ktextwidgets", "kdecoration", "plasma-wayland-protocols", "libepoxy", "libdisplay-info", "libxcvt", "lcms2", "wayland-protocols", "redbear-compositor", "libxkbcommon", "libinput", "libudev-stub", "libxcb", ] script = """ DYNAMIC_INIT HOST_BUILD="${COOKBOOK_ROOT}/build/qt-host-build" STAGE="${COOKBOOK_STAGE}/usr" source "${COOKBOOK_ROOT}/local/scripts/lib/qt-sysroot.sh" redbear_qt_link_sysroot_dirs "${COOKBOOK_SYSROOT}" plugins mkspecs metatypes modules if [ -d "${COOKBOOK_SYSROOT}/plugins" ] && [ ! -L "${COOKBOOK_SYSROOT}/plugins" ]; then if [ -d "${COOKBOOK_SYSROOT}/usr/plugins" ]; then cp -an "${COOKBOOK_SYSROOT}/plugins/." "${COOKBOOK_SYSROOT}/usr/plugins/" 2>/dev/null || true rm -rf "${COOKBOOK_SYSROOT}/plugins" ln -s usr/plugins "${COOKBOOK_SYSROOT}/plugins" fi fi cp -a "${COOKBOOK_ROOT}/recipes/libs/freetype2/target/x86_64-unknown-redox/stage/usr/." "${COOKBOOK_SYSROOT}/" 2>/dev/null || true cp -a "${COOKBOOK_ROOT}/recipes/dev/fontconfig/target/x86_64-unknown-redox/stage/usr/." "${COOKBOOK_SYSROOT}/" 2>/dev/null || true cp -rn "${HOST_BUILD}/include/QtGui/6.11.0/QtGui/private/." "${COOKBOOK_SYSROOT}/include/QtGui/6.11.0/QtGui/private/" 2>/dev/null || true FT2_DIR="${COOKBOOK_ROOT}/recipes/libs/freetype2/target/x86_64-unknown-redox/stage/usr" FC_DIR="${COOKBOOK_ROOT}/recipes/dev/fontconfig/target/x86_64-unknown-redox/stage/usr" CROSS_PKGCONFIG="${COOKBOOK_ROOT}/bin/x86_64-unknown-redox-pkg-config" sed -i 's/Canberra::Canberra/$,Canberra::Canberra,>/' \ "${COOKBOOK_SOURCE}/src/plugins/systembell/CMakeLists.txt" 2>/dev/null || true sed -i '/^[[:space:]]*UiTools$/d' "${COOKBOOK_SOURCE}/CMakeLists.txt" sed -i 's/find_package(Canberra REQUIRED)/find_package(Canberra QUIET)/' "${COOKBOOK_SOURCE}/CMakeLists.txt" sed -i 's/add_subdirectory(killer)/#add_subdirectory(killer) # disabled: X11-only/' "${COOKBOOK_SOURCE}/src/helpers/CMakeLists.txt" printf '%s\n' '#ifndef SUN_LEN' '#define SUN_LEN(s) (sizeof(*(s)) - sizeof((s)->sun_path) + strnlen((s)->sun_path, sizeof((s)->sun_path)))' '#endif' | cat - "${COOKBOOK_SOURCE}/src/helpers/wayland_wrapper/wl-socket.c" > /tmp/wlsocket.tmp && mv /tmp/wlsocket.tmp "${COOKBOOK_SOURCE}/src/helpers/wayland_wrapper/wl-socket.c" python3 -c " path = '$COOKBOOK_SOURCE/src/cursor.cpp' with open(path) as f: t = f.read() t = t.replace('#include ', '') with open(path, 'w') as f: f.write(t) " sed -i 's/message(FATAL_ERROR "Compiler does not support C++20 ranges")/message(WARNING "C++20 ranges test skipped — strtold toolchain issue")/' "${COOKBOOK_SOURCE}/CMakeLists.txt" sed -i '/#include "tabletmodemanager.h"/a #include ' \ "${COOKBOOK_SOURCE}/src/tabletmodemanager.cpp" 2>/dev/null || true sed -i '/#include "device.h"/a #include ' \ "${COOKBOOK_SOURCE}/src/backends/libinput/device.cpp" 2>/dev/null || true sed -i 's/accept4(socketDescriptor, nullptr, nullptr, SOCK_CLOEXEC)/accept(socketDescriptor, nullptr, nullptr)/' \ "${COOKBOOK_SOURCE}/src/wayland/display.cpp" 2>/dev/null || true echo '#ifndef F_ADD_SEALS #define F_ADD_SEALS 1033 #define F_GET_SEALS 1034 #define F_SEAL_SEAL 0x0001 #define F_SEAL_SHRINK 0x0002 #define F_SEAL_GROW 0x0004 #define F_SEAL_WRITE 0x0008 #endif' >> "${COOKBOOK_SYSROOT}/include/fcntl.h" printf '%s\n' '#define F_ADD_SEALS 1033' '#define F_GET_SEALS 1034' '#define F_SEAL_SEAL 0x0001' '#define F_SEAL_SHRINK 0x0002' '#define F_SEAL_GROW 0x0004' '#define F_SEAL_WRITE 0x0008' | cat - "${COOKBOOK_SOURCE}/src/utils/ramfile.cpp" > /tmp/ramfile.tmp && mv /tmp/ramfile.tmp "${COOKBOOK_SOURCE}/src/utils/ramfile.cpp" rm -f CMakeCache.txt rm -rf CMakeFiles rm -rf "${COOKBOOK_SOURCE}/po" HOST_SCANNER="${COOKBOOK_ROOT}/local/recipes/kde/kwin/target/qtwaylandscanner-host/qtwaylandscanner_kde" HOST_SCANNER_BUILD="${COOKBOOK_ROOT}/local/recipes/kde/kwin/target/qtwaylandscanner-host" mkdir -p "${HOST_SCANNER_BUILD}" env -u LDFLAGS -u LIBRARY_PATH -u PKG_CONFIG_PATH -u PKG_CONFIG_LIBDIR \ /usr/bin/pkg-config --exists Qt6Core 2>/dev/null && \ env -u LDFLAGS -u LIBRARY_PATH -u PKG_CONFIG_PATH -u PKG_CONFIG_LIBDIR \ g++ -std=c++20 -fPIC -o "${HOST_SCANNER_BUILD}/qtwaylandscanner_kde" \ "${COOKBOOK_SOURCE}/src/wayland/tools/qtwaylandscanner.cpp" \ $(env -u LDFLAGS -u LIBRARY_PATH -u PKG_CONFIG_PATH -u PKG_CONFIG_LIBDIR /usr/bin/pkg-config --cflags --libs Qt6Core) || \ env -u LDFLAGS -u LIBRARY_PATH g++ -std=c++20 -fPIC -o "${HOST_SCANNER_BUILD}/qtwaylandscanner_kde" \ "${COOKBOOK_SOURCE}/src/wayland/tools/qtwaylandscanner.cpp" \ -I"${HOST_BUILD}/include" -I"${HOST_BUILD}/include/QtCore" \ -DQT_CORE_LIB -L"${HOST_BUILD}/lib" -lQt6Core -Wl,-rpath,"${HOST_BUILD}/lib" cp -f /usr/bin/wayland-scanner "${COOKBOOK_SYSROOT}/bin/wayland-scanner" grep -q "strtold" "${COOKBOOK_SYSROOT}/include/stdlib.h" 2>/dev/null || sed -i '/^#endif/ i long double strtold(const char *nptr, char **endptr);' "${COOKBOOK_SYSROOT}/include/stdlib.h" cmake "${COOKBOOK_SOURCE}" \ -DCMAKE_TOOLCHAIN_FILE="${COOKBOOK_ROOT}/local/recipes/qt/redox-toolchain.cmake" \ -DQT_HOST_PATH="${HOST_BUILD}" \ -DKF6_HOST_TOOLING="${HOST_BUILD}/lib/cmake" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" \ -DPKG_CONFIG_EXECUTABLE="${CROSS_PKGCONFIG}" \ -DFREETYPE_LIBRARY="${FT2_DIR}/lib/libfreetype.so" \ -DFREETYPE_INCLUDE_DIRS="${FT2_DIR}/include/freetype2" \ -DFontconfig_LIBRARY="${FC_DIR}/lib/libfontconfig.so" \ -DFontconfig_INCLUDE_DIR="${FC_DIR}/include" \ -DBUILD_TESTING=OFF \ -DBUILD_QCH=OFF \ -DKWIN_BUILD_AUTO_ROTATION=OFF \ -DKWIN_BUILD_X11=OFF \ -DKWIN_BUILD_X11_BACKEND=OFF \ -DKWIN_BUILD_KCMS=OFF \ -DKWIN_BUILD_SCREENLOCKER=OFF \ -DKWIN_BUILD_TABBOX=OFF \ -DKWIN_BUILD_GLOBALSHORTCUTS=OFF \ -DKWIN_BUILD_RUNNERS=OFF \ -DKWIN_BUILD_NOTIFICATIONS=OFF \ -DKWIN_BUILD_ACTIVITIES=OFF \ -DKWIN_BUILD_EIS=OFF \ -DQt6GuiPrivate_DIR="${COOKBOOK_SYSROOT}/lib/cmake/Qt6GuiPrivate" \ -DQt6CorePrivate_DIR="${COOKBOOK_SYSROOT}/lib/cmake/Qt6CorePrivate" \ -DQT_FIND_PRIVATE_MODULES=ON \ -DQTWAYLANDSCANNER_KDE_EXECUTABLE="${HOST_SCANNER}" \ -DPLASMA_WAYLAND_PROTOCOLS_DIR="${COOKBOOK_SYSROOT}/usr/share/plasma-wayland-protocols" \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \ -DCMAKE_INSTALL_RPATH="/usr/lib" \ -Wno-dev cmake --build . -j${COOKBOOK_MAKE_JOBS} cmake --install . --prefix "${STAGE}" for bin in "${STAGE}/bin/"* "${STAGE}/lib/"lib*.so.*; do [ -f "${bin}" ] || continue patchelf --set-rpath "/usr/lib" "${bin}" 2>/dev/null || true done """ [package] dependencies = [ "redbear-compositor", ]