source: gnome/platform/mutter.xml@ 4454113

11.3 12.0 12.1 12.2 gimp3 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/for-12.3 xry111/llvm18 xry111/spidermonkey128 xry111/xf86-video-removal
Last change on this file since 4454113 was 3fbdcfc, checked in by Xi Ruoyao <xry111@…>, 23 months ago

mutter: use --buildtype=debugoptimized for now ...

instead of --buildtype=release to work around a crash in gnome-shell.

Upstream issue: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5512

If close an focused app window via the Activities overview, an assertion
fail will be triggered in clutter_actor_get_preferred_{width,height}.
When debug is disabled, the assertions are disabled as well and the
issue turns into a NULL dereference, leading to a crash.

This is definitely not a proper fix. But the issue has been haunting
gnome-42 and 43, and the upstream has not given any response yet.

Note that it's not a "compiler misoptimization" issue. The assertion
fails even with -O0, i. e. if both the assertions and compiler
optimization are disabled, gnome-shell will crash as well.

  • Property mode set to 100644
File size: 11.7 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY mutter-download-http "&gnome-download-http;/mutter/&gnome-42;/mutter-&mutter-version;.tar.xz">
8 <!ENTITY mutter-download-ftp "&gnome-download-ftp;/mutter/&gnome-42;/mutter-&mutter-version;.tar.xz">
9 <!ENTITY mutter-md5sum "18b6f716ba0f6b899ed2edb08ab4ca68">
10 <!ENTITY mutter-size "2.6 MB">
11 <!ENTITY mutter-buildsize "130 MB (without tests)">
12 <!ENTITY mutter-time "0.5 SBU (Using parallelism=4)">
13 <!ENTITY mutter-time-systemd "0.5 SBU (Using parallelism=4, add 1.0 SBU for tests)">
14]>
15
16<sect1 id="mutter" xreflabel="Mutter-&mutter-version;">
17 <?dbhtml filename="mutter.html"?>
18
19 <sect1info>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>Mutter-&mutter-version;</title>
24
25 <indexterm zone="mutter">
26 <primary sortas="a-Mutter">Mutter</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to Mutter</title>
31
32 <para>
33 <application>Mutter</application> is the window manager for
34 <application>GNOME</application>. It is not invoked directly,
35 but from <application>GNOME Session</application> (on a
36 machine with a hardware accelerated video driver).
37 </para>
38
39 &lfs112_checked;
40
41 <bridgehead renderas="sect3">Package Information</bridgehead>
42 <itemizedlist spacing="compact">
43 <listitem>
44 <para>
45 Download (HTTP): <ulink url="&mutter-download-http;"/>
46 </para>
47 </listitem>
48 <listitem>
49 <para>
50 Download (FTP): <ulink url="&mutter-download-ftp;"/>
51 </para>
52 </listitem>
53 <listitem>
54 <para>
55 Download MD5 sum: &mutter-md5sum;
56 </para>
57 </listitem>
58 <listitem>
59 <para>
60 Download size: &mutter-size;
61 </para>
62 </listitem>
63 <listitem>
64 <para>
65 Estimated disk space required: &mutter-buildsize;
66 </para>
67 </listitem>
68 <listitem revision='sysv'>
69 <para>
70 Estimated build time: &mutter-time;
71 </para>
72 </listitem>
73 <listitem revision='systemd'>
74 <para>
75 Estimated build time: &mutter-time-systemd;
76 </para>
77 </listitem>
78 </itemizedlist>
79 <!--
80 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
81 <itemizedlist spacing="compact">
82 <listitem>
83 <para>
84 Recommended patch:
85 <ulink url="&patch-root;/mutter-&mutter-version;-consolidated_fixes-1.patch"/>
86 </para>
87 </listitem>
88 </itemizedlist>
89 -->
90 <bridgehead renderas="sect3">Mutter Dependencies</bridgehead>
91
92 <bridgehead renderas="sect4">Required</bridgehead>
93 <para role="required">
94 <!-- now using internal shipped clutter and cogl copies -->
95 <!-- <xref linkend="clutter"/>, -->
96 <xref linkend="gnome-settings-daemon"/>,
97 <xref linkend="graphene"/>,
98 <xref linkend="libxcvt"/>,
99 <xref linkend="libxkbcommon"/>,
100 <xref linkend="pipewire"/>, and
101 <xref linkend="zenity"/>
102 </para>
103
104 <bridgehead renderas="sect4">Recommended</bridgehead>
105 <para role="recommended">
106 <xref linkend="desktop-file-utils"/>,
107 <xref linkend="gobject-introspection"/>,
108 <xref linkend="startup-notification"/>, and
109 <xref linkend="sysprof"/>
110 </para>
111
112 <bridgehead renderas="sect4">Recommended (Required to
113 build the Wayland compositor)</bridgehead>
114 <para role="recommended">
115 <xref linkend="libinput"/>,
116 <xref linkend="wayland"/>,
117 <xref linkend="wayland-protocols"/>, and
118 <xref linkend="xwayland"/>.
119 Additionally, <xref linkend="gtk3"/> needs to be built with
120 <application>Wayland</application> support.
121 </para>
122
123 <bridgehead renderas="sect4"
124 revision="sysv">Recommended (Runtime)</bridgehead>
125 <para role="recommended" revision="sysv">
126 <xref linkend="blocaled" role="runtime"/>
127 </para>
128
129 <bridgehead renderas="sect4">Optional</bridgehead>
130 <para role="optional">
131 <xref linkend="python-dbusmock"/> (required for tests) and
132 <xref linkend="xorg-server"/> (for X11 sessions)
133 </para>
134
135 <!-- NOTE: Mutter compiles git versions of COGL and Clutter for it's own
136 internal use. This is because the wayland support upstream isn't advanced
137 enough for the graphics stack used in Mutter. -->
138
139 <para condition="html" role="usernotes">User Notes:
140 <ulink url="&blfs-wiki;/mutter"/>
141 </para>
142
143 </sect2>
144
145 <sect2 role="installation">
146 <title>Installation of Mutter</title>
147 <!--
148 <para>
149 First, apply a patch that fixes annoying bugs found after GNOME 42
150 release:
151 </para>
152
153<screen><userinput>patch -Np1 -i ../mutter-&mutter-version;-consolidated_fixes-1.patch</userinput></screen>
154-->
155 <para>
156 Install <application>Mutter</application> by running the following
157 commands:
158 </para>
159
160<screen><userinput>mkdir build &amp;&amp;
161cd build &amp;&amp;
162
163meson --prefix=/usr --buildtype=debugoptimized -Dtests=false .. &amp;&amp;
164ninja</userinput></screen>
165
166<!--
167 <para>
168 To test the results, issue:
169 <command>dbus-run-session ninja test</command>. The tests
170 require an active X session to run correctly. It is not necessary to
171 run a separate D-bus session if not in a GNOME session, but it
172 provides a clean environment in any case. One test,
173 <filename>native-headless</filename>, is known to fail.
174 </para>
175 -->
176 <!-- there are no added problems in sysv, AFAICT. Running the tests is
177 not easy whatever the init system. But using the instructions below in
178 a gnome session on sysv works (no test failure)...
179 <para revision='sysv'>
180 This package does not come with a test suite that runs properly in the
181 SystemV environment.
182 </para>
183 -->
184
185 <para>
186 The test suite requires debug functions to be enabled in the build, and an
187 external program called <command>xvfb-run</command>. If you wish to run
188 the tests, you should download and install it before running
189 <command>meson</command>.
190
191 You can obtain it from <ulink
192 url="&sources-anduin-http;/mutter/xvfb-run">xvfb-run</ulink>, and install
193 it with executable permissions in <filename
194 class="directory">/usr/bin</filename>. <command>xvfb-run</command> needs
195 <command>Xvfb</command> at runtime, and <command>Xvfb</command> can be
196 installed from either <xref linkend='xorg-server'/> or <xref
197 linkend='xwayland'/>.
198
199 You should also replace <parameter>-Dtests=false</parameter> in the
200 <command>meson</command> command, with
201 <parameter>-Dtests=true</parameter>. The test
202 suite requires the mutter schema to be installed on the system, so it is
203 better to run the tests after installing the package.
204 </para>
205
206 <para>
207 You can also test basic functions of <application>Mutter</application>
208 following <xref linkend='mutter-starting'/>, after installing it.
209 </para>
210
211 <para>
212 Now, as the <systemitem class="username">root</systemitem> user:
213 </para>
214
215<screen role="root"><userinput>ninja install</userinput></screen>
216
217 <para>
218 The tests can now be run: issue
219 <command>ninja test</command>. The tests
220 require an active X or wayland session.
221 The <filename>native-unit</filename> is known to fail.
222 A lot of tests will fail if the opengl rendering is not done in hardware.
223 </para>
224 </sect2>
225
226 <sect2 role="commands">
227 <title>Command Explanations</title>
228
229 <!-- https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5512
230 If debug is disabled, the "assertion 'CLUTTER_IS_ACTOR (self)'
231 failed" message will turn into a crash. Enabling debug is just a
232 work around, it's not a proper fix. -->
233 <para>
234 <parameter>--buildtype=debugoptimized</parameter>: Override the
235 default buildtype (<quote>debug</quote>), which would produce
236 unoptimized binaries. It's used instead of
237 <option>--buildtype=release</option> to work around an issue
238 causing gnome-shell to crash.
239 </para>
240<!--
241 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
242 href="../../xincludes/meson-buildtype-release.xml"/>
243-->
244 <para>
245 <parameter>-Dtests=false</parameter>: Prevents building the tests,
246 and removes a hard requirement on <command>xvfb-run</command>.
247 </para>
248
249 <para>
250 <option>-Dprofiler=false</option>: Use this option if
251 <application>Sysprof</application> is not installed, and you don't
252 want meson to download <application>Sysprof</application> source
253 code.
254 </para>
255
256 </sect2>
257
258 <sect2 role="starting" id="mutter-starting">
259 <title>Starting Mutter</title>
260
261 <!-- Mutter as a Wayland compositor Works with mutter-42.4 and 43.0.
262 IIRC mutter can also be used as a X window manager: just replace
263 "twm" with "mutter &dash;&dash;x11" in xinitrc. But I've not tested
264 such a configuration recently (I don't build Xorg Server or xinit
265 these days. -->
266
267 <para>
268 <application>Mutter</application> is normally used as a component of
269 <application>gnome-shell</application>, but it can be used as a
270 standalone Wayland compositor too. To run
271 <application>Mutter</application> as a Wayland compositor, in a
272 virtual console, issue:
273 </para>
274
275 <screen role='nodump'><userinput>mutter --wayland -- vte-2.91</userinput></screen>
276
277 <para>
278 Replace <command>vte-2.91</command> with the command line for the
279 first application you want in the Wayland session. Note that once this
280 application exits, the Wayland session will be terminated.
281 </para>
282
283 <para>
284 <application>Mutter</application> can also function as a nested
285 compositor in another Wayland session. In a terminal emulator, issue:
286 </para>
287
288 <screen role='nodump'><userinput>MUTTER_DEBUG_DUMMY_MODE_SPECS=1920x1080 mutter --wayland --nested -- vte-2.91</userinput></screen>
289
290 <para>
291 Replace <replaceable>1920x1080</replaceable> with the size you want
292 for the nested Wayland session.
293 </para>
294 </sect2>
295
296 <sect2 role="content">
297 <title>Contents</title>
298
299 <segmentedlist>
300 <segtitle>Installed Programs</segtitle>
301 <segtitle>Installed Libraries</segtitle>
302 <segtitle>Installed Directories</segtitle>
303
304 <seglistitem>
305 <seg>
306 mutter
307 </seg>
308 <seg>
309 libmutter-10.so
310 </seg>
311 <seg>
312 /usr/{lib,include,libexec/installed-tests,share/{,installed-tests}}/mutter-10
313 </seg>
314 </seglistitem>
315 </segmentedlist>
316
317 <variablelist>
318 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
319 <?dbfo list-presentation="list"?>
320 <?dbhtml list-presentation="table"?>
321
322 <varlistentry id="mutter-prog">
323 <term><command>mutter</command></term>
324 <listitem>
325 <para>
326 is a <application>Clutter</application> based compositing
327 <application>GTK+</application> Window Manager
328 </para>
329 <indexterm zone="mutter mutter-prog">
330 <primary sortas="b-mutter">mutter</primary>
331 </indexterm>
332 </listitem>
333 </varlistentry>
334
335 <varlistentry id="libmutter">
336 <term><filename class="libraryfile">libmutter-9.so</filename></term>
337 <listitem>
338 <para>
339 contains the <application>Mutter</application> API functions
340 </para>
341 <indexterm zone="mutter libmutter">
342 <primary sortas="c-libmutter">libmutter-9.so</primary>
343 </indexterm>
344 </listitem>
345 </varlistentry>
346
347 </variablelist>
348
349 </sect2>
350
351</sect1>
Note: See TracBrowser for help on using the repository browser.