WebKitGTK-2.40.1

Introduction to WebKitGTK

The WebKitGTK package is a port of the portable web rendering engine WebKit to the GTK+ 3 and GTK 4 platforms.

[Note]

Note

Development versions of BLFS may not build or run some packages properly if dependencies have been updated since the most recent stable versions of the book.

Package Information

  • Download (HTTP): https://webkitgtk.org/releases/webkitgtk-2.40.1.tar.xz

  • Download MD5 sum: 20aa14992701802a58bb5e333296a963

  • Download size: 38 MB

  • Estimated disk space required: 1.1 GB (174 MB installed)

  • Estimated build time: 34 SBU (for GTK-3, using parallelism=4, add 36 SBU for GTK-4)

WebKitGTK Dependencies

Required

Cairo-1.17.6, CMake-3.26.3, gst-plugins-base-1.22.2, gst-plugins-bad-1.22.2, GTK+-3.24.37, GTK-4.10.3, ICU-73.1, Little CMS-2.14, libgudev-237, libsecret-0.20.5, libsoup-3.4.2, libtasn1-4.19.0, libwebp-1.3.0, Mesa-23.0.3, OpenJPEG-2.5.0, Ruby-3.2.2, SQLite-3.41.2, unifdef-2.12, Which-2.21, and wpebackend-fdo-1.14.2

Recommended

Optional

bubblewrap-0.8.0, Gi-DocGen-2023.1, HarfBuzz-7.3.0, Wayland-1.22.0, WOFF2-1.0.2, ccache, Hyphen, libmanette, and xdg-dbus-proxy

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/webkitgtk

Installation of WebKitGTK

Installation of WebKitGTK

Fix a non-standard grammar consturction rejected by GCC 13:

sed '/m_brush =/s/{/Brush {/' \
    -i Source/WebCore/platform/graphics/SourceBrush.cpp
[Important]

Important

This package allows building with either GTK-3 or GTK-4, but not both in the same build. The GTK-4 version is needed for packages such as Epiphany-44.2. Other packages, such as Balsa-2.6.4 or Evolution-3.46.4, require the GTK-3 version. Both versions can be installed side by side on the same system. We give build instructions for both cases below, but the only difference is the setting of -DUSE_GTK4

If you want to install the GTK+-3 version of WebKitGTK, run the following commands:

mkdir -vp build &&
cd        build &&

cmake -DCMAKE_BUILD_TYPE=Release  \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_SKIP_RPATH=ON       \
      -DPORT=GTK                  \
      -DLIB_INSTALL_DIR=/usr/lib  \
      -DUSE_LIBHYPHEN=OFF         \
      -DENABLE_GAMEPAD=OFF        \
      -DENABLE_MINIBROWSER=ON     \
      -DENABLE_DOCUMENTATION=OFF  \
      -DUSE_WOFF2=OFF             \
      -DUSE_GTK4=OFF              \
      -DUSE_WPE_RENDERER=ON       \
      -DENABLE_JOURNALD_LOG=OFF   \
      -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
      -Wno-dev -G Ninja ..        &&
ninja

This package does not have a working test suite. However, there is a usable basic graphical web browser in the build directory, build/bin/MiniBrowser. If launching it fails, there is a problem with the build.

Now, as the root user:

ninja install

As the -DENABLE_DOCUMENTATION=OFF option is used, the documentation is not rebuilt nor installed now. If you need the documentation, you can either install Gi-DocGen-2023.1 and remove this option from the cmake command, or install the pre-built documentation instead:

install -vdm755 /usr/share/gtk-doc/html/{jsc-glib,webkit2gtk{,-web-extension}}-4.1 &&
install -vm644  ../Documentation/jsc-glib-4.1/*              \
                /usr/share/gtk-doc/html/jsc-glib-4.1         &&
install -vm644  ../Documentation/webkit2gtk-4.1/*            \
                /usr/share/gtk-doc/html/webkit2gtk-4.1       &&
install -vm644  ../Documentation/webkit2gtk-web-extension-4.1/* \
                /usr/share/gtk-doc/html/webkit2gtk-web-extension-4.1

If you want to install the GTK4 version of WebKitGTK, run the following commands:

rm -rf * .[^.]* &&

cmake -DCMAKE_BUILD_TYPE=Release  \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_SKIP_RPATH=ON       \
      -DPORT=GTK                  \
      -DLIB_INSTALL_DIR=/usr/lib  \
      -DUSE_LIBHYPHEN=OFF         \
      -DENABLE_GAMEPAD=OFF        \
      -DENABLE_MINIBROWSER=ON     \
      -DENABLE_DOCUMENTATION=OFF  \
      -DUSE_WOFF2=OFF             \
      -DUSE_GTK4=ON               \
      -DUSE_WPE_RENDERER=ON       \
      -DENABLE_JOURNALD_LOG=OFF   \
      -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
      -Wno-dev -G Ninja ..        &&
ninja

Now, as the root user:

ninja install

Command Explanations

-DUSE_LIBHYPHEN=OFF: This switch disables the default automatic hyphenation implementation. You need to install Hyphen if you wish to enable it (replacing OFF with ON or just removing the switch).

-DENABLE_DOCUMENTATION=OFF: This switch disables regenerating the documentation. Remove this switch if you have Gi-DocGen-2023.1 installed and wish to regenerate the documentation.

-DENABLE_GAMEPAD=OFF: This switch disables gamepad support. Remove this switch if you have libmanette installed and wish to enable it.

-DENABLE_MINIBROWSER=ON: This switch enables compiling and installing the MiniBrowser.

-DUSE_WPE_RENDERER=ON: This switch uses the WPE renderer, which is recommended by upstream.

-DENABLE_BUBBLEWRAP_SANDBOX=OFF: Remove this switch if the optional packages bubblewrap-0.8.0 and xdg-dbus-proxy are installed.

-DENABLE_JOURNALD_LOG=OFF: This switch disables using the systemd journal for logging errors and debugging information since it is not available on SysV systems.

-DUSE_SYSTEM_MALLOC=ON: This switch enables building against the system installed malloc.

-DENABLE_GEOLOCATION=OFF: Use this switch if you don't want to install GeoClue-2.7.0.

-DUSE_AVIF=OFF: Use this switch if you don't want to install libavif-0.11.1. Note that you will not have support for AVIF images if you do this.

-DUSE_WOFF2=ON: Use this switch if the optional package WOFF2-1.0.2 is installed. This adds additional support for fonts.

Contents

Installed Program: WebKitWebDriver
Installed Libraries: libjavascriptcoregtk-4.1.so, libjavascriptcoregtk-6.0.so, libwebkit2gtk-4.1.so, and libwebkitgtk-6.0.so
Installed Directories: /usr/include/webkitgtk-4.1, /usr/include/webkitgtk-6.0, /usr/lib{,exec}/webkit2gtk-4.1, /usr/lib{,exec}/webkitgtk-6.0, and /usr/share/gtk-doc/html/{jsc-glib,webkit2gtk{,-web-extension}}-4.1

Short Descriptions

WebKitWebDriver

allows debugging and automation of web pages and browsers

libjavascriptcoregtk-4.1.so

contains core JavaScript API functions used by jsc and libwebkit2gtk-4.1

libjavascriptcoregtk-6.0.so

contains core JavaScript API functions used by jsc and libwebkitgtk-6.0.so

libwebkit2gtk-4.1.so

contains the WebKit2 API functions

libwebkitgtk-6.0.so

contains the WebKit API functions for GTK-4 applications