source: x/lib/webkitgtk.xml@ f67c5c8

12.1 ken/TL2024 lazarus trunk xry111/llvm18
Last change on this file since f67c5c8 was 66765fe, checked in by Douglas R. Reno <renodr@…>, 3 months ago

Fix building WebKitGTK on i686 systems.

See https://bugs.webkit.org/show_bug.cgi?id=268739 and
https://github.com/WebKit/WebKit/commit/3d53735756

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