File compiz.spec of Package compiz

#
# spec file for package compiz
#
# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2010 Dominique Leuenberger, Amsterdam, Netherlands.
#
# 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 https://bugs.opensuse.org/
#


%define sover   0
%define _version 0.9.14.2
Name:           compiz
Version:        0.9.14.2
Release:        0
Summary:        OpenGL window and compositing manager
License:        GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT
Group:          System/GUI/Other
URL:            https://launchpad.net/compiz
Source:         https://launchpad.net/compiz/%{_version}/%{version}/+download/%{name}-%{version}.tar.xz
Source1:        %{name}-decorator.sh
Source2:        baselibs.conf
Source99:       compiz-rpmlintrc
# PATCH-FEATURE-OPENSUSE compiz-suse-defaults.patch sor.alexei@meowr.ru -- Compiz default settings for openSUSE.
Patch0:         %{name}-suse-defaults.patch
# PATCH-FIX-OPENSUSE compiz-no-gnome-terminal-key.patch sor.alexei@meowr.ru -- Remove gnomecompat terminal keybinding (removed from GNOME).
Patch1:         %{name}-no-gnome-terminal-key.patch
# PATCH-FIX-UPSTREAM compiz-fix-special-chars.patch herbert@13thfloor.at -- Fix a crash when special characters are displayed with the cairo decorator.
Patch2:         %{name}-fix-special-chars.patch
# PATCH-FIX-OPENSUSE compiz-gwd-fix-tooltips.patch sor.alexei@meowr.ru -- Fix button tooltips appearance in gtk-window-decorator.
Patch3:         %{name}-gwd-fix-tooltips.patch
# PATCH-FIX-UPSTREAM compiz-gwd-fix-maximised-topedge-clicks.patch oreaus@gmail.com -- Fix right click near top edge of maximized windows.
Patch4:         %{name}-gwd-fix-maximised-topedge-clicks.patch
BuildRequires:  boost-devel
BuildRequires:  cmake >= 3.17
BuildRequires:  fdupes
BuildRequires:  gcc-c++
BuildRequires:  gettext
BuildRequires:  gobject-introspection-devel
BuildRequires:  hicolor-icon-theme
BuildRequires:  intltool
BuildRequires:  lcov
BuildRequires:  libjpeg-devel
BuildRequires:  libtool
BuildRequires:  metacity-devel >= 3.22
BuildRequires:  pkgconfig
BuildRequires:  python3-Cython
BuildRequires:  python3-devel
BuildRequires:  update-desktop-files
BuildRequires:  pkgconfig(gio-2.0)
BuildRequires:  pkgconfig(glib-2.0)
BuildRequires:  pkgconfig(glibmm-2.4)
BuildRequires:  pkgconfig(gnome-keybindings)
BuildRequires:  pkgconfig(gtk+-3.0)
BuildRequires:  pkgconfig(ice)
BuildRequires:  pkgconfig(libnotify)
BuildRequires:  pkgconfig(libpng)
BuildRequires:  pkgconfig(librsvg-2.0)
BuildRequires:  pkgconfig(libstartup-notification-1.0)
BuildRequires:  pkgconfig(libwnck-3.0)
BuildRequires:  pkgconfig(libxml-2.0)
BuildRequires:  pkgconfig(libxslt)
BuildRequires:  pkgconfig(pangocairo)
BuildRequires:  pkgconfig(protobuf)
BuildRequires:  pkgconfig(python3)
BuildRequires:  pkgconfig(sm)
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(x11-xcb)
BuildRequires:  pkgconfig(xcomposite)
BuildRequires:  pkgconfig(xdamage)
BuildRequires:  pkgconfig(xext)
BuildRequires:  pkgconfig(xi)
BuildRequires:  pkgconfig(xinerama)
BuildRequires:  pkgconfig(xrandr)
BuildRequires:  pkgconfig(xrender)
Requires:       %{name}-decorator = 0.9
Requires:       %{name}-plugins = %{version}
Requires:       lib%{name}config
Recommends:     %{name}-plugins-main = %{version}
Obsoletes:      %{name}-kde4 < %{version}
Obsoletes:      %{name}-branding-openSUSE < %{version}
Obsoletes:      %{name}-branding-upstream < %{version}
Obsoletes:      %{name}-branding-SLE < %{version}
Obsoletes:      compicc < 0.9
Provides:       windowmanager
%glib2_gsettings_schema_requires
%ifarch %arm aarch64
BuildRequires:  pkgconfig(egl)
BuildRequires:  pkgconfig(glesv2)
%else
BuildRequires:  pkgconfig(gl)
BuildRequires:  pkgconfig(glu)
%endif

%description
Compiz is an OpenGL compositing manager that uses
GLX_EXT_texture_from_drawable for binding redirected top-level
windows to texture objects. It has a flexible plug-in system and it
is designed to run well on most graphics hardware.

%lang_package

%package gnome
Summary:        OpenGL window and compositing manager configuration utilities
Group:          System/GUI/Other
Requires:       %{name} = %{version}
Requires:       %{name}-plugins = %{version}
Recommends:     %{name}-plugins-main = %{version}
Suggests:       ccsm >= 0.9
Suggests:       ubuntu-mate-wallpapers
Provides:       lib%{name}config-backend = 0.9
Provides:       %{name}-decorator = 0.9
%glib2_gsettings_schema_requires

%description gnome
This package contains MATE/GNOME based configuration utilities for
the Compiz compositing manager.

%package plugins
Summary:        OpenGL window and compositing manager default plugins
Group:          System/GUI/Other
Requires:       %{name} = %{version}

%description plugins
This package contains the default Compiz compositing manager
plugins.

%package plugins-extra
Summary:        OpenGL window and compositing manager extra plugins
Group:          System/GUI/Other
Requires:       %{name} = %{version}
Requires:       %{name}-plugins = %{version}
Provides:       %{name}-plugins-main = %{version}
Obsoletes:      %{name}-plugins-main < %{version}
Obsoletes:      %{name}-plugins-main-lang < %{version}
Obsoletes:      %{name}-plugins-main-devel < %{version}
Obsoletes:      %{name}-plugins-experimental < %{version}
Obsoletes:      %{name}-plugins-experimental-lang < %{version}
Obsoletes:      %{name}-plugins-experimental-devel < %{version}
Obsoletes:      %{name}-plugins-extra-lang < %{version}
Obsoletes:      %{name}-plugins-extra-devel < %{version}
Obsoletes:      %{name}-plugins-unsupported < %{version}
Obsoletes:      %{name}-plugins-unsupported-lang < %{version}
Obsoletes:      %{name}-plugins-unsupported-devel < %{version}

%description plugins-extra
This package contains the non-default Compiz compositing manager
plugins.

%package devel
Summary:        Development files for Compiz
Group:          Development/Languages/C and C++
Requires:       %{name} = %{version}
Requires:       %{name}-gnome
Requires:       %{name}-plugins = %{version}
Requires:       cmake
Requires:       intltool
Requires:       lib%{name}config = %{version}
Requires:       pkgconfig
Requires:       pkgconfig(gio-2.0)
Requires:       pkgconfig(glib-2.0)
Requires:       pkgconfig(glibmm-2.4)
Requires:       pkgconfig(gtk+-3.0)
Requires:       pkgconfig(ice)
Requires:       pkgconfig(libpng)
Requires:       pkgconfig(libstartup-notification-1.0) >= 0.7
Requires:       pkgconfig(libxml-2.0)
Requires:       pkgconfig(libxslt)
Requires:       pkgconfig(sm)
Requires:       pkgconfig(x11)
Requires:       pkgconfig(x11-xcb)
Requires:       pkgconfig(xcomposite)
Requires:       pkgconfig(xdamage)
Requires:       pkgconfig(xinerama)
Requires:       pkgconfig(xrandr)
Requires:       pkgconfig(xrender) >= 0.9.3
Obsoletes:      lib%{name}config-devel < %{version}
Provides:       lib%{name}config-devel = %{version}
Provides:       libdecoration-devel = %{version}
%ifarch %arm aarch64
Requires:       pkgconfig(egl)
Requires:       pkgconfig(glesv2)
%else
Requires:       pkgconfig(gl)
Requires:       pkgconfig(glu)
%endif

%description devel
Compiz is an OpenGL compositing manager that uses
GLX_EXT_texture_from_drawable for binding redirected top-level
windows to texture objects. It has a flexible plug-in system and it
is designed to run well on most graphics hardware.

%package -n libdecoration%{sover}
Summary:        Compiz window decoration library
Group:          System/Libraries

%description -n libdecoration%{sover}
The window decoration library is responsible for drawing the
window borders and title bar of windows managed by Compiz. It is
used by window decorators like gtk-window-decorator.

%package -n lib%{name}config
Summary:        CompizConfig plugin required for CCSM
Group:          System/Libraries
Requires:       %{name} >= %{version}
Recommends:     lib%{name}config-backend >= 0.9
Obsoletes:      lib%{name}config-backend < 0.9

%description -n lib%{name}config
CompizConfig plugin required for compizconfig-settings-manager.

%package -n %{name}config-settings-manager
Summary:        Settings Manager for Compiz (CCSM)
Group:          System/X11/Utilities
Requires:       python3-ccm = %{version}
Provides:       ccsm = 0.9
BuildArch:      noarch

%description -n %{name}config-settings-manager
Compiz Config and Settings tool (CCSM).

%lang_package -n %{name}config-settings-manager

%package -n %{name}config-settings-manager-common
Summary:        Settings Manager for Compiz -- Common files
Group:          System/X11/Utilities
BuildArch:      noarch

%description -n %{name}config-settings-manager-common
Common files for the Compiz Config and Settings tool (CCSM).

%package -n python3-%{name}config
Summary:        Python bindings for libraries for compizconfig-settings
Group:          Development/Languages/Python
Requires:       %{name} = %{version}
Requires:       python3
Obsoletes:      python-%{name}config < 0.9.13.1+bzr20190103
Obsoletes:      python2-%{name}config < 0.9.13.1+bzr20190103

%description -n python3-%{name}config
Python bindings for libraries/plugins for compizconfig-settings.

%package -n python3-ccm
Summary:        CompizConfig Manager Backend
Group:          Development/Languages/Python
Requires:       %{name} = %{version}
Requires:       %{name}config-settings-manager-common = %{version}
Requires:       python3
Requires:       python3-%{name}config = %{version}
Requires:       python3-cairo
Requires:       python3-gobject
Requires:       python3-gobject-cairo
Requires:       python3-xml
Obsoletes:      python-ccm < 0.9.13.1+bzr20190103
Obsoletes:      python2-ccm < 0.9.13.1+bzr20190103
BuildArch:      noarch
%if 0%{?sle_version} >= 120200
Requires:       python3-gobject-Gdk
%endif

%description -n python3-ccm
The backend to Compiz Config Manager.

%prep
%autosetup -p1
cp -a %{SOURCE1} %{name}-decorator

sed -i '/find_program/s|cython3|cython-%{py3_ver}|' \
  compizconfig/compizconfig-python/CMakeLists.txt

%build
%cmake \
  -DBUILD_SHARED_LIBS=OFF                        \
  -DCOMPIZ_BUILD_WITH_RPATH=OFF                  \
  -DCMAKE_SKIP_INSTALL_RPATH=ON                  \
  -DCOMPIZ_PACKAGING_ENABLED=ON                  \
  -DCOMPIZ_WERROR=OFF                            \
  -DCMAKE_INSTALL_FULL_LIBDIR=%{_libdir}         \
  -DCMAKE_INSTALL_FULL_INCLUDEDIR=%{_includedir} \
  -DCMAKE_INSTALL_FULL_DATAROOTDIR=%{_datadir}   \
%ifarch %arm aarch64
  -DBUILD_GLES=ON                                \
%endif
  -DCOMPIZ_DISABLE_PLUGIN_DBUS=ON
%cmake_build

%install
%cmake_install

install -Dpm 0755 %{name}-decorator %{buildroot}%{_bindir}/%{name}-decorator

# cmake modules are installed into a wrong directory.
mkdir -p %{buildroot}%{_datadir}/cmake/
mv -f %{buildroot}%{_datadir}/cmake-*/ %{buildroot}%{_datadir}/cmake/Modules/

for de in mate gnome; do
    mkdir -p %{buildroot}%{_datadir}/$de-control-center/keybindings/
    install -pm 0644 */gtk/gnome/*.xml %{buildroot}%{_datadir}/$de-control-center/keybindings/
    install -Dpm 0644 %{buildroot}%{_datadir}/applications/%{name}.desktop \
      %{buildroot}%{_datadir}/$de/wm-properties/%{name}.desktop
done

mkdir -p %{buildroot}%{_datadir}/GConf/gsettings/
install -pm 0644 postinst/convert-files/*.convert %{buildroot}%{_datadir}/GConf/gsettings/

rm -rf %{buildroot}%{_datadir}/gconf/schemas/
%fdupes %{buildroot}%{_datadir}/

%find_lang %{name}
%find_lang ccsm

%ldconfig_scriptlets

%post -n libdecoration%{sover} -p /sbin/ldconfig

%postun -n libdecoration%{sover} -p /sbin/ldconfig

%post -n lib%{name}config -p /sbin/ldconfig

%postun -n lib%{name}config -p /sbin/ldconfig

%files
%license COPYING*
%doc AUTHORS NEWS README
%{_bindir}/%{name}
%{_bindir}/%{name}-decorator
%{_datadir}/applications/%{name}.desktop
%dir %{_libdir}/%{name}/
%{_libdir}/lib%{name}_core.so.*
%dir %{_datadir}/%{name}/
%{_datadir}/%{name}/core.xml
%{_datadir}/%{name}/icon.png
%{_datadir}/%{name}/xslt

%files lang -f %{name}.lang

%files gnome
%{_bindir}/gtk-window-decorator
%{_libdir}/%{name}config/backends/libgsettings.so
%{_libdir}/lib%{name}config_gsettings_backend.so
%dir %{_datadir}/*-control-center/
%dir %{_datadir}/*-control-center/keybindings/
%{_datadir}/*-control-center/keybindings/*
%dir %{_datadir}/mate/
%dir %{_datadir}/gnome/
%dir %{_datadir}/*/wm-properties/
%{_datadir}/*/wm-properties/%{name}.desktop
%{_datadir}/glib-2.0/schemas/*.xml
%{_datadir}/GConf/gsettings/*.convert

%files plugins
%{_libdir}/%{name}/*animation.*
%{_datadir}/%{name}/*animation.*
%{_libdir}/%{name}/*colorfilter.*
%{_datadir}/%{name}/*colorfilter.*
%{_datadir}/%{name}/colorfilter/
%{_libdir}/%{name}/*commands.*
%{_datadir}/%{name}/*commands.*
%{_libdir}/%{name}/*%{name}toolbox.*
%{_datadir}/%{name}/*%{name}toolbox.*
%{_libdir}/%{name}/*composite.*
%{_datadir}/%{name}/*composite.*
%{_libdir}/%{name}/*copytex.*
%{_datadir}/%{name}/*copytex.*
%{_libdir}/%{name}/*decor.*
%{_datadir}/%{name}/*decor.*
%{_libdir}/%{name}/*expo.*
%{_datadir}/%{name}/*expo.*
%{_libdir}/%{name}/*ezoom.*
%{_datadir}/%{name}/*ezoom.*
%{_libdir}/%{name}/*fade.*
%{_datadir}/%{name}/*fade.*
%{_libdir}/%{name}/*gnomecompat.*
%{_datadir}/%{name}/*gnomecompat.*
%{_libdir}/%{name}/*grid.*
%{_datadir}/%{name}/*grid.*
%{_libdir}/%{name}/*imgpng.*
%{_datadir}/%{name}/*imgpng.*
%{_libdir}/%{name}/*matecompat.*
%{_datadir}/%{name}/*matecompat.*
%{_libdir}/%{name}/*mousepoll.*
%{_datadir}/%{name}/*mousepoll.*
%{_libdir}/%{name}/*move.*
%{_datadir}/%{name}/*move.*
%{_libdir}/%{name}/*opengl.*
%{_datadir}/%{name}/*opengl.*
%{_libdir}/%{name}/*place.*
%{_datadir}/%{name}/*place.*
%{_libdir}/%{name}/*regex.*
%{_datadir}/%{name}/*regex.*
%{_libdir}/%{name}/*resize.*
%{_datadir}/%{name}/*resize.*
%{_libdir}/%{name}/*scale.*
%{_datadir}/%{name}/*scale.*
%{_datadir}/%{name}/scale
%{_libdir}/%{name}/*session.*
%{_datadir}/%{name}/*session.*
%{_libdir}/%{name}/*snap.*
%{_datadir}/%{name}/*snap.*
%{_libdir}/%{name}/*switcher.*
%{_datadir}/%{name}/*switcher.*
%{_libdir}/%{name}/*vpswitch.*
%{_datadir}/%{name}/*vpswitch.*
%{_libdir}/%{name}/*wall.*
%{_datadir}/%{name}/*wall.*
%{_libdir}/%{name}/*workarounds.*
%{_datadir}/%{name}/*workarounds.*

%files plugins-extra
%{_libdir}/%{name}/*addhelper.*
%{_datadir}/%{name}/*addhelper.*
%{_libdir}/%{name}/*annotate.*
%{_datadir}/%{name}/*annotate.*
%{_libdir}/%{name}/*animationaddon.*
%{_datadir}/%{name}/*animationaddon.*
%{_libdir}/%{name}/*animationjc.*
%{_datadir}/%{name}/*animationjc.*
%{_libdir}/%{name}/*animationplus.*
%{_datadir}/%{name}/*animationplus.*
%{_libdir}/%{name}/*animationsim.*
%{_datadir}/%{name}/*animationsim.*
%{_libdir}/%{name}/*clone.*
%{_datadir}/%{name}/*clone.*
%{_libdir}/%{name}/*crashhandler.*
%{_datadir}/%{name}/*crashhandler.*
%{_libdir}/%{name}/*cube.*
%{_datadir}/%{name}/*cube.*
%{_datadir}/%{name}/cube/
%{_libdir}/%{name}/*cubeaddon.*
%{_datadir}/%{name}/*cubeaddon.*
%{_datadir}/%{name}/cubeaddon/
%{_libdir}/%{name}/*extrawm.*
%{_datadir}/%{name}/*extrawm.*
%{_libdir}/%{name}/*fadedesktop.*
%{_datadir}/%{name}/*fadedesktop.*
%{_libdir}/%{name}/*firepaint.*
%{_datadir}/%{name}/*firepaint.*
%{_libdir}/%{name}/*imgjpeg.*
%{_datadir}/%{name}/*imgjpeg.*
%{_libdir}/%{name}/*imgsvg.*
%{_datadir}/%{name}/*imgsvg.*
%{_libdir}/%{name}/*inotify.*
%{_datadir}/%{name}/*inotify.*
%{_libdir}/%{name}/*mag.*
%{_datadir}/%{name}/*mag.*
%{_datadir}/%{name}/mag/
%{_libdir}/%{name}/*maximumize.*
%{_datadir}/%{name}/*maximumize.*
%{_libdir}/%{name}/*neg.*
%{_datadir}/%{name}/*neg.*
%{_libdir}/%{name}/*notification.*
%{_datadir}/%{name}/*notification.*
%{_datadir}/%{name}/notification
%{_libdir}/%{name}/*obs.*
%{_datadir}/%{name}/*obs.*
%{_libdir}/%{name}/*opacify.*
%{_datadir}/%{name}/*opacify.*
%{_libdir}/%{name}/*put.*
%{_datadir}/%{name}/*put.*
%{_libdir}/%{name}/*resizeinfo.*
%{_datadir}/%{name}/*resizeinfo.*
%{_libdir}/%{name}/*ring.*
%{_datadir}/%{name}/*ring.*
%{_libdir}/%{name}/*rotate.*
%{_datadir}/%{name}/*rotate.*
%{_libdir}/%{name}/*scaleaddon.*
%{_datadir}/%{name}/*scaleaddon.*
%{_libdir}/%{name}/*scalefilter.*
%{_datadir}/%{name}/*scalefilter.*
%{_libdir}/%{name}/*screenshot.*
%{_datadir}/%{name}/*screenshot.*
%{_libdir}/%{name}/*shelf.*
%{_datadir}/%{name}/*shelf.*
%{_libdir}/%{name}/*shift.*
%{_datadir}/%{name}/*shift.*
%{_libdir}/%{name}/*showdesktop.*
%{_datadir}/%{name}/*showdesktop.*
%{_libdir}/%{name}/*showmouse.*
%{_datadir}/%{name}/*showmouse.*
%{_datadir}/%{name}/showmouse/
%{_libdir}/%{name}/*showrepaint.*
%{_datadir}/%{name}/*showrepaint.*
%{_libdir}/%{name}/*splash.*
%{_datadir}/%{name}/*splash.*
%{_datadir}/%{name}/splash/
%{_libdir}/%{name}/*text.*
%{_datadir}/%{name}/*text.*
%{_libdir}/%{name}/*titleinfo.*
%{_datadir}/%{name}/*titleinfo.*
%{_libdir}/%{name}/*trailfocus.*
%{_datadir}/%{name}/*trailfocus.*
%{_libdir}/%{name}/*wallpaper.*
%{_datadir}/%{name}/*wallpaper.*
%{_libdir}/%{name}/*water.*
%{_datadir}/%{name}/*water.*
%{_libdir}/%{name}/*winrules.*
%{_datadir}/%{name}/*winrules.*
%{_libdir}/%{name}/*wizard.*
%{_datadir}/%{name}/*wizard.*
%{_libdir}/%{name}/*wobbly.*
%{_datadir}/%{name}/*wobbly.*
%{_libdir}/%{name}/*workspacenames.*
%{_datadir}/%{name}/*workspacenames.*
%ifnarch %arm aarch64
%{_libdir}/%{name}/*bench.*
%{_datadir}/%{name}/*bench.*
%{_libdir}/%{name}/*blur.*
%{_datadir}/%{name}/*blur.*
%{_libdir}/%{name}/*freewins.*
%{_datadir}/%{name}/*freewins.*
%{_libdir}/%{name}/*gears.*
%{_datadir}/%{name}/*gears.*
%{_libdir}/%{name}/*td.*
%{_datadir}/%{name}/*td.*
%{_libdir}/%{name}/*thumbnail.*
%{_datadir}/%{name}/*thumbnail.*
%{_libdir}/%{name}/*widget.*
%{_datadir}/%{name}/*widget.*
%endif

%files devel
%{_includedir}/%{name}/
%{_includedir}/%{name}config/
%{_libdir}/lib%{name}_core.so
%{_libdir}/libdecoration.so
%{_libdir}/lib%{name}config.so
%{_libdir}/pkgconfig/*.pc
%{_datadir}/%{name}/cmake/
%{_datadir}/cmake/Modules/*.cmake

%files -n libdecoration%{sover}
%{_libdir}/libdecoration.so.%{sover}*

%files -n lib%{name}config
%dir %{_sysconfdir}/%{name}config/
%config %{_sysconfdir}/%{name}config/*
%{_libdir}/lib%{name}config.so.%{sover}*
%{_libdir}/%{name}config/
%exclude %{_libdir}/%{name}config/backends/libgsettings.so
%{_libdir}/%{name}/*ccp*
%{_datadir}/%{name}/*ccp.*

%files -n %{name}config-settings-manager
%{_bindir}/ccsm
%{_datadir}/applications/ccsm.desktop
%{_datadir}/icons/hicolor/*/apps/ccsm.*

%files -n %{name}config-settings-manager-lang -f ccsm.lang

%files -n %{name}config-settings-manager-common
%{_datadir}/ccsm/

%files -n python3-%{name}config
%{python3_sitearch}/%{name}config*

%files -n python3-ccm
%{python3_sitelib}/ccm/
%{python3_sitelib}/ccsm*

%changelog
openSUSE Build Service is sponsored by