source: x/lib/webkitgtk.xml@ ef35d61

12.2 lazarus trunk xry111/for-12.3
Last change on this file since ef35d61 was ade0ad4, checked in by Douglas R. Reno <renodr@…>, 5 weeks ago

WebKitGTK: Fix a regression that causes crashes on some websites.

  • Property mode set to 100644
File size: 18.1 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
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 webkitgtk-download-http "https://webkitgtk.org/releases/webkitgtk-&webkitgtk-version;.tar.xz">
8 <!ENTITY webkitgtk-download-ftp " ">
9 <!ENTITY webkitgtk-md5sum "46cf81df314acbf62f811bcfd99f4769">
10 <!ENTITY webkitgtk-size "36 MB">
11 <!ENTITY webkitgtk-buildsize "1.2 GB (159 MB installed, add 154 MB for GTK-4)">
12 <!ENTITY webkitgtk-time "29 SBU (for GTK-3, using parallelism=8, add 30 SBU for GTK-4)">
13
14 <!ENTITY libbacktrace
15 "<ulink url='https://github.com/ianlancetaylor/libbacktrace'>libbacktrace</ulink>">
16]>
17
18<sect1 id="webkitgtk" xreflabel="WebKitGTK-&webkitgtk-version;">
19 <?dbhtml filename="webkitgtk.html"?>
20
21
22 <title>WebKitGTK-&webkitgtk-version;</title>
23
24 <indexterm zone="webkitgtk">
25 <primary sortas="a-WebKitGTK">WebKitGTK</primary>
26 </indexterm>
27
28 <sect2 role="package">
29 <title>Introduction to WebKitGTK</title>
30
31 <para>
32 The <application>WebKitGTK</application> package is a port of the
33 portable web rendering engine <application>WebKit</application> to the
34 <application>GTK+ 3</application> and <application>GTK 4</application>
35 platforms.
36 </para>
37
38 &lfs121_checked;
39
40 <bridgehead renderas="sect3">Package Information</bridgehead>
41 <itemizedlist spacing="compact">
42 <listitem>
43 <para>
44 Download (HTTP): <ulink url="&webkitgtk-download-http;"/>
45 </para>
46 </listitem>
47 <listitem>
48 <para>
49 Download (FTP): <ulink url="&webkitgtk-download-ftp;"/>
50 </para>
51 </listitem>
52 <listitem>
53 <para>
54 Download MD5 sum: &webkitgtk-md5sum;
55 </para>
56 </listitem>
57 <listitem>
58 <para>
59 Download size: &webkitgtk-size;
60 </para>
61 </listitem>
62 <listitem>
63 <para>
64 Estimated disk space required: &webkitgtk-buildsize;
65 </para>
66 </listitem>
67 <listitem>
68 <para>
69 Estimated build time: &webkitgtk-time;
70 </para>
71 </listitem>
72 </itemizedlist>
73
74<!--
75 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
76 <itemizedlist spacing="compact">
77 <listitem>
78 <para>
79 Required patch:
80 <ulink url="&patch-root;/webkitgtk-&webkitgtk-version;-upstream_fixes-1.patch"/>
81 </para>
82 </listitem>
83 </itemizedlist>
84-->
85
86 <bridgehead renderas="sect3">WebKitGTK Dependencies</bridgehead>
87
88 <bridgehead renderas="sect4">Required</bridgehead>
89 <para role="required">
90 <xref linkend="cairo"/>,
91 <xref linkend="cmake"/>,
92 <xref linkend="gst10-plugins-base"/>,
93 <xref linkend="gst10-plugins-bad"/>,
94 <xref linkend="gtk3"/>,
95 <xref linkend="gtk4"/>,
96 <xref linkend="icu"/>,
97 <xref linkend="lcms2"/>,
98 <xref linkend="libgudev"/>,
99 <xref linkend="libsecret"/>,
100 <xref linkend="libsoup3"/>,
101 <xref linkend="libtasn1"/>,
102 <xref linkend="libwebp"/>,
103 <xref linkend="mesa"/>,
104 <xref linkend="openjpeg2"/>,
105 <xref linkend="ruby"/>,
106 <xref linkend="sqlite"/>,
107 <xref linkend="unifdef"/>, and
108 <xref linkend="which"/>
109 </para>
110
111 <bridgehead renderas="sect4">Recommended</bridgehead>
112 <para role="recommended">
113 <xref linkend="bubblewrap"/>,
114 <xref linkend="enchant"/>,
115 <xref linkend="geoclue2"/>,
116 &gobject-introspection;,
117 <xref linkend="hicolor-icon-theme"/>,
118 <xref linkend="libavif"/>,
119 <xref linkend="libjxl"/>,
120 <xref linkend="libseccomp"/>, and
121 <xref linkend="xdg-dbus-proxy"/>
122 </para>
123
124 <bridgehead renderas="sect4">Optional</bridgehead>
125 <para role="optional">
126 <xref linkend="gi-docgen"/>,
127 <xref linkend="harfbuzz"/>,
128 <xref linkend="wayland"/>,
129 <xref linkend="woff2"/>,
130 <ulink url="https://ccache.dev/">ccache</ulink>,
131 <ulink url="https://sourceforge.net/projects/hunspell/files/Hyphen/">Hyphen</ulink>,
132 &libbacktrace;, and
133 <!--<ulink url="https://github.com/libjxl/libjxl">libjxl</ulink>, and-->
134 <ulink url="https://gnome.pages.gitlab.gnome.org/libmanette/">libmanette</ulink>
135 </para>
136
137 </sect2>
138
139 <sect2 role="installation">
140 <title>Installation of WebKitGTK</title>
141
142 <bridgehead renderas="sect3">Installation of
143 <application>WebKitGTK</application></bridgehead>
144
145 <important>
146 <para>
147 This package allows building with either GTK-3 or GTK-4, but not both
148 in the same build. The GTK-4 version is needed for packages such as
149 <xref linkend="epiphany"/>. Other packages, such as
150 <xref linkend="balsa"/> or <xref linkend="evolution"/>, require the
151 GTK-3 version. Both versions can be installed side by side on the
152 same system. We give build instructions for both cases below, but
153 the only difference is the setting of <command>-DUSE_GTK4</command>
154 </para>
155 </important>
156
157 <para>
158 First, fix a regression that occurs with some websites that use
159 WebAssembly: <!-- Ticket #20235 -->
160 </para>
161
162<screen><userinput remap="pre">sed '/returnLocation.isStackArgument/,/returnLocation = canonicalLocation/d'\
163 -i Source/JavaScriptCore/wasm/WasmBBQJIT.cpp</userinput></screen>
164
165 <para>
166 If you want to install the GTK+-3 version of
167 <application>WebKitGTK</application>, run the following commands:
168 </para>
169
170<screen revision="systemd"><userinput>mkdir -vp build &amp;&amp;
171cd build &amp;&amp;
172
173cmake -D CMAKE_BUILD_TYPE=Release \
174 -D CMAKE_INSTALL_PREFIX=/usr \
175 -D CMAKE_SKIP_INSTALL_RPATH=ON \
176 -D PORT=GTK \
177 -D LIB_INSTALL_DIR=/usr/lib \
178 -D USE_LIBBACKTRACE=OFF \
179 -D USE_LIBHYPHEN=OFF \
180 -D ENABLE_GAMEPAD=OFF \
181 -D ENABLE_MINIBROWSER=ON \
182 -D ENABLE_DOCUMENTATION=OFF \
183 -D ENABLE_WEBDRIVER=OFF \
184 -D USE_WOFF2=OFF \
185 -D USE_GTK4=OFF \
186 -D ENABLE_BUBBLEWRAP_SANDBOX=ON \
187 -W no-dev -G Ninja .. &amp;&amp;
188ninja</userinput></screen>
189
190<screen revision="sysv"><userinput>mkdir -vp build &amp;&amp;
191cd build &amp;&amp;
192
193cmake -D CMAKE_BUILD_TYPE=Release \
194 -D CMAKE_INSTALL_PREFIX=/usr \
195 -D CMAKE_SKIP_INSTALL_RPATH=ON \
196 -D PORT=GTK \
197 -D LIB_INSTALL_DIR=/usr/lib \
198 -D USE_LIBBACKTRACE=OFF \
199 -D USE_LIBHYPHEN=OFF \
200 -D ENABLE_GAMEPAD=OFF \
201 -D ENABLE_MINIBROWSER=ON \
202 -D ENABLE_DOCUMENTATION=OFF \
203 -D ENABLE_WEBDRIVER=OFF \
204 -D USE_WOFF2=OFF \
205 -D USE_GTK4=OFF \
206 -D ENABLE_JOURNALD_LOG=OFF \
207 -D ENABLE_BUBBLEWRAP_SANDBOX=ON \
208 -W no-dev -G Ninja .. &amp;&amp;
209ninja</userinput></screen>
210
211 <para>
212 This package does not have a working test suite. However, there is a
213 usable basic graphical web browser in the build directory,
214 <application>build/bin/MiniBrowser</application>. If launching it fails,
215 there is a problem with the build.
216 </para>
217
218 <para>
219 Now, as the <systemitem class="username">root</systemitem> user:
220 </para>
221
222<screen role="root"><userinput>ninja install</userinput></screen>
223
224 <para>
225 If you want to install the GTK4 version of
226 <application>WebKitGTK</application>, run the following commands:
227 </para>
228
229<screen revision="systemd"><userinput>rm -rf * .[^.]* &amp;&amp;
230
231cmake -D CMAKE_BUILD_TYPE=Release \
232 -D CMAKE_INSTALL_PREFIX=/usr \
233 -D CMAKE_SKIP_INSTALL_RPATH=ON \
234 -D PORT=GTK \
235 -D LIB_INSTALL_DIR=/usr/lib \
236 -D USE_LIBBACKTRACE=OFF \
237 -D USE_LIBHYPHEN=OFF \
238 -D ENABLE_GAMEPAD=OFF \
239 -D ENABLE_MINIBROWSER=ON \
240 -D ENABLE_DOCUMENTATION=OFF \
241 -D USE_WOFF2=OFF \
242 -D USE_GTK4=ON \
243 -D ENABLE_BUBBLEWRAP_SANDBOX=ON \
244 -W no-dev -G Ninja .. &amp;&amp;
245ninja</userinput></screen>
246
247<screen revision="sysv"><userinput>rm -rf * .[^.]* &amp;&amp;
248
249cmake -D CMAKE_BUILD_TYPE=Release \
250 -D CMAKE_INSTALL_PREFIX=/usr \
251 -D CMAKE_SKIP_INSTALL_RPATH=ON \
252 -D PORT=GTK \
253 -D LIB_INSTALL_DIR=/usr/lib \
254 -D USE_LIBBACKTRACE=OFF \
255 -D USE_LIBHYPHEN=OFF \
256 -D ENABLE_GAMEPAD=OFF \
257 -D ENABLE_MINIBROWSER=ON \
258 -D ENABLE_DOCUMENTATION=OFF \
259 -D USE_WOFF2=OFF \
260 -D USE_GTK4=ON \
261 -D ENABLE_JOURNALD_LOG=OFF \
262 -D ENABLE_BUBBLEWRAP_SANDBOX=ON \
263 -W no-dev -G Ninja .. &amp;&amp;
264ninja</userinput></screen>
265
266 <para>
267 Now, as the <systemitem class="username">root</systemitem> user:
268 </para>
269
270<screen role="root"><userinput>ninja install</userinput></screen>
271
272 <para>
273 As the <option>-D ENABLE_DOCUMENTATION=OFF</option> option is used,
274 the documentation is not rebuilt nor installed now. If you need the
275 documentation, you can either install <xref linkend='gi-docgen'/>
276 and remove this option from the <command>cmake</command> command,
277 or install the pre-built documentation (only for the GTK-4 version)
278 instead:
279 </para>
280
281<screen role='root'><userinput>install -vdm755 /usr/share/gtk-doc/html &amp;&amp;
282cp -rv ../Documentation/* /usr/share/gtk-doc/html</userinput></screen>
283
284 </sect2>
285
286 <sect2 role="commands">
287 <title>Command Explanations</title>
288
289<!-- <para>
290 <command>sed ... TextCheckerEnchant.cpp</command>: This command
291 is needed to allow the build to complete with enchant-2.x.
292 </para> -->
293
294 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
295 href="../../xincludes/cmake-skip-install-rpath.xml"/>
296
297 <para>
298 <parameter>-D USE_LIBBACKTRACE=OFF</parameter>: This switch disables
299 the use of libbacktrace for dumping a stack trace when a crash
300 happens. You need to install &libbacktrace; if you wish to enable it
301 (replacing OFF with ON or just removing the switch).
302 </para>
303
304 <para>
305 <parameter>-D USE_LIBHYPHEN=OFF</parameter>: This switch disables the
306 default automatic hyphenation implementation. You need to install
307 <ulink
308 url="https://sourceforge.net/projects/hunspell/files/Hyphen/">Hyphen</ulink>
309 if you wish to enable it (replacing OFF with ON or just removing
310 the switch).
311 </para>
312
313 <para>
314 <parameter>-D ENABLE_DOCUMENTATION=OFF</parameter>: This switch disables
315 regenerating the documentation. Remove this switch if you have
316 <xref linkend="gi-docgen"/>
317 installed and wish to regenerate the documentation.
318 </para>
319
320 <para>
321 <parameter>-D ENABLE_GAMEPAD=OFF</parameter>: This switch disables
322 gamepad support. Remove this switch if you have
323 <ulink url="https://gnome.pages.gitlab.gnome.org/libmanette/">libmanette</ulink>
324 installed and wish to enable it.
325 </para>
326
327 <para>
328 <parameter>-D ENABLE_MINIBROWSER=ON</parameter>: This switch enables
329 compiling and installing the MiniBrowser.
330 </para>
331
332 <para>
333 <parameter>-D ENABLE_WEBDRIVER=OFF</parameter>: This switch disables
334 compiling and installing <command>WebKitWebDriver</command>. We use
335 it for the GTK-3 build because the <command>WebKitWebDriver</command>
336 from the GTK-3 build will be overwritten by the GTK-4 build anyway.
337 Remove this option if you don't plan to build this package with
338 GTK-4.
339 </para>
340
341<!--
342 <para>
343 <parameter>-D USE_JPEGXL=OFF</parameter>: This switch turns off support
344 for JPEG-XL images. Remove it if you have the optional package
345 <ulink url="https://github.com/libjxl/libjxl">libjxl</ulink> installed.
346 </para>
347-->
348 <para>
349 <parameter>-D ENABLE_BUBBLEWRAP_SANDBOX=ON</parameter>: This switch
350 enables the Bubblewrap sandbox, which helps mitigate the impact of most
351 security vulnerabilities in this package. Change this switch to OFF if
352 you do not want to install <xref linkend="bubblewrap" role="nodep"/>,
353 <xref linkend='libseccomp' role="nodep"/>, or
354 <xref linkend="xdg-dbus-proxy" role="nodep"/>, but note that this may
355 put you at risk.
356 <!-- Note: This works well on both i686 and x86_64. -renodr -->
357 </para>
358
359 <para revision="sysv">
360 <parameter>-D ENABLE_JOURNALD_LOG=OFF</parameter>: This switch disables using the
361 systemd journal for logging errors and debugging information since it
362 is not available on SysV systems.
363 </para>
364
365 <para>
366 <option>-D USE_SYSTEM_MALLOC=ON</option>: This switch enables building
367 against the system installed <application>malloc</application>.
368 </para>
369
370 <para>
371 <option>-D ENABLE_GEOLOCATION=OFF</option>: Use this switch if you don't
372 want to install <xref linkend="geoclue2"/>.
373 </para>
374
375 <para>
376 <option>-D USE_AVIF=OFF</option>: Use this switch if you don't want to
377 install <xref linkend="libavif"/>. Note that you will not have support
378 for AVIF images if you do this.
379 </para>
380
381 <para>
382 <option>-D USE_WOFF2=ON</option>: Use this switch if the optional
383 package <xref linkend="woff2"/> is installed. This adds additional
384 support for fonts.
385 </para>
386
387 <para>
388 <option>-D USE_JPEGXL=OFF</option>: Use this switch if the recommended
389 package <xref linkend="libjxl"/> is not installed. Note that you will not
390 have support for JPEG XL images if this option is passed.
391 </para>
392
393 </sect2>
394
395 <sect2 role="content">
396 <title>Contents</title>
397
398 <segmentedlist>
399 <segtitle>Installed Program</segtitle>
400 <segtitle>Installed Libraries</segtitle>
401 <segtitle>Installed Directories</segtitle>
402
403 <seglistitem>
404 <seg>
405<!-- Moved to /usr/libexec/webkit2gtk-4.0, so shouldn't appear here
406 jsc,
407 MiniBrowser, and -->
408 WebKitWebDriver
409 </seg>
410 <seg>
411 libjavascriptcoregtk-4.1.so,
412 libjavascriptcoregtk-6.0.so,
413 libwebkit2gtk-4.1.so, and
414 libwebkitgtk-6.0.so
415 </seg>
416 <seg>
417 /usr/include/webkitgtk-4.1,
418 /usr/include/webkitgtk-6.0,
419 /usr/lib{,exec}/webkit2gtk-4.1,
420 /usr/lib{,exec}/webkitgtk-6.0,
421 /usr/share/gtk-doc/html/{jsc-glib,webkit2gtk{,-web-extension}}-4.1
422 (optional), and
423 /usr/share/gtk-doc/html/{jsc-glib,webkit2gtk{,-web-process-extension}}-6.0
424 </seg>
425 </seglistitem>
426 </segmentedlist>
427
428 <variablelist>
429 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
430 <?dbfo list-presentation="list"?>
431 <?dbhtml list-presentation="table"?>
432
433<!--
434 <varlistentry id="jsc">
435 <term><command>jsc</command></term>
436 <listitem>
437 <para>
438 is a command-line utility that allows you to run JavaScript programs
439 outside of the context of a web browser.
440 </para>
441 <indexterm zone="webkitgtk jsc">
442 <primary sortas="b-jsc">jsc</primary>
443 </indexterm>
444 </listitem>
445 </varlistentry>
446
447 <varlistentry id="MiniBrowser">
448 <term><command>MiniBrowser</command></term>
449 <listitem>
450 <para>
451 is a very simple graphical browser.
452 </para>
453 <indexterm zone="webkitgtk MiniBrowser">
454 <primary sortas="b-MiniBrowser">MiniBrowser</primary>
455 </indexterm>
456 </listitem>
457 </varlistentry>
458-->
459 <varlistentry id="WebKitWebDriver">
460 <term><command>WebKitWebDriver</command></term>
461 <listitem>
462 <para>
463 allows debugging and automation of web pages and browsers
464 </para>
465 <indexterm zone="webkitgtk WebKitWebDriver">
466 <primary sortas="b-WebKitWebDriver">WebKitWebDriver</primary>
467 </indexterm>
468 </listitem>
469 </varlistentry>
470
471 <varlistentry id="libjavascriptcoregtk-4.1">
472 <term>
473 <filename class="libraryfile">libjavascriptcoregtk-4.1.so</filename>
474 </term>
475 <listitem>
476 <para>
477 contains core JavaScript API functions used by
478 <command>jsc</command> and
479 <filename class="libraryfile">libwebkit2gtk-4.1</filename>
480 </para>
481 <indexterm zone="webkitgtk libjavascriptcoregtk-4.1">
482 <primary sortas="c-libjavascriptcoregtk-4.1">libjavascriptcoregtk-4.1.so</primary>
483 </indexterm>
484 </listitem>
485 </varlistentry>
486
487 <varlistentry id="libjavascriptcoregtk-6.0">
488 <term><filename class="libraryfile">libjavascriptcoregtk-6.0.so</filename></term>
489 <listitem>
490 <para>
491 contains core JavaScript API functions used by
492 <command>jsc</command> and
493 <filename class="libraryfile">libwebkitgtk-6.0</filename>
494 </para>
495 <indexterm zone="webkitgtk libjavascriptcoregtk-6.0">
496 <primary sortas="c-libjavascriptcoregtk-6.0">libjavascriptcoregtk-6.0.so</primary>
497 </indexterm>
498 </listitem>
499 </varlistentry>
500
501 <varlistentry id="libwebkit2gtk-4">
502 <term><filename class="libraryfile">libwebkit2gtk-4.1.so</filename></term>
503 <listitem>
504 <para>
505 contains the <application>WebKit2</application> API functions
506 </para>
507 <indexterm zone="webkitgtk libwebkit2gtk-4">
508 <primary sortas="c-libwebkit2gtk-4">libwebkit2gtk-4.1.so</primary>
509 </indexterm>
510 </listitem>
511 </varlistentry>
512
513 <varlistentry id="libwebkitgtk-6">
514 <term><filename class="libraryfile">libwebkitgtk-6.0.so</filename></term>
515 <listitem>
516 <para>
517 contains the <application>WebKit</application> API functions for
518 GTK-4 applications
519 </para>
520 <indexterm zone="webkitgtk libwebkitgtk-6">
521 <primary sortas="c-libwebkitgtk-6">libwebkitgtk-6.0.so</primary>
522 </indexterm>
523 </listitem>
524 </varlistentry>
525
526 </variablelist>
527
528 </sect2>
529
530</sect1>
Note: See TracBrowser for help on using the repository browser.