Added mutter for mobile

This commit is contained in:
Gerben Jan Dijkman 2022-10-03 23:43:06 +02:00
parent c7a54855d8
commit 94aab228cb
5 changed files with 347 additions and 0 deletions

1
x11-wm/mutter/Manifest Normal file
View File

@ -0,0 +1 @@
DIST mutter-913655c03539fb03ff691dc5192acb03c7f0c011.tar.gz 4598084 BLAKE2B 19395d4473b4b4c6827fd71ea2cd013a2310b3e0318b13bfb2a6ff598d33fbfd4b9da3a8ac8a9dd53fff8be8909732d064b6dd8289a9e7ee2bd37a15ff79e7ba SHA512 ed07d3df1dbd313f11724b70c9bff15589979bd534cf5f9790ae6ad9aec90a5e94b131c17578417363a68b571c2c747e48fa706c1c25d54d3dc732fa44d735ae

View File

@ -0,0 +1,30 @@
From 8cb699dc59c64dc9f58873b3bbe2d17c3a08d2f9 Mon Sep 17 00:00:00 2001
From: Matt Turner <mattst88@gmail.com>
Date: Fri, 18 Mar 2022 17:40:52 -0700
Subject: [PATCH] Disable anonymous-file test
It attempts to open /proc/self/fd/* (an fd created by memfd_create),
which sandbox disallows.
---
src/tests/meson.build | 5 -----
1 file changed, 5 deletions(-)
diff --git a/src/tests/meson.build b/src/tests/meson.build
index a19703288..50027d1f8 100644
--- a/src/tests/meson.build
+++ b/src/tests/meson.build
@@ -180,11 +180,6 @@ test_cases += [
'suite': 'compositor',
'sources': [ 'stage-view-tests.c', ],
},
- {
- 'name': 'anonymous-file',
- 'suite': 'unit',
- 'sources': [ 'anonymous-file.c', ],
- },
]
if have_native_tests
--
2.34.1

View File

@ -0,0 +1,79 @@
From db854a8588c1164df2f54c5718930aadf353b948 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
Date: Thu, 18 Aug 2022 10:41:01 +0100
Subject: [PATCH] backend/native: Don't warn on EACCES if headless
Since commit 1bf70334 "tests/runner: Make test runner use the headless
backend", tests are run with the native backend in headless mode, which
will attempt to open each GPU and show a warning (fatal during tests)
if it cannot.
However, in headless mode we might not be logged in on any seat (for
example we might be logged in via ssh instead), which means we might
legitimately not have permission to use any GPUs, even if they exist.
Downgrade the warning to a debug message in this case.
Resolves: https://gitlab.gnome.org/GNOME/mutter/-/issues/2381
Signed-off-by: Simon McVittie <smcv@debian.org>
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2584>
(cherry picked from commit 64a67aa00bfe54fe7219d7f581950897fcbf9a75)
---
src/backends/native/meta-backend-native.c | 35 +++++++++++++++++++----
1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c
index 224538787..a2babb4b0 100644
--- a/src/backends/native/meta-backend-native.c
+++ b/src/backends/native/meta-backend-native.c
@@ -514,8 +514,20 @@ on_udev_device_added (MetaUdev *udev,
new_gpu_kms = create_gpu_from_udev_device (native, device, &error);
if (!new_gpu_kms)
{
- g_warning ("Failed to hotplug secondary gpu '%s': %s",
- device_path, error->message);
+ if (meta_backend_is_headless (backend) &&
+ g_error_matches (error, G_IO_ERROR,
+ G_IO_ERROR_PERMISSION_DENIED))
+ {
+ meta_topic (META_DEBUG_BACKEND,
+ "Ignoring unavailable secondary gpu '%s': %s",
+ device_path, error->message);
+ }
+ else
+ {
+ g_warning ("Failed to hotplug secondary gpu '%s': %s",
+ device_path, error->message);
+ }
+
return;
}
@@ -552,9 +564,22 @@ init_gpus (MetaBackendNative *native,
if (!gpu_kms)
{
- g_warning ("Failed to open gpu '%s': %s",
- g_udev_device_get_device_file (device),
- local_error->message);
+ if (meta_backend_is_headless (backend) &&
+ g_error_matches (local_error, G_IO_ERROR,
+ G_IO_ERROR_PERMISSION_DENIED))
+ {
+ meta_topic (META_DEBUG_BACKEND,
+ "Ignoring unavailable gpu '%s': %s'",
+ g_udev_device_get_device_file (device),
+ local_error->message);
+ }
+ else
+ {
+ g_warning ("Failed to open gpu '%s': %s",
+ g_udev_device_get_device_file (device),
+ local_error->message);
+ }
+
g_clear_error (&local_error);
continue;
}
--
2.35.1

View File

@ -0,0 +1,27 @@
From 8cb699dc59c64dc9f58873b3bbe2d17c3a08d2f9 Mon Sep 17 00:00:00 2001
From: Matt Turner <mattst88@gmail.com>
Date: Fri, 18 Mar 2022 17:40:52 -0700
Subject: [PATCH] Disable anonymous-file test
It attempts to open /proc/self/fd/* (an fd created by memfd_create),
which sandbox disallows.
---
src/tests/meson.build | 5 -----
1 file changed, 5 deletions(-)
diff --git a/src/tests/meson.build b/src/tests/meson.build
index a19703288..50027d1f8 100644
--- a/src/tests/meson.build
+++ b/src/tests/meson.build
@@ -224,11 +224,6 @@ test_cases += [
'suite': 'compositor',
'sources': [ 'stage-view-tests.c', ],
},
- {
- 'name': 'anonymous-file',
- 'suite': 'unit',
- 'sources': [ 'anonymous-file.c', ],
- },
{
'name': 'edid',
'suite': 'unit',

View File

@ -0,0 +1,210 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8..11} )
inherit gnome.org gnome2-utils meson python-any-r1 udev xdg
COMMIT="913655c03539fb03ff691dc5192acb03c7f0c011"
DESCRIPTION="GNOME compositing window manager based on Clutter"
HOMEPAGE="https://gitlab.gnome.org/GNOME/mutter/"
SRC_URI="https://gitlab.gnome.org/verdre/mutter/-/archive/${COMMIT}/mutter-${COMMIT}.tar.gz"
LICENSE="GPL-2+"
SLOT="0/$(($(ver_cut 1) - 32))" # 0/libmutter_api_version - ONLY gnome-shell (or anything using mutter-clutter-<api_version>.pc) should use the subslot
IUSE="doc elogind gnome input_devices_wacom +introspection screencast sysprof systemd test udev wayland video_cards_nvidia mobile"
# native backend requires gles3 for hybrid graphics blitting support, udev and a logind provider
REQUIRED_USE="
wayland? ( ^^ ( elogind systemd ) udev )
test? ( wayland )"
RESTRICT="!test? ( test )"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
# gnome-settings-daemon is build checked, but used at runtime only for org.gnome.settings-daemon.peripherals.keyboard gschema
# xorg-server is needed at build and runtime with USE=wayland for Xwayland
# v3.32.2 has many excessive or unused *_req variables declared, thus currently the dep order ignores those and goes via dependency() call order
DEPEND="
>=media-libs/lcms-2.6:2
>=x11-misc/colord-1.4.5:=
>=x11-libs/libX11-1.7.0
>=media-libs/graphene-1.10.2[introspection?]
>=x11-libs/gtk+-3.19.8:3[X,introspection?]
x11-libs/gdk-pixbuf:2
>=x11-libs/pango-1.46[introspection?]
>=dev-libs/fribidi-1.0.0
>=x11-libs/cairo-1.14[X]
>=gnome-base/gsettings-desktop-schemas-42.0[introspection?]
>=dev-libs/glib-2.69.0:2
gnome-base/gnome-settings-daemon
>=dev-libs/json-glib-0.12.0[introspection?]
>=x11-libs/libxkbcommon-0.4.3
x11-libs/libICE
>=dev-libs/atk-2.5.3[introspection?]
>=media-libs/libcanberra-0.26
sys-apps/dbus
gnome? ( gnome-base/gnome-desktop:3= )
media-libs/mesa[X(+),egl(+)]
sysprof? ( >=dev-util/sysprof-capture-3.40.1:4 )
systemd? ( sys-apps/systemd )
wayland? (
>=dev-libs/wayland-protocols-1.26
>=dev-libs/wayland-1.21.0
x11-libs/libdrm
>=media-libs/mesa-21.3[egl(+),gbm(+),wayland,gles2]
>=dev-libs/libinput-1.18.0:=
elogind? ( sys-auth/elogind )
x11-base/xwayland
video_cards_nvidia? ( gui-libs/egl-wayland )
)
udev? ( >=dev-libs/libgudev-232
>=virtual/libudev-232-r1:=
)
x11-libs/libSM
input_devices_wacom? ( >=dev-libs/libwacom-0.13:= )
>=x11-libs/startup-notification-0.7
screencast? ( >=media-video/pipewire-0.3.21:= )
introspection? ( >=dev-libs/gobject-introspection-1.54:= )
doc? ( >=dev-util/gi-docgen-2021.1 )
"
# for now upstream has "have_x11 = true" in the meson.build, but sooner or later upstream is going to make X optional.
# X? (
DEPEND+="
>=x11-libs/libXcomposite-0.4
x11-libs/libXcursor
x11-libs/libXdamage
x11-libs/libXext
>=x11-libs/libXfixes-3
>=x11-libs/libXi-1.7.4
x11-libs/libXtst
x11-libs/libxkbfile
x11-misc/xkeyboard-config
>=x11-libs/libxkbcommon-0.4.3[X]
x11-libs/libXrender
>=x11-libs/libXrandr-1.5.0
x11-libs/libxcb:=
x11-libs/libXinerama
x11-libs/libXau
"
# )"
RDEPEND="${DEPEND}
gnome-extra/zenity
!<gui-libs/gtk-4.6.4:4
!<x11-libs/gtk+-3.24.34:3
"
DEPEND="${DEPEND}
x11-base/xorg-proto
sysprof? ( >=dev-util/sysprof-common-3.38.0 )
"
BDEPEND="
dev-util/wayland-scanner
dev-util/gdbus-codegen
dev-util/glib-utils
>=sys-devel/gettext-0.19.8
virtual/pkgconfig
test? (
${PYTHON_DEPS}
$(python_gen_any_dep '
>=dev-python/python-dbusmock-0.28[${PYTHON_USEDEP}]
')
app-text/docbook-xml-dtd:4.5
x11-misc/xvfb-run
)
wayland? (
>=sys-kernel/linux-headers-4.4
x11-libs/libxcvt
)
"
PATCHES=(
"${FILESDIR}"/${PN}-43.0-Disable-anonymous-file-test.patch
)
S="${WORKDIR}/mutter-${COMMIT}"
python_check_deps() {
if use test; then
python_has_version ">=dev-python/python-dbusmock-0.28[${PYTHON_USEDEP}]"
fi
}
src_prepare() {
default
sed -i -e "s:#!/usr/bin/bash:#!$(command -v bash):" src/tests/x11-test.sh || die
}
src_configure() {
# TODO: Replicate debug vs release meson build type behaviour under our buildtype=plain
local emesonargs=(
-Dopengl=true
#opengl_libname
#gles2_libname
$(meson_use wayland gles2)
-Degl=true
-Dglx=true
$(meson_use wayland)
$(meson_use systemd)
$(meson_use wayland native_backend)
$(meson_use screencast remote_desktop)
-Dlibgnome_desktop=true
$(meson_use udev)
-Dudev_dir=$(get_udevdir)
$(meson_use input_devices_wacom libwacom)
-Dsound_player=true
-Dpango_ft2=true
-Dstartup_notification=true
-Dsm=true
$(meson_use introspection)
$(meson_use doc docs)
$(meson_use test cogl_tests)
$(meson_use wayland core_tests) # core tests require wayland; overall -Dtests option is honored on top, so no extra conditional needed
-Dnative_tests=false
$(meson_use test clutter_tests)
$(meson_use test tests)
-Dkvm_tests=false
-Dtty_tests=false
$(meson_use sysprof profiler)
-Dinstalled_tests=false
#verbose # Let upstream choose default for verbose mode
#xwayland_path
# TODO: relies on default settings, but in Gentoo we might have some more packages we want to give Xgrab access (mostly virtual managers and remote desktops)
#xwayland_grab_default_access_rules
)
if use wayland && use video_cards_nvidia; then
emesonargs+=(
-Degl_device=true
-Dwayland_eglstream=true
)
else
emesonargs+=(
-Degl_device=false
-Dwayland_eglstream=false
)
fi
meson_src_configure
}
src_test() {
gnome2_environment_reset # Avoid dconf that looks at XDG_DATA_DIRS, which can sandbox fail if flatpak is installed
glib-compile-schemas "${BUILD_DIR}"/data
GSETTINGS_SCHEMA_DIR="${BUILD_DIR}"/data meson_src_test --setup=CI
}
pkg_postinst() {
use udev && udev_reload
xdg_pkg_postinst
gnome2_schemas_update
}
pkg_postrm() {
use udev && udev_reload
xdg_pkg_postrm
gnome2_schemas_update
}