File kwin5.spec of Package kwin5

#
# spec file for package kwin5
#
# Copyright (c) 2016 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/
#


%define kf5_version 5.26.0
%bcond_without lang
Name:           kwin5
Version:        5.8.2
Release:        0
%{!?_plasma5_version: %global _plasma5_version %{version}}
Summary:        KDE Window Manager
License:        GPL-2.0+
Group:          System/GUI/KDE
Url:            http://www.kde.org
Source:         http://download.kde.org/stable/plasma/%{version}/kwin-%{version}.tar.xz
# PATCH-FIX-UPSTREAM 0001-platformx-x11-Add-a-freeze-protection-against-OpenGL.patch boo#1005323 -- Adds a thread to detect kwin freezing and recover from it
Patch0:         0001-platformx-x11-Add-a-freeze-protection-against-OpenGL.patch
# PATCH-FIX-UPSTREAM 0002-platformx-x11-Add-a-freeze-protection-against-OpenGL.patch boo#1005323 -- Adds a thread to detect kwin freezing and recover from it
Patch1:         0002-platformx-x11-Add-a-freeze-protection-against-OpenGL.patch
# PATCH-FIX-UPSTREAM 0003-Remove-most-overhead-caused-by-the-freeze-detection-.patch boo#1005323 -- Use only one thread for all frames
Patch2:         0003-Remove-most-overhead-caused-by-the-freeze-detection-.patch
# PATCH-FIX-UPSTREAM 0004-Do-a-count-down-of-framesToTestForSafety.patch boo#1005323 -- Do a countdown instead of counting up
Patch3:         0004-Do-a-count-down-of-framesToTestForSafety.patch
# PATCH-FIX-UPSTREAM 0005-Use-only-one-timer-to-detect-freezes-and-other-optim.patch boo#1005323 -- Use only one timer 
Patch4:         0005-Use-only-one-timer-to-detect-freezes-and-other-optim.patch
# PATCH-FIX-UPSTREAM 0006-Test-3-frames-for-freezes-by-default.patch boo#1005323 -- Test only 3 frames by default, which is enough to detect freezes
Patch5:         0006-Test-3-frames-for-freezes-by-default.patch
# PATCH-FIX-UPSTREAM 0007-Only-call-PostLastGuardedFrame-when-OpenGLCompositin.patch boo#1005323 -- Only call PostLastGuardedFrame when OpenGLCompositing is set
Patch6:         0007-Only-call-PostLastGuardedFrame-when-OpenGLCompositin.patch
BuildRequires:  extra-cmake-modules >= 0.0.11
BuildRequires:  fdupes
BuildRequires:  kf5-filesystem
BuildRequires:  libQt5Core-private-headers-devel >= 5.4.0
BuildRequires:  libQt5Gui-private-headers-devel >= 5.4.0
BuildRequires:  libQt5PlatformSupport-private-headers-devel >= 5.4.0
BuildRequires:  libepoxy-devel
BuildRequires:  pkgconfig
BuildRequires:  xz
BuildRequires:  cmake(Breeze) >= %{_plasma5_version}
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(KF5Wayland) >= %{_plasma5_version}
BuildRequires:  cmake(KF5WidgetsAddons) >= %{kf5_version}
BuildRequires:  cmake(KF5WindowSystem) >= %{kf5_version}
BuildRequires:  cmake(KF5XmlGui) >= %{kf5_version}
BuildRequires:  cmake(KScreenLocker) >= %{_plasma5_version}
BuildRequires:  cmake(Qt5Concurrent) >= 5.4.0
BuildRequires:  cmake(Qt5Core) >= 5.4.0
BuildRequires:  cmake(Qt5DBus) >= 5.4.0
BuildRequires:  cmake(Qt5Quick) >= 5.4.0
BuildRequires:  cmake(Qt5QuickWidgets) >= 5.4.0
BuildRequires:  cmake(Qt5Script) >= 5.4.0
BuildRequires:  cmake(Qt5UiTools) >= 5.4.0
BuildRequires:  cmake(Qt5Widgets) >= 5.4.0
BuildRequires:  cmake(Qt5X11Extras) >= 5.4.0
BuildRequires:  pkgconfig(fontconfig)
BuildRequires:  pkgconfig(freetype2)
BuildRequires:  pkgconfig(gbm)
BuildRequires:  pkgconfig(ice)
BuildRequires:  pkgconfig(libdrm)
BuildRequires:  pkgconfig(sm)
BuildRequires:  pkgconfig(wayland-cursor) >= 1.2.0
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(x11-xcb)
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.5.0
# new default decoration
Requires:       breeze5-decoration
# 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 0%{?suse_version} != 1315 || 0%{?is_opensuse}
BuildRequires:  pkgconfig(wayland-egl)
%endif
%if 0%{?is_opensuse}
BuildRequires:  pkgconfig(libinput) >= 0.10
BuildRequires:  pkgconfig(libudev)
%endif
%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}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1

%build
  %cmake_kf5 -d build -- -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir}
  %make_jobs

%install
  %kf5_makeinstall -C build
%if %{with lang}
  %kf5_find_lang
%endif
  %fdupes %{buildroot}/%{_kf5_sharedir}/kwin/ %{buildroot}/%{_kf5_servicesdir}/

%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig

%files
%defattr(-,root,root)
%doc COPYING*
%{_kf5_bindir}/kwin*
%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
openSUSE Build Service is sponsored by