%define lib_major 0 %define api 17 %define libname %mklibname %{name} %{api} %{lib_major} %define libnamedev %mklibname %{name} %{api} -d %define privatelib %mklibname %{name}-private %{api} %define privategir %mklibname %{name}-private-gir %{api} %bcond tests 1 # (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: 49.5 Release: %mkrel 1 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}-%{tarball_version}.tar.xz # upstream git # From Fedora # https://bugzilla.redhat.com/show_bug.cgi?id=1936991 Patch51: mutter-42.alpha-disable-tegra.patch # https://gitlab.gnome.org/GNOME/mutter/-/issues/4206 # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4550 # Fix crash when locking screen on VMs Patch: 0001-clutter-Skip-null-actors-in-create_event_emission_ch.patch # # From Deb # Source117: wayland-data-device-Allow-any-drag-timestamp-as-drag-star.patch # # From ubuntu # https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/1820850 # (https://gitlab.gnome.org/3v1n0/mutter/-/commits/xrandr-scaling) Source150: x11-Add-support-for-fractional-scaling-using-Randr.patch # # From opensuse # Fix libmutter-test-12.so's soversion Patch500: 0001-Add-soversion-to-libmutter-test-12.so.patch BuildRequires: cvt BuildRequires: git BuildRequires: meson BuildRequires: mesaegl-devel BuildRequires: pkgconfig(bash-completion) BuildRequires: pkgconfig(gnome-settings-daemon) BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(graphene-gobject-1.0) BuildRequires: pkgconfig(gsettings-desktop-schemas) BuildRequires: pkgconfig(gnome-settings-daemon) BuildRequires: pkgconfig(gnome-desktop-4) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(gtk4) BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(sm) BuildRequires: pkgconfig(libadwaita-1) BuildRequires: pkgconfig(libwacom) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(libstartup-notification-1.0) BuildRequires: pkgconfig(libcanberra) BuildRequires: pkgconfig(libdisplay-info) BuildRequires: pkgconfig(libpipewire-0.3) BuildRequires: pkgconfig(xcomposite) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(pango) BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xdamage) BuildRequires: pkgconfig(gobject-introspection-1.0) BuildRequires: pkgconfig(upower-glib) BuildRequires: pkgconfig(gnome-desktop-4) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(wayland-server) BuildRequires: pkgconfig(wayland-protocols) BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(colord) # (tv) temp cauldron fix: BuildRequires: pkgconfig(libei-1.0) BuildRequires: pkgconfig(libeis-1.0) BuildRequires: x11-server-xvfb # for wayland: BuildRequires: x11-server-xwayland BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(libinput) BuildRequires: pkgconfig(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) BuildRequires: pkgconfig(xkbcommon-x11) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(x11-xcb) BuildRequires: pkgconfig(xkeyboard-config) BuildRequires: pkgconfig(gudev-1.0) BuildRequires: pkgconfig(umockdev-1.0) BuildRequires: gettext BuildRequires: gnome-doc-utils BuildRequires: python3-argcomplete BuildRequires: python3-dbusmock BuildRequires: python3-docutils BuildRequires: zenity Requires: %{privategir} = %{version}-%{release} %if ! %{with tests} Obsoletes: %{name}-tests < %{version}-%{release} %endif # Need common Requires: %{name}-common = %{version}-%{release} %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 common Summary: Common files used by %{name} and forks of %{name} Group: Graphical desktop/GNOME BuildArch: noarch %description common Common files used by Mutter and soft forks of Mutter. %package -n %{libname} Summary: Libraries for Mutter Group: System/Libraries %description -n %{libname} This package contains libraries used by Mutter. %package -n %{privatelib} Summary: Private libraries for Mutter Group: System/Libraries %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} %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} # for EGL/eglmesaext.h that's included from public cogl-egl-defines.h header Requires: %{_lib}mesaegl-devel Provides: %{name}-devel = %{version}-%{release} Provides: lib%{name}-devel = %{version}-%{release} %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}-devel = %{version}-%{release} 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 -p1 -n %{name}-%{tarball_version} %build %meson \ -Dtests=%{?with_tests:enabled}%{!?with_tests:disabled} \ -Dintrospection=true \ -Dx11=true \ -Dwayland=true \ -Degl_device=true \ -Dwayland_eglstream=true \ -Dxwayland_initfd=enabled \ -Dremote_desktop=true \ -Dnative_backend=true %meson_build %install %meson_install %find_lang %{name} %files -f %{name}.lang %doc NEWS %{_bindir}/mutter %{_bindir}/gdctl %{_bindir}/gnome-service-client %{_datadir}/applications/org.gnome.Mutter.Mdk.desktop %{_datadir}/bash-completion/completions/gdctl %{_iconsdir}/hicolor/*/apps/org.gnome.Mutter.Mdk*.svg %{_datadir}/polkit-1/actions/org.gnome.mutter.backlight-helper.policy %{_libexecdir}/mutter-backlight-helper %{_libexecdir}/mutter-devkit %{_libexecdir}/mutter-restart-helper %{_libexecdir}/mutter-x11-frames %{_mandir}/man1/mutter.1* %{_mandir}/man1/gdctl.1* %{_mandir}/man1/gnome-service-client.1* %files common %{_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}/glib-2.0/schemas/org.gnome.mutter.devkit.gschema.xml %{_datadir}/gnome-control-center/keybindings/50-mutter-*.xml %{_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}{,.*} %{_libdir}/lib%{name}-test-%{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