summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.48.3.bb
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2025-07-24 17:35:18 -0700
committerKhem Raj <raj.khem@gmail.com>2025-07-25 17:09:24 -0700
commit2d6d0b75137b8fdd0cf04a732e5d8f79d9d8b335 (patch)
tree4468c2e43e7d1f49aa986d75a700e54f926e6c50 /meta-oe/recipes-support/webkitgtk/webkitgtk3_2.48.3.bb
parent03d0884f749b554c1789001ddcaac0f1d9559c48 (diff)
downloadmeta-openembedded-2d6d0b75137b8fdd0cf04a732e5d8f79d9d8b335.tar.gz
webkitgtk3: Upgrade to 2.48.3
WebKitGTK 2.48.3 release: Fix a crash introduced by the new threaded rendering implementation using Skia API. Improve rendering performance by recording layers once and replaying every dirty region in different worker threads. Fix a crash when setting WEBKIT_SKIA_GPU_PAINTING_THREADS=0. Fix a reference cycle in webkitmediastreamsrc preventing its disposal. WebKitGTK 2.48.2 release: Enable CSS Overscroll Behavior by default. Change threaded rendering implementation to use Skia API instead of WebCore display list that is not thread safe. Fix rendering when device scale factor change comes before the web view geometry update. Fix network process crash on exit. Fix the build with ENABLE_RESOURCE_USAGE=OFF. Fix several crashes and rendering issues. Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe/recipes-support/webkitgtk/webkitgtk3_2.48.3.bb')
-rw-r--r--meta-oe/recipes-support/webkitgtk/webkitgtk3_2.48.3.bb192
1 files changed, 192 insertions, 0 deletions
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.48.3.bb b/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.48.3.bb
new file mode 100644
index 0000000000..23cacc021b
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.48.3.bb
@@ -0,0 +1,192 @@
1SUMMARY = "WebKit web rendering engine for the GTK+ platform"
2DESCRIPTION = "\
3 This recipe builds with Gtk3 (instead of Gtk4) which results in API version 4.1 \
4 (having javascriptcoregtk-4.1.pc instead of 6.0). \
5"
6HOMEPAGE = "https://www.webkitgtk.org/"
7BUGTRACKER = "https://bugs.webkit.org/"
8
9LICENSE = "BSD-2-Clause & LGPL-2.0-or-later"
10LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
11 file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
12 file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
13 file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
14 "
15
16SRC_URI = "https://www.webkitgtk.org/releases/webkitgtk-${PV}.tar.xz \
17 file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
18 file://reproducibility.patch \
19 file://no-musttail-arm.patch \
20 file://sys_futex.patch \
21 file://0001-Fix-build-errors-on-RISCV-https-bugs.webkit.org-show.patch \
22 file://fix-ftbfs-riscv64.patch \
23 "
24SRC_URI[sha256sum] = "d4dc5970f0fc6a529ff7fd67bcbfab2bbb5e91be789b2e9279640b3217a782c3"
25
26inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen
27
28S = "${UNPACKDIR}/webkitgtk-${PV}"
29
30ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
31REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}"
32
33CVE_PRODUCT = "webkitgtk webkitgtk\+"
34
35DEPENDS += " \
36 ruby-native \
37 gperf-native \
38 unifdef-native \
39 cairo \
40 harfbuzz \
41 jpeg \
42 atk \
43 libwebp \
44 gtk+3 \
45 libxslt \
46 libtasn1 \
47 libnotify \
48 gstreamer1.0 \
49 gstreamer1.0-plugins-base \
50 glib-2.0-native \
51 gettext-native \
52 "
53
54# using soup2 builds (JavaScript) API version 4.0
55# using soup3 builds (JavaScript) API version 4.1
56PACKAGECONFIG_SOUP ?= "soup3"
57PACKAGECONFIG ??= " \
58 ${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
59 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
60 ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \
61 ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
62 enchant \
63 libsecret \
64 ${PACKAGECONFIG_SOUP} \
65 "
66
67PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
68PACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF"
69PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
70PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
71PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
72PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
73PACKAGECONFIG[jpegxl] = " -DUSE_JPEGXL=ON,-DUSE_JPEGXL=OFF,libjxl"
74PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/egl"
75PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/egl"
76PACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF"
77PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
78PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
79PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
80PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
81PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
82PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
83PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms"
84PACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3"
85PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
86PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
87PACKAGECONFIG[avif] = "-DUSE_AVIF_LOG=ON,-DUSE_AVIF=OFF,libavif"
88PACKAGECONFIG[media-recorder] = "-DENABLE_MEDIA_RECORDER=ON,-DENABLE_MEDIA_RECORDER=OFF,gstreamer1.0-plugins-bad"
89PACKAGECONFIG[gamepad] = "-DENABLE_GAMEPAD=ON,-DENABLE_GAMEPAD=OFF,libmanette"
90PACKAGECONFIG[webrtc] = "-DENABLE_WEB_RTC=ON,-DENABLE_WEB_RTC=OFF"
91PACKAGECONFIG[bubblewrap] = "-DENABLE_BUBBLEWRAP_SANDBOX=ON -DBWRAP_EXECUTABLE=${bindir}/bwrap -DDBUS_PROXY_EXECUTABLE=${bindir}/xdg-dbus-proxy,-DENABLE_BUBBLEWRAP_SANDBOX=OFF,,bubblewrap xdg-dbus-proxy"
92PACKAGECONFIG[backtrace] = "-DUSE_LIBBACKTRACE=ON,-DUSE_LIBBACKTRACE=OFF,libbacktrace"
93PACKAGECONFIG[sysprof-capture] = "-DUSE_SYSTEM_SYSPROF_CAPTURE=YES,-DUSE_SYSTEM_SYSPROF_CAPTURE=NO,sysprof"
94PACKAGECONFIG[speech] = "-DENABLE_SPEECH_SYNTHESIS=ON,-DENABLE_SPEECH_SYNTHESIS=OFF,flite"
95
96EXTRA_OECMAKE = " \
97 -DPORT=GTK \
98 -DUSE_GTK4=OFF \
99 ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
100 ${@bb.utils.contains('GIDOCGEN_ENABLED', 'True', '-DENABLE_DOCUMENTATION=ON', '-DENABLE_DOCUMENTATION=OFF', d)} \
101 -DENABLE_MINIBROWSER=ON \
102 -DCMAKE_EXPORT_COMPILE_COMMANDS=OFF \
103 "
104# pass -g1 to massively reduce the size of the debug symbols (4.3GB to 700M at time of writing)
105DEBUG_LEVELFLAG = "-g1"
106
107# Javascript JIT is not supported on ARC
108EXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF "
109# By default 25-bit "medium" calls are used on ARC
110# which is not enough for binaries larger than 32 MiB
111CFLAGS:append:arc = " -mlong-calls"
112CXXFLAGS:append:arc = " -mlong-calls"
113
114# Needed for non-mesa graphics stacks when x11 is disabled
115CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
116
117# Javascript JIT is not supported on powerpc
118EXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF "
119EXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF "
120
121# ARM JIT code does not build on ARMv4/5/6 anymore
122EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
123EXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF "
124EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
125
126# And for armv7* don't enable it for softfp, because after:
127# https://github.com/WebKit/WebKit/commit/a2ec4ef1997d6fafa6ffc607bffb54e76168a918
128# https://bugs.webkit.org/show_bug.cgi?id=242172
129# softfp armv7* fails because WEBASSEMBLY is left enabled by default and JIT gets
130# explicitly disabled causing:
131# http://errors.yoctoproject.org/Errors/Details/734587/
132# PR was sent upstream, but the end result is the same both JIT and WEBASSEMBLY disabled
133# https://github.com/WebKit/WebKit/pull/17447
134EXTRA_OECMAKE:append:armv7a = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
135EXTRA_OECMAKE:append:armv7r = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
136EXTRA_OECMAKE:append:armv7ve = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
137
138# JIT does not work on RISCV
139EXTRA_OECMAKE:append:riscv32 = " -DENABLE_JIT=OFF"
140
141# JIT not supported on MIPS either
142EXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
143
144# JIT not supported on X32
145# An attempt was made to upstream JIT support for x32 in
146# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
147# unresolved due to limited X32 adoption.
148EXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF "
149
150SECURITY_CFLAGS:remove:aarch64 = "-fpie"
151SECURITY_CFLAGS:append:aarch64 = " -fPIE"
152
153FILES:${PN} += "${libdir}/webkit2gtk-4.*/injected-bundle/libwebkit2gtkinjectedbundle.so"
154
155RRECOMMENDS:${PN} += "ca-certificates shared-mime-info"
156
157# http://errors.yoctoproject.org/Errors/Details/20370/
158ARM_INSTRUCTION_SET:armv4 = "arm"
159ARM_INSTRUCTION_SET:armv5 = "arm"
160ARM_INSTRUCTION_SET:armv6 = "arm"
161
162# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
163# https://bugs.webkit.org/show_bug.cgi?id=159880
164# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
165# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
166ARM_INSTRUCTION_SET:armv7a = "thumb"
167ARM_INSTRUCTION_SET:armv7r = "thumb"
168ARM_INSTRUCTION_SET:armv7ve = "thumb"
169
170# ANGLE requires SSE support as of webkit 2.40.x on 32 bit x86
171COMPATIBLE_HOST:x86 = "${@bb.utils.contains_any('TUNE_FEATURES', 'core2 corei7', '.*', 'null', d)}"
172
173# introspection inside qemu-arm hangs forever on musl/arm builds
174# therefore disable GI_DATA
175GI_DATA_ENABLED:libc-musl:armv7a = "False"
176GI_DATA_ENABLED:libc-musl:armv7ve = "False"
177
178do_install:append() {
179 mv ${D}${bindir}/WebKitWebDriver ${D}${bindir}/WebKitWebDriver3
180}
181
182PACKAGE_PREPROCESS_FUNCS += "src_package_preprocess"
183src_package_preprocess () {
184 # Trim build paths from comments in generated sources to ensure reproducibility
185 sed -i -e "s,${WORKDIR},,g" \
186 ${B}/JavaScriptCore/DerivedSources/*.h \
187 ${B}/JavaScriptCore/DerivedSources/yarr/*.h \
188 ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \
189 ${B}/WebCore/DerivedSources/*.cpp \
190 ${B}/WebKitGTK/DerivedSources/webkit/*.cpp
191}
192