File kwin5.spec of Package kwin5
#
# spec file for package kwin5
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%global kf5_version 5.34.0
%global qt5_version 5.7.0
%global wayland (0%{?suse_version} >= 1330)
%bcond_without lang
Name: kwin5
Version: 5.12.8
Release: 0
# Full Plasma 5 version (e.g. 5.8.95)
%{!?_plasma5_bugfix: %global _plasma5_bugfix %{version}}
# Lasted ABI-stable Plasma (e.g. 5.8 in KF5, but 5.8.95 in KUF)
%{!?_plasma5_version: %global _plasma5_version %(echo %{_plasma5_bugfix} | awk -F. '{print $1"."$2}')}
Summary: KDE Window Manager
License: GPL-2.0-or-later AND GPL-3.0-or-later
Group: System/GUI/KDE
Url: http://www.kde.org
Source: https://download.kde.org/stable/plasma/%{version}/kwin-%{version}.tar.xz
# PATCH-FIX-UPSTREAM
Patch0: Set-m_windowmode-in-screenshotWindowUnderCursor.patch
Patch1: Properly-restore-current-desktop-from-session.patch
Patch2: Fix-global-shortcuts-display-name-for-kwin-changing.patch
# PATCH-FIX-OPENSUSE
Patch100: 0001-Revert-Make-WindowSwitching-Alt-Tab-the-default-left.patch
# PATCH-FEATURE-OPENSUSE
Patch101: 0001-Use-Xauthority-for-Xwayland.patch
BuildRequires: extra-cmake-modules >= 0.0.11
BuildRequires: fdupes
BuildRequires: kf5-filesystem
BuildRequires: libQt5Core-private-headers-devel >= 5.5.0
BuildRequires: libQt5Gui-private-headers-devel >= 5.5.0
BuildRequires: libQt5PlatformSupport-private-headers-devel >= 5.5.0
BuildRequires: libcap-devel
BuildRequires: libcap-progs
BuildRequires: libepoxy-devel
BuildRequires: pkgconfig
BuildRequires: xz
%if 0%{?suse_version} < 1330
# It does not build with the default compiler (GCC 4.8) on Leap 42.x
%if 0%{?sle_version} < 120300
BuildRequires: gcc6-c++
%else
BuildRequires: gcc7-c++
%endif
%endif
BuildRequires: cmake(Breeze) >= 5.9.0
BuildRequires: cmake(KDecoration2) >= %{_plasma5_version}
BuildRequires: cmake(KF5Activities) >= %{kf5_version}
BuildRequires: cmake(KF5Completion) >= %{kf5_version}
BuildRequires: cmake(KF5Config) >= %{kf5_version}
BuildRequires: cmake(KF5ConfigWidgets) >= %{kf5_version}
BuildRequires: cmake(KF5CoreAddons) >= %{kf5_version}
BuildRequires: cmake(KF5Crash) >= %{kf5_version}
BuildRequires: cmake(KF5Declarative) >= %{kf5_version}
BuildRequires: cmake(KF5DocTools) >= %{kf5_version}
BuildRequires: cmake(KF5GlobalAccel) >= %{kf5_version}
BuildRequires: cmake(KF5I18n) >= %{kf5_version}
BuildRequires: cmake(KF5IconThemes) >= %{kf5_version}
BuildRequires: cmake(KF5IdleTime) >= %{kf5_version}
BuildRequires: cmake(KF5Init) >= %{kf5_version}
BuildRequires: cmake(KF5KCMUtils) >= %{kf5_version}
BuildRequires: cmake(KF5KIO) >= %{kf5_version}
BuildRequires: cmake(KF5NewStuff) >= %{kf5_version}
BuildRequires: cmake(KF5Notifications) >= %{kf5_version}
BuildRequires: cmake(KF5Package) >= %{kf5_version}
BuildRequires: cmake(KF5Plasma) >= %{kf5_version}
BuildRequires: cmake(KF5Service) >= %{kf5_version}
BuildRequires: cmake(KF5TextWidgets) >= %{kf5_version}
BuildRequires: cmake(KF5Wayland) >= %{kf5_version}
BuildRequires: cmake(KF5WidgetsAddons) >= %{kf5_version}
BuildRequires: cmake(KF5WindowSystem) >= %{kf5_version}
BuildRequires: cmake(KF5XmlGui) >= %{kf5_version}
BuildRequires: cmake(KScreenLocker) >= %{_plasma5_version}
BuildRequires: cmake(Qt5Concurrent) >= %{qt5_version}
BuildRequires: cmake(Qt5Core) >= %{qt5_version}
BuildRequires: cmake(Qt5DBus) >= %{qt5_version}
BuildRequires: cmake(Qt5Quick) >= %{qt5_version}
BuildRequires: cmake(Qt5QuickWidgets) >= %{qt5_version}
BuildRequires: cmake(Qt5Script) >= %{qt5_version}
BuildRequires: cmake(Qt5Sensors) >= %{qt5_version}
BuildRequires: cmake(Qt5UiTools) >= %{qt5_version}
BuildRequires: cmake(Qt5Widgets) >= %{qt5_version}
BuildRequires: cmake(Qt5X11Extras) >= %{qt5_version}
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(ice)
BuildRequires: pkgconfig(sm)
BuildRequires: pkgconfig(wayland-cursor) >= 1.2.0
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(x11-xcb)
BuildRequires: pkgconfig(xau)
BuildRequires: pkgconfig(xcb) >= 1.10
BuildRequires: pkgconfig(xcb-composite) >= 1.10
BuildRequires: pkgconfig(xcb-cursor)
BuildRequires: pkgconfig(xcb-damage) >= 1.10
BuildRequires: pkgconfig(xcb-glx) >= 1.10
BuildRequires: pkgconfig(xcb-icccm)
BuildRequires: pkgconfig(xcb-image)
BuildRequires: pkgconfig(xcb-keysyms)
BuildRequires: pkgconfig(xcb-randr) >= 1.10
BuildRequires: pkgconfig(xcb-render) >= 1.10
BuildRequires: pkgconfig(xcb-shape) >= 1.10
BuildRequires: pkgconfig(xcb-shm) >= 1.10
BuildRequires: pkgconfig(xcb-sync) >= 1.10
BuildRequires: pkgconfig(xcb-xfixes) >= 1.10
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(xkbcommon) >= 0.7.0
%if %{wayland}
BuildRequires: pkgconfig(gbm)
BuildRequires: pkgconfig(libdrm) >= 2.4.62
BuildRequires: pkgconfig(libinput) >= 1.2
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(wayland-egl)
%endif
# new default decoration
Requires: breeze5-decoration >= %{_plasma5_version}
# Needed to show dialogs
Requires: kdialog
# Needed for effects KCM at runtime
Requires: libQt5Multimedia5
%requires_eq libQt5Core5
%requires_eq libQt5Gui5
Provides: windowmanager
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%requires_ge Mesa-libEGL1
%requires_ge libKF5WindowSystem5
%requires_ge plasma-framework
%if %{with lang}
Recommends: %{name}-lang
%endif
%description
KWin is the window manager of the K desktop environment.
%package devel
Summary: KDE Window Manager - development files
Group: Development/Libraries/KDE
Requires: %{name} = %{version}
Requires: libkdecoration2-devel >= %{_plasma5_version}
Conflicts: kdebase4-workspace-devel
%description devel
KWin is the window manager of the K desktop environment.
This package provides development files.
%lang_package
%prep
%setup -q -n kwin-%{version}
%autopatch -p1
%build
%if 0%{?suse_version} < 1330
# It does not build with the default compiler (GCC 4.8) on Leap 42.x
%if 0%{?sle_version} < 120300
export CC=gcc-6
export CXX=g++-6
%else
export CC=gcc-7
export CXX=g++-7
%endif
%endif
%cmake_kf5 -d build -- -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir}
%make_jobs
%install
%kf5_makeinstall -C build
%if !%{wayland}
rm -f %{buildroot}%{_kf5_bindir}/kwin_wayland
%endif
%if %{with lang}
%kf5_find_lang
%endif
%fdupes %{buildroot}%{_kf5_libdir} %{buildroot}%{_datadir}
%post
/sbin/ldconfig
%if %{wayland}
%set_permissions %{_kf5_bindir}/kwin_wayland
%endif
%postun -p /sbin/ldconfig
%if %{wayland}
%verifyscript
%verify_permissions -e %{_kf5_bindir}/kwin_wayland
%endif
%files
%defattr(-,root,root)
%doc COPYING*
%if %{wayland}
%verify(not caps) %{_kf5_bindir}/kwin_wayland
%endif
%{_kf5_bindir}/kwin_x11
%config %{_kf5_configdir}/*.knsrc
%config %{_kf5_configdir}/org_kde_kwin.categories
%{_kf5_libdir}/kconf_update_bin/
%{_kf5_libdir}/libexec/
%{_kf5_libdir}/libkwin.so.*
%{_kf5_libdir}/libkdeinit5_kwin*.so
%{_kf5_libdir}/libkwin4_effect_builtins.so.*
%{_kf5_libdir}/libkwineffects.so.*
%{_kf5_libdir}/libkwingl*utils.so.*
%{_kf5_libdir}/libkwinxrenderutils.so.*
%{_kf5_plugindir}/
%{_kf5_qmldir}/
%{_kf5_sharedir}/config.kcfg/
%{_kf5_sharedir}/icons/hicolor/
%{_kf5_servicesdir}/
%{_kf5_servicetypesdir}/
%{_kf5_sharedir}/kwin/
%{_kf5_sharedir}/kwincompositing/
%{_kf5_notifydir}/
%doc %{_kf5_htmldir}/
%files devel
%defattr(-,root,root)
%doc COPYING*
%{_kf5_prefix}/include/*.h
%{_kf5_libdir}/libkwin4_effect_builtins.so
%{_kf5_libdir}/libkwineffects.so
%{_kf5_libdir}/libkwingl*utils.so
%{_kf5_libdir}/libkwinxrenderutils.so
%{_kf5_libdir}/cmake/KWinDBusInterface/
%{_kf5_sharedir}/dbus-1/interfaces/
%if %{with lang}
%files lang -f %{name}.lang
%doc COPYING*
%endif
%changelog