%define url_ver %(echo %{version} | cut -d. -f1,2) %define lib_major 0 %define api 7 %define libname %mklibname %{name} %{api} %{lib_major} %define libnamedev %mklibname -d %{name} %{api} %define privatelib %mklibname %{name}-private %{api} %define privategir %mklibname %{name}-private-gir %{api} # (wally) building tests causes ninja to loop forever %bcond_with tests # (tmb) disble underlinking for now %define _disable_ld_no_undefined 1 # ovitters remove this autoreq; this is a hack %global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^devel\\(libmutter- Name: mutter Version: 3.38.3 Release: %mkrel 2 Summary: Window and compositing manager based on Clutter License: GPLv2+ Group: Graphical desktop/GNOME URL: https://download.gnome.org/sources/mutter/ Source0: https://download.gnome.org/sources/%{name}/%{url_ver}/%{name}-%{version}.tar.xz # upstream git # other patches Patch1200: 0001-window-actor-Special-case-shaped-Java-windows.patch BuildRequires: git BuildRequires: meson BuildRequires: mesaegl-devel BuildRequires: pkgconfig(gnome-settings-daemon) BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(glib-2.0) >= 2.14.0 BuildRequires: pkgconfig(gio-2.0) >= 2.25.10 BuildRequires: pkgconfig(graphene-gobject-1.0) BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 3.7.3 BuildRequires: pkgconfig(gtk+-3.0) >= 3.3.3 BuildRequires: pkgconfig(sm) BuildRequires: pkgconfig(libstartup-notification-1.0) >= 0.7 BuildRequires: pkgconfig(libcanberra-gtk3) >= 0.26 BuildRequires: pkgconfig(libpipewire-0.3) >= 0.2.5 BuildRequires: pkgconfig(xcomposite) >= 0.2 BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(pango) >= 1.2.0 BuildRequires: pkgconfig(cairo) >= 1.10.0 BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xi) >= 1.6.99.1 BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(gobject-introspection-1.0) >= 0.9.5 BuildRequires: pkgconfig(clutter-1.0) >= 1.19.5 BuildRequires: pkgconfig(upower-glib) >= 0.99.0 BuildRequires: pkgconfig(gnome-desktop-3.0) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(wayland-server) >= 1.13.0 BuildRequires: pkgconfig(wayland-protocols) >= 1.19 BuildRequires: pkgconfig(clutter-wayland-1.0) BuildRequires: pkgconfig(clutter-wayland-compositor-1.0) BuildRequires: pkgconfig(clutter-egl-1.0) BuildRequires: pkgconfig(cogl-1.0) >= 1.17.1 # for wayland: BuildRequires: x11-server-xwayland BuildRequires: pkgconfig(libsystemd) # Nvidia eglstream: BuildRequires: pkgconfig(wayland-eglstream) BuildRequires: pkgconfig(wayland-eglstream-protocols) BuildRequires: pkgconfig(sysprof-capture-4) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(glu) BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(xkbfile) BuildRequires: pkgconfig(xkbcommon) >= 0.4.3 BuildRequires: pkgconfig(xkbcommon-x11) BuildRequires: pkgconfig(x11-xcb) BuildRequires: pkgconfig(xkeyboard-config) BuildRequires: pkgconfig(gudev-1.0) BuildRequires: zenity BuildRequires: gettext BuildRequires: gtk-doc BuildRequires: gnome-doc-utils Requires: zenity Requires: %{privategir} = %{version}-%{release} %if ! %{with tests} Obsoletes: %{name}-tests < %{version}-%{release} %endif %description Mutter is a window and compositing manager that displays and manages your desktop via OpenGL. Mutter combines a sophisticated display engine using the Clutter toolkit with solid window-management logic inherited from the Metacity window manager. While Mutter can be used stand-alone, it is primarily intended to be used as the display core of a larger system such as GNOME Shell. For this reason, Mutter is very extensible via plugins, which are used both to add fancy visual effects and to rework the window management behaviors to meet the needs of the environment. %package -n %{libname} Summary: Libraries for Mutter Group: System/Libraries Obsoletes: %{_lib}mutter-private0 <= 3.29.3 Conflicts: mutter < 3.38.2-2 %description -n %{libname} This package contains libraries used by Mutter. %package -n %{privatelib} Summary: Private libraries for Mutter Group: System/Libraries Conflicts: mutter < 3.29.3-3 %description -n %{privatelib} This package contains private libraries used by Mutter. %package -n %{privategir} Summary: GObject Introspection interface description for Mutter Group: System/Libraries Requires: %{libname} = %{version}-%{release} Requires: %{privatelib} = %{version}-%{release} Conflicts: mutter < 3.29.3-3 %description -n %{privategir} GObject Introspection interface description for Mutter. %package -n %{libnamedev} Summary: Development package for %{name} Group: Development/GNOME and GTK+ Requires: %{name} = %{version}-%{release} Requires: %{libname} = %{version}-%{release} Requires: %{privatelib} = %{version}-%{release} Requires: %{privategir} = %{version}-%{release} Provides: %{name}-devel = %{version}-%{release} Provides: lib%{name}-devel = %{version}-%{release} Obsoletes: %{_lib}mutter-private-devel < 3.29.3-2 %description -n %{libnamedev} Header files and libraries for developing Mutter plugins. Also includes utilities for testing Metacity/Mutter themes. %package tests Summary: Tests for the %{name} package Group: Development/GNOME and GTK+ Requires: %{name} = %{version}-%{release} %description tests The %{name}-tests package contains tests that can be used to verify the functionality of the installed %{name} package. %prep %autosetup -S git %build # ovitters 2020-03-11 xwayland_initfd is disabled as support isn't in x11-server-xwayland # see https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1103 %meson \ -Dtests=%{?with_tests:true}%{!?with_tests:false} \ -Dintrospection=true \ -Dwayland=true \ -Degl_device=true \ -Dwayland_eglstream=true \ -Dxwayland_initfd=disabled \ -Dremote_desktop=true \ -Dnative_backend=true %meson_build %install %meson_install %find_lang %{name} %files -f %{name}.lang %doc NEWS %{_bindir}/mutter %{_datadir}/applications/*.desktop %{_libexecdir}/mutter-restart-helper %{_datadir}/GConf/gsettings/mutter-schemas.convert %{_datadir}/glib-2.0/schemas/org.gnome.mutter.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.mutter.wayland.gschema.xml %{_datadir}/gnome-control-center/keybindings/50-mutter-*.xml %{_mandir}/man1/mutter.1* %{_udevrulesdir}/61-mutter.rules %files -n %{libname} %dir %{_libdir}/%{name}-%{api} %dir %{_libdir}/%{name}-%{api}/plugins %{_libdir}/%{name}-%{api}/plugins/libdefault.so %{_libdir}/lib%{name}-%{api}.so.%{lib_major}{,.*} %{_libdir}/%{name}-%{api}/lib%{name}-*-%{api}.so.%{lib_major}{,.*} %files -n %{privategir} %{_libdir}/%{name}-%{api}/*-%{api}.typelib %files -n %{privatelib} %{_libdir}/%{name}-%{api}/libmutter-*-%{api}.so %files -n %{libnamedev} %{_includedir}/* %{_libdir}/lib%{name}-%{api}.so %{_libdir}/pkgconfig/* %{_libdir}/%{name}-%{api}/*.gir %if %{with tests} %files tests %{_libexecdir}/installed-tests/%{name}-%{api} %{_datadir}/installed-tests/%{name}-%{api} %{_datadir}/%{name}-%{api}/tests %endif