|
| 1 | +# Copyright 1999-2025 Gentoo Authors |
| 2 | +# Distributed under the terms of the GNU General Public License v2 |
| 3 | + |
| 4 | +EAPI=8 |
| 5 | + |
| 6 | +ECM_HANDBOOK="optional" |
| 7 | +ECM_TEST="true" |
| 8 | +KFMIN=6.16.0 |
| 9 | +QTMIN=6.8.1 |
| 10 | +inherit ecm fcaps plasma.kde.org xdg |
| 11 | + |
| 12 | +DESCRIPTION="Flexible, composited Window Manager for windowing systems on Linux" |
| 13 | + |
| 14 | +LICENSE="GPL-2+" |
| 15 | +SLOT="6" |
| 16 | +KEYWORDS="~amd64" |
| 17 | +IUSE="accessibility activities gles2-only lock screencast +shortcuts systemd X" |
| 18 | + |
| 19 | +RESTRICT="test" |
| 20 | + |
| 21 | +# qtbase slot op: GuiPrivate use in tabbox |
| 22 | +# qtbase[X]: private/qtx11extras_p.h in src/helpers/killer |
| 23 | +COMMON_DEPEND=" |
| 24 | + dev-libs/libei |
| 25 | + >=dev-libs/libinput-1.27:= |
| 26 | + >=dev-libs/wayland-1.24.0 |
| 27 | + >=dev-qt/qt5compat-${QTMIN}:6[qml] |
| 28 | + >=dev-qt/qtbase-${QTMIN}:6=[accessibility=,gles2-only=,gui,libinput,opengl,wayland,widgets,X] |
| 29 | + >=dev-qt/qtdeclarative-${QTMIN}:6 |
| 30 | + >=dev-qt/qtsensors-${QTMIN}:6 |
| 31 | + >=dev-qt/qtshadertools-${QTMIN}:6 |
| 32 | + >=dev-qt/qtsvg-${QTMIN}:6 |
| 33 | + >=dev-qt/qttools-${QTMIN}:6[widgets] |
| 34 | + >=kde-frameworks/kauth-${KFMIN}:6 |
| 35 | + >=kde-frameworks/kcmutils-${KFMIN}:6 |
| 36 | + >=kde-frameworks/kcolorscheme-${KFMIN}:6 |
| 37 | + >=kde-frameworks/kconfig-${KFMIN}:6[qml] |
| 38 | + >=kde-frameworks/kcoreaddons-${KFMIN}:6 |
| 39 | + >=kde-frameworks/kcrash-${KFMIN}:6 |
| 40 | + >=kde-frameworks/kdbusaddons-${KFMIN}:6 |
| 41 | + >=kde-frameworks/kdeclarative-${KFMIN}:6 |
| 42 | + >=kde-frameworks/kglobalaccel-${KFMIN}:6 |
| 43 | + >=kde-frameworks/kguiaddons-${KFMIN}:6[wayland] |
| 44 | + >=kde-frameworks/ki18n-${KFMIN}:6 |
| 45 | + >=kde-frameworks/kidletime-${KFMIN}:6=[wayland] |
| 46 | + >=kde-frameworks/knewstuff-${KFMIN}:6 |
| 47 | + >=kde-frameworks/knotifications-${KFMIN}:6 |
| 48 | + >=kde-frameworks/kpackage-${KFMIN}:6 |
| 49 | + >=kde-frameworks/kservice-${KFMIN}:6 |
| 50 | + >=kde-frameworks/ksvg-${KFMIN}:6 |
| 51 | + >=kde-frameworks/kwidgetsaddons-${KFMIN}:6 |
| 52 | + >=kde-frameworks/kwindowsystem-${KFMIN}:6=[wayland] |
| 53 | + >=kde-frameworks/kxmlgui-${KFMIN}:6 |
| 54 | + >=kde-plasma/kdecoration-${KDE_CATV}:6 |
| 55 | + >=kde-plasma/kwayland-${KDE_CATV}:6 |
| 56 | + media-libs/fontconfig |
| 57 | + media-libs/freetype |
| 58 | + media-libs/lcms:2 |
| 59 | + media-libs/libcanberra |
| 60 | + >=media-libs/libdisplay-info-0.2.0:= |
| 61 | + media-libs/libepoxy |
| 62 | + media-libs/libglvnd |
| 63 | + >=media-libs/mesa-24.1.0_rc1[opengl,wayland] |
| 64 | + virtual/libudev:= |
| 65 | + >=x11-libs/libdrm-2.4.118 |
| 66 | + >=x11-libs/libxcb-1.10:= |
| 67 | + >=x11-libs/libxcvt-0.1.1 |
| 68 | + >=x11-libs/libxkbcommon-1.5.0 |
| 69 | + x11-libs/xcb-util-cursor |
| 70 | + x11-libs/xcb-util-wm |
| 71 | + accessibility? ( media-libs/libqaccessibilityclient:6 ) |
| 72 | + activities? ( >=kde-plasma/plasma-activities-${KDE_CATV}:6 ) |
| 73 | + lock? ( >=kde-plasma/kscreenlocker-${KDE_CATV}:6 ) |
| 74 | + screencast? ( >=media-video/pipewire-1.2.0:= ) |
| 75 | + shortcuts? ( >=kde-plasma/kglobalacceld-${KDE_CATV}:6 ) |
| 76 | + X? ( |
| 77 | + x11-libs/libX11 |
| 78 | + x11-libs/libXi |
| 79 | + x11-libs/libXres |
| 80 | + x11-libs/xcb-util-keysyms |
| 81 | + ) |
| 82 | +" |
| 83 | +RDEPEND="${COMMON_DEPEND} |
| 84 | + !kde-plasma/kdeplasma-addons:5 |
| 85 | + >=kde-frameworks/kirigami-${KFMIN}:6 |
| 86 | + >=kde-frameworks/kitemmodels-${KFMIN}:6 |
| 87 | + >=kde-plasma/aurorae-${KDE_CATV}:6 |
| 88 | + >=kde-plasma/breeze-${KDE_CATV}:6 |
| 89 | + >=kde-plasma/libplasma-${KDE_CATV}:6[activities(+)?] |
| 90 | + sys-apps/hwdata |
| 91 | + X? ( >=x11-base/xwayland-23.1.0[libei] ) |
| 92 | +" |
| 93 | +RDEPEND+=" || ( >=dev-qt/qtbase-6.10:6[wayland] <dev-qt/qtwayland-6.10:6 )" |
| 94 | +DEPEND="${COMMON_DEPEND} |
| 95 | + >=dev-libs/plasma-wayland-protocols-1.18.0 |
| 96 | + >=dev-libs/wayland-protocols-1.44 |
| 97 | + >=dev-qt/qtbase-${QTMIN}:6[concurrent] |
| 98 | + test? ( screencast? ( >=kde-plasma/kpipewire-${KDE_CATV}:6 ) ) |
| 99 | + X? ( x11-base/xorg-proto ) |
| 100 | +" |
| 101 | +BDEPEND=" |
| 102 | + >=dev-qt/qtbase-${QTMIN}:6[wayland] |
| 103 | + dev-util/wayland-scanner |
| 104 | + >=kde-frameworks/kcmutils-${KFMIN}:6 |
| 105 | +" |
| 106 | +BDEPEND+=" || ( >=dev-qt/qtbase-6.10:6[wayland] <dev-qt/qtwayland-6.10:6 )" |
| 107 | + |
| 108 | +# https://bugs.gentoo.org/941628 |
| 109 | +# -m 0755 to avoid suid with USE="-filecaps" |
| 110 | +FILECAPS=( -m 0755 cap_sys_nice=ep usr/bin/kwin_wayland ) |
| 111 | + |
| 112 | +src_prepare() { |
| 113 | + ecm_src_prepare |
| 114 | + |
| 115 | + # TODO: try to get a build switch upstreamed |
| 116 | + if ! use screencast; then |
| 117 | + sed -e "s/^pkg_check_modules.*PipeWire/#&/" -i CMakeLists.txt || die |
| 118 | + fi |
| 119 | + |
| 120 | + # TODO: try to get a build switch upstreamed |
| 121 | + if ! use systemd; then |
| 122 | + sed -e "s/^pkg_check_modules.*libsystemd/#&/" -i CMakeLists.txt || die |
| 123 | + fi |
| 124 | +} |
| 125 | + |
| 126 | +src_configure() { |
| 127 | + local mycmakeargs=( |
| 128 | + # KWIN_BUILD_DECORATIONS exists |
| 129 | + # KWIN_BUILD_NOTIFICATIONS exists, but kdeclarative still hard-depends on it |
| 130 | + $(cmake_use_find_package accessibility QAccessibilityClient6) |
| 131 | + $(cmake_use_find_package activities PlasmaActivities) |
| 132 | + -DKWIN_BUILD_SCREENLOCKER=$(usex lock) |
| 133 | + -DKWIN_BUILD_GLOBALSHORTCUTS=$(usex shortcuts) |
| 134 | + -DKWIN_BUILD_X11=$(usex X) |
| 135 | + ) |
| 136 | + |
| 137 | + ecm_src_configure |
| 138 | +} |
| 139 | + |
| 140 | +pkg_postinst() { |
| 141 | + xdg_pkg_postinst |
| 142 | + fcaps_pkg_postinst |
| 143 | +} |
0 commit comments