summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Volk <f_l_k@t-online.de>2023-07-27 22:09:06 +0200
committerKhem Raj <raj.khem@gmail.com>2023-07-28 07:27:07 -0700
commit213a15cb90ead62f606e0d98fda941e090e3e0a8 (patch)
tree84388f58b999bd5c7e8c482431d6b47918d39465
parent54d25dc2025313aeedcb4340329b564ecd6d1105 (diff)
downloadmeta-openembedded-213a15cb90ead62f606e0d98fda941e090e3e0a8.tar.gz
webkitgtk3: add recipe
- Change the meta-gnome recipes to use the gtk3 variant of webkitgtk - Import gcr3 recipe from oe-core Most Gnome recipes require webkitgtk built with gtk+3. oe-core is in the process of updating webkitgtk to be built with gtk4. It will be necessary to add a recipe that provides the gtk+3 variant, or we wont be able to use e.g. geary with gmail addresses or provide google integration for gnome-calendar or nautilus/files. Signed-off-by: Markus Volk <f_l_k@t-online.de> Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-gnome/recipes-connectivity/geary/geary_43.0.bb2
-rw-r--r--meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb2
-rw-r--r--meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb2
-rw-r--r--meta-gnome/recipes-gnome/yelp/yelp_42.2.bb2
-rw-r--r--meta-gnome/recipes-gnome/zenity/zenity_3.44.0.bb2
-rw-r--r--meta-oe/recipes-extended/wxwidgets/wxwidgets_3.2.1.bb2
-rw-r--r--meta-oe/recipes-gnome/gcr/gcr3/0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch36
-rw-r--r--meta-oe/recipes-gnome/gcr/gcr3_3.41.1.bb59
-rw-r--r--meta-oe/recipes-graphics/surf/surf_2.1.bb2
-rw-r--r--meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch29
-rw-r--r--meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-Source-JavaScriptCore-CMakeLists.txt-ensure-reproduc.patch28
-rw-r--r--meta-oe/recipes-support/webkitgtk/webkitgtk3/0d3344e17d258106617b0e6d783d073b188a2548.patch310
-rw-r--r--meta-oe/recipes-support/webkitgtk/webkitgtk3/4977290ab4ab35258a6da9b13795c9b0f7894bf4.patch41
-rw-r--r--meta-oe/recipes-support/webkitgtk/webkitgtk3/check-GST_GL_HAVE_PLATFORM_GLX.patch33
-rw-r--r--meta-oe/recipes-support/webkitgtk/webkitgtk3/reproducibility.patch22
-rw-r--r--meta-oe/recipes-support/webkitgtk/webkitgtk3_2.40.2.bb169
16 files changed, 734 insertions, 7 deletions
diff --git a/meta-gnome/recipes-connectivity/geary/geary_43.0.bb b/meta-gnome/recipes-connectivity/geary/geary_43.0.bb
index 6085d94fd..bab4f909e 100644
--- a/meta-gnome/recipes-connectivity/geary/geary_43.0.bb
+++ b/meta-gnome/recipes-connectivity/geary/geary_43.0.bb
@@ -26,7 +26,7 @@ DEPENDS = " \
26 libstemmer \ 26 libstemmer \
27 libxml2 \ 27 libxml2 \
28 sqlite3 \ 28 sqlite3 \
29 webkitgtk \ 29 webkitgtk3 \
30" 30"
31 31
32RDEPENDS:${PN} = "gnome-keyring" 32RDEPENDS:${PN} = "gnome-keyring"
diff --git a/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb b/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
index 43717a84c..edbe30ff8 100644
--- a/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
+++ b/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
@@ -37,7 +37,7 @@ EXTRA_OECMAKE:append:class-target = " -DG_IR_SCANNER=${STAGING_BINDIR}/g-ir-scan
37PACKAGECONFIG ?= "oauth" 37PACKAGECONFIG ?= "oauth"
38 38
39PACKAGECONFIG[canberra] = "-DENABLE_CANBERRA=ON,-DENABLE_CANBERRA=OFF,libcanberra" 39PACKAGECONFIG[canberra] = "-DENABLE_CANBERRA=ON,-DENABLE_CANBERRA=OFF,libcanberra"
40PACKAGECONFIG[oauth] = "-DENABLE_OAUTH2_WEBKITGTK=ON -DENABLE_OAUTH2_WEBKITGTK4=OFF,-DENABLE_OAUTH2_WEBKITGTK4=OFF -DENABLE_OAUTH2_WEBKITGTK=OFF,webkitgtk json-glib" 40PACKAGECONFIG[oauth] = "-DENABLE_OAUTH2_WEBKITGTK=ON -DENABLE_OAUTH2_WEBKITGTK4=OFF,-DENABLE_OAUTH2_WEBKITGTK4=OFF -DENABLE_OAUTH2_WEBKITGTK=OFF,webkitgtk3 json-glib"
41PACKAGECONFIG[goa] = "-DENABLE_GOA=ON,-DENABLE_GOA=OFF,gnome-online-accounts" 41PACKAGECONFIG[goa] = "-DENABLE_GOA=ON,-DENABLE_GOA=OFF,gnome-online-accounts"
42PACKAGECONFIG[kerberos] = "-DWITH_KRB5=ON,-DWITH_KRB5=OFF,krb5" 42PACKAGECONFIG[kerberos] = "-DWITH_KRB5=ON,-DWITH_KRB5=OFF,krb5"
43# BROKEN: due missing pkg-config in openldap eds' cmake finds host-libs when 43# BROKEN: due missing pkg-config in openldap eds' cmake finds host-libs when
diff --git a/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb b/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb
index ca78fa011..cd14b4850 100644
--- a/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb
+++ b/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb
@@ -14,7 +14,7 @@ SRC_URI[archive.sha256sum] = "418bb9fcffdbd72a98205ad365137617fc1e3551a54de74f6a
14PACKAGECONFIG ?= "goabackend kerberos owncloud lastfm google windows_live" 14PACKAGECONFIG ?= "goabackend kerberos owncloud lastfm google windows_live"
15 15
16# goabackend requires webkitgtk to be built with gtk+3 and gcr3 16# goabackend requires webkitgtk to be built with gtk+3 and gcr3
17PACKAGECONFIG[goabackend] = "-Dgoabackend=true,-Dgoabackend=false,gtk+3 gtk+3-native json-glib libxml2 libsoup rest libsecret webkitgtk" 17PACKAGECONFIG[goabackend] = "-Dgoabackend=true,-Dgoabackend=false,gtk+3 gtk+3-native json-glib libxml2 libsoup rest libsecret webkitgtk3"
18PACKAGECONFIG[kerberos] = "-Dkerberos=true, -Dkerberos=false,krb5 gcr3" 18PACKAGECONFIG[kerberos] = "-Dkerberos=true, -Dkerberos=false,krb5 gcr3"
19PACKAGECONFIG[exchange] = "-Dexchange=true, -Dexchange=false" 19PACKAGECONFIG[exchange] = "-Dexchange=true, -Dexchange=false"
20PACKAGECONFIG[google] = "-Dgoogle=true, -Dgoogle=false" 20PACKAGECONFIG[google] = "-Dgoogle=true, -Dgoogle=false"
diff --git a/meta-gnome/recipes-gnome/yelp/yelp_42.2.bb b/meta-gnome/recipes-gnome/yelp/yelp_42.2.bb
index 200ed0f70..51d51ee0a 100644
--- a/meta-gnome/recipes-gnome/yelp/yelp_42.2.bb
+++ b/meta-gnome/recipes-gnome/yelp/yelp_42.2.bb
@@ -19,7 +19,7 @@ DEPENDS += " \
19 libxslt \ 19 libxslt \
20 sqlite3 \ 20 sqlite3 \
21 libhandy \ 21 libhandy \
22 webkitgtk \ 22 webkitgtk3 \
23 yelp-xsl \ 23 yelp-xsl \
24" 24"
25PACKAGECONFIG_SOUP ?= "soup3" 25PACKAGECONFIG_SOUP ?= "soup3"
diff --git a/meta-gnome/recipes-gnome/zenity/zenity_3.44.0.bb b/meta-gnome/recipes-gnome/zenity/zenity_3.44.0.bb
index 8ea24ca49..3548cc5bb 100644
--- a/meta-gnome/recipes-gnome/zenity/zenity_3.44.0.bb
+++ b/meta-gnome/recipes-gnome/zenity/zenity_3.44.0.bb
@@ -20,7 +20,7 @@ SRC_URI[archive.sha256sum] = "c15582301ed90b9d42ce521dbccf99a989f22f12041bdd5279
20SRC_URI += "file://0001-Harcode-shebang-to-avoid-pointing-to-build-system-s-.patch" 20SRC_URI += "file://0001-Harcode-shebang-to-avoid-pointing-to-build-system-s-.patch"
21 21
22PACKAGECONFIG ?= "webkitgtk" 22PACKAGECONFIG ?= "webkitgtk"
23PACKAGECONFIG[webkitgtk] = "-Dwebkitgtk=true,-Dwebkitgtk=false,webkitgtk" 23PACKAGECONFIG[webkitgtk] = "-Dwebkitgtk=true,-Dwebkitgtk=false,webkitgtk3"
24 24
25PACKAGES =+ "${PN}-gdialog" 25PACKAGES =+ "${PN}-gdialog"
26FILES:${PN}-gdialog = "${bindir}/gdialog" 26FILES:${PN}-gdialog = "${bindir}/gdialog"
diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets_3.2.1.bb b/meta-oe/recipes-extended/wxwidgets/wxwidgets_3.2.1.bb
index 39b6a2bc7..91653e285 100644
--- a/meta-oe/recipes-extended/wxwidgets/wxwidgets_3.2.1.bb
+++ b/meta-oe/recipes-extended/wxwidgets/wxwidgets_3.2.1.bb
@@ -74,7 +74,7 @@ PACKAGECONFIG[lzma] = "-DwxUSE_LIBLZMA=ON,-DwxUSE_LIBLZMA=OFF,xz"
74PACKAGECONFIG[mspack] = "-DwxUSE_LIBMSPACK=ON,-DwxUSE_LIBMSPACK=OFF,libmspack" 74PACKAGECONFIG[mspack] = "-DwxUSE_LIBMSPACK=ON,-DwxUSE_LIBMSPACK=OFF,libmspack"
75PACKAGECONFIG[opengl] = "-DwxUSE_OPENGL=ON,-DwxUSE_OPENGL=OFF,libglu" 75PACKAGECONFIG[opengl] = "-DwxUSE_OPENGL=ON,-DwxUSE_OPENGL=OFF,libglu"
76PACKAGECONFIG[sdl_audio] = "-DwxUSE_LIBSDL=ON,-DwxUSE_LIBSDL=OFF,libsdl2" 76PACKAGECONFIG[sdl_audio] = "-DwxUSE_LIBSDL=ON,-DwxUSE_LIBSDL=OFF,libsdl2"
77PACKAGECONFIG[webkit] = "-DwxUSE_WEBVIEW_WEBKIT=ON,-DwxUSE_WEBVIEW_WEBKIT=OFF,webkitgtk,,,no_gui" 77PACKAGECONFIG[webkit] = "-DwxUSE_WEBVIEW_WEBKIT=ON,-DwxUSE_WEBVIEW_WEBKIT=OFF,webkitgtk3,,,no_gui"
78PACKAGECONFIG[curl] = "-DwxUSE_WEBREQUEST_CURL=ON,-DwxUSE_WEBREQUEST_CURL=OFF,curl" 78PACKAGECONFIG[curl] = "-DwxUSE_WEBREQUEST_CURL=ON,-DwxUSE_WEBREQUEST_CURL=OFF,curl"
79 79
80# Support LFS unconditionally 80# Support LFS unconditionally
diff --git a/meta-oe/recipes-gnome/gcr/gcr3/0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch b/meta-oe/recipes-gnome/gcr/gcr3/0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch
new file mode 100644
index 000000000..d3c26d97a
--- /dev/null
+++ b/meta-oe/recipes-gnome/gcr/gcr3/0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch
@@ -0,0 +1,36 @@
1From 9b67bb18d8409e0e693cc6000507acbd73a30eab Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Wed, 16 Nov 2022 11:27:24 +0100
4Subject: [PATCH 1/2] meson.build: correctly handle disabled ssh_agent option
5
6Existing code produces these errors:
7| gcr/meson.build:61:0: ERROR: Unable to get the path of a not-found external program
8| gcr/meson.build:101:5: ERROR: Unknown variable "ssh_add_path".
9
10Signed-off-by: Alexander Kanavin <alex@linutronix.de>
11
12Upstream-Status: Backport [ https://gitlab.gnome.org/GNOME/gcr/-/commit/9b67bb18d8409e0e693cc6000507acbd73a30eab ]
13---
14 meson.build | 12 ++++++++----
15 1 file changed, 8 insertions(+), 4 deletions(-)
16
17diff --git a/meson.build b/meson.build
18index 3f35173..11d7fa7 100644
19--- a/meson.build
20+++ b/meson.build
21@@ -96,8 +98,10 @@ conf.set('HAVE_TIMEGM', cc.has_function('timegm'))
22 conf.set('HAVE_MLOCK', cc.has_function('mlock'))
23 conf.set_quoted('GPG_EXECUTABLE', gpg_path)
24 conf.set_quoted('LIBGCRYPT_VERSION', libgcrypt_dep.version())
25-conf.set_quoted('SSH_ADD_EXECUTABLE', ssh_add_path)
26-conf.set_quoted('SSH_AGENT_EXECUTABLE', ssh_agent_path)
27+if get_option('ssh_agent')
28+ conf.set_quoted('SSH_ADD_EXECUTABLE', ssh_add_path)
29+ conf.set_quoted('SSH_AGENT_EXECUTABLE', ssh_agent_path)
30+endif
31 conf.set10('WITH_SYSTEMD', with_systemd)
32 config_file = configure_file(
33 output: 'config.h',
34--
352.34.1
36
diff --git a/meta-oe/recipes-gnome/gcr/gcr3_3.41.1.bb b/meta-oe/recipes-gnome/gcr/gcr3_3.41.1.bb
new file mode 100644
index 000000000..ba5660a5e
--- /dev/null
+++ b/meta-oe/recipes-gnome/gcr/gcr3_3.41.1.bb
@@ -0,0 +1,59 @@
1SUMMARY = "A library for bits of crypto UI and parsing etc"
2DESCRIPTION = "GCR is a library for displaying certificates, and crypto UI, \
3accessing key stores. It also provides the viewer for crypto files on the \
4GNOME desktop."
5HOMEPAGE = "https://gitlab.gnome.org/GNOME/gcr"
6BUGTRACKER = "https://gitlab.gnome.org/GNOME/gcr/issues"
7
8LICENSE = "GPL-2.0-only"
9LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
10
11DEPENDS = "p11-kit glib-2.0 libgcrypt gnupg-native \
12 ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'libxslt-native', '', d)}"
13
14CACHED_CONFIGUREVARS += "ac_cv_path_GPG='gpg2'"
15
16CFLAGS += "-D_GNU_SOURCE"
17
18GNOMEBASEBUILDCLASS = "meson"
19GTKDOC_MESON_OPTION = "gtk_doc"
20inherit gnomebase gtk-icon-cache gi-docgen features_check upstream-version-is-even vala gobject-introspection gettext mime mime-xdg
21UPSTREAM_CHECK_REGEX = "[^\d\.](?P<pver>3.(?!9\d+)\d+(\.\d+)+)\.tar"
22
23SRC_URI = "https://download.gnome.org/sources/gcr/3.41/gcr-${PV}.tar.xz;name=archive"
24SRC_URI += "file://0001-meson.build-correctly-handle-disabled-ssh_agent-opti.patch"
25SRC_URI[archive.sha256sum] = "bb7128a3c2febbfee9c03b90d77d498d0ceb237b0789802d60185c71c4bea24f"
26
27S = "${WORKDIR}/gcr-${PV}"
28
29PACKAGECONFIG ??= " \
30 ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
31 ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \
32 ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gtk', '', d)} \
33"
34PACKAGECONFIG[gtk] = "-Dgtk=true,-Dgtk=false,gtk+3"
35PACKAGECONFIG[ssh_agent] = "-Dssh_agent=true,-Dssh_agent=false,libsecret,openssh"
36#'Use systemd socket activation for server programs'
37PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
38
39FILES:${PN} += " \
40 ${datadir}/dbus-1 \
41 ${datadir}/gcr-3 \
42 ${systemd_user_unitdir}/gcr-ssh-agent.socket \
43 ${systemd_user_unitdir}/gcr-ssh-agent.service \
44"
45
46# http://errors.yoctoproject.org/Errors/Details/20229/
47ARM_INSTRUCTION_SET:armv4 = "arm"
48ARM_INSTRUCTION_SET:armv5 = "arm"
49ARM_INSTRUCTION_SET:armv6 = "arm"
50
51EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
52do_write_config:append() {
53 cat >${WORKDIR}/meson-${PN}.cross <<EOF
54[binaries]
55gpg2 = '${bindir}/gpg2'
56ssh-add = '${bindir}/ssh-add'
57ssh-agent = '${bindir}/ssh-agent'
58EOF
59}
diff --git a/meta-oe/recipes-graphics/surf/surf_2.1.bb b/meta-oe/recipes-graphics/surf/surf_2.1.bb
index 7140a7284..4d9d4d3dd 100644
--- a/meta-oe/recipes-graphics/surf/surf_2.1.bb
+++ b/meta-oe/recipes-graphics/surf/surf_2.1.bb
@@ -5,7 +5,7 @@ SECTION = "x11/graphics"
5LICENSE = "MIT" 5LICENSE = "MIT"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=2a6f86d002ae9ae1eb1ccc466289f146" 6LIC_FILES_CHKSUM = "file://LICENSE;md5=2a6f86d002ae9ae1eb1ccc466289f146"
7 7
8DEPENDS = "webkitgtk gtk+3 glib-2.0 gcr3" 8DEPENDS = "webkitgtk3 gtk+3 glib-2.0 gcr3"
9 9
10REQUIRED_DISTRO_FEATURES = "x11 opengl" 10REQUIRED_DISTRO_FEATURES = "x11 opengl"
11 11
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch b/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
new file mode 100644
index 000000000..8ae39f14e
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
@@ -0,0 +1,29 @@
1From 10cfdcc905915d8814c609008a069102f2bc7e39 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Tue, 27 Oct 2015 16:02:19 +0200
4Subject: [PATCH] FindGObjectIntrospection.cmake: prefix variables obtained
5 from pkg-config with PKG_CONFIG_SYSROOT_DIR
6
7See discussion at https://bugs.webkit.org/show_bug.cgi?id=232933 for
8reasons why this is not approproiate for upstream submission.
9
10Upstream-Status: Inappropriate [oe-core specific]
11Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
12---
13 Source/cmake/FindGI.cmake | 3 +++
14 1 file changed, 3 insertions(+)
15
16diff --git a/Source/cmake/FindGI.cmake b/Source/cmake/FindGI.cmake
17index af039cbb..b3e810cd 100644
18--- a/Source/cmake/FindGI.cmake
19+++ b/Source/cmake/FindGI.cmake
20@@ -72,6 +72,9 @@ if (PKG_CONFIG_FOUND)
21 endif ()
22 endif ()
23
24+set(_GI_SCANNER_EXE "$ENV{PKG_CONFIG_SYSROOT_DIR}${_GI_SCANNER_EXE}")
25+set(_GI_COMPILER_EXE "$ENV{PKG_CONFIG_SYSROOT_DIR}${_GI_COMPILER_EXE}")
26+
27 find_program(GI_SCANNER_EXE NAMES ${_GI_SCANNER_EXE} g-ir-scanner)
28 find_program(GI_COMPILER_EXE NAMES ${_GI_COMPILER_EXE} g-ir-compiler)
29
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-Source-JavaScriptCore-CMakeLists.txt-ensure-reproduc.patch b/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-Source-JavaScriptCore-CMakeLists.txt-ensure-reproduc.patch
new file mode 100644
index 000000000..bbe265059
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-Source-JavaScriptCore-CMakeLists.txt-ensure-reproduc.patch
@@ -0,0 +1,28 @@
1From cd65e3d9256a4f6eb7906a9f10678c29a4ffef2f Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Mon, 26 Jun 2023 14:30:02 +0200
4Subject: [PATCH] Source/JavaScriptCore/CMakeLists.txt: ensure reproducibility
5 of __TIMESTAMP__
6
7__TIMESTAMP__ refers to mtime of the file that contains it, which is unstable
8and breaks binary reproducibility when the file is generated at build time. To ensure
9this does not happen, mtime should be set from the original file.
10
11Upstream-Status: Submitted [https://github.com/WebKit/WebKit/pull/15293]
12Signed-off-by: Alexander Kanavin <alex@linutronix.de>
13---
14 Source/JavaScriptCore/CMakeLists.txt | 1 +
15 1 file changed, 1 insertion(+)
16
17diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt
18index 43dc22ff..c2e3b1cd 100644
19--- a/Source/JavaScriptCore/CMakeLists.txt
20+++ b/Source/JavaScriptCore/CMakeLists.txt
21@@ -159,6 +159,7 @@ add_custom_command(
22 OUTPUT ${JavaScriptCore_DERIVED_SOURCES_DIR}/JSCBytecodeCacheVersion.cpp
23 MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/runtime/JSCBytecodeCacheVersion.cpp.in
24 COMMAND ${PERL_EXECUTABLE} -pe s/CACHED_TYPES_CKSUM/__TIMESTAMP__/ ${JAVASCRIPTCORE_DIR}/runtime/JSCBytecodeCacheVersion.cpp.in > ${JavaScriptCore_DERIVED_SOURCES_DIR}/JSCBytecodeCacheVersion.cpp
25+ COMMAND touch -r ${JAVASCRIPTCORE_DIR}/runtime/JSCBytecodeCacheVersion.cpp.in ${JavaScriptCore_DERIVED_SOURCES_DIR}/JSCBytecodeCacheVersion.cpp
26 VERBATIM
27 )
28
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3/0d3344e17d258106617b0e6d783d073b188a2548.patch b/meta-oe/recipes-support/webkitgtk/webkitgtk3/0d3344e17d258106617b0e6d783d073b188a2548.patch
new file mode 100644
index 000000000..34e0ff9af
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3/0d3344e17d258106617b0e6d783d073b188a2548.patch
@@ -0,0 +1,310 @@
1From 647c93de99a0f71f478d76a4cc7714eba7ba1447 Mon Sep 17 00:00:00 2001
2From: Adrian Perez de Castro <aperez@igalia.com>
3Date: Thu, 2 Jun 2022 11:19:06 +0300
4Subject: [PATCH] FELightningNEON.cpp fails to build, NEON fast path seems
5 unused https://bugs.webkit.org/show_bug.cgi?id=241182
6
7Reviewed by NOBODY (OOPS!).
8
9Move the NEON fast path for the SVG lighting filter effects into
10FELightingSoftwareApplier, and arrange to actually use them by
11forwarding calls to applyPlatformGeneric() into applyPlatformNeon().
12
13Some changes were needed to adapt platformApplyNeon() to the current
14state of filters after r286140. This was not detected because the code
15bitrotted due to it being guarded with CPU(ARM_TRADITIONAL), which does
16not get used much these days: CPU(ARM_THUMB2) is more common. It should
17be possible to use the NEON fast paths also in Thumb mode, but that is
18left for a follow-up fix.
19
20* Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp:
21(WebCore::FELightingSoftwareApplier::platformApplyNeonWorker):
22(WebCore::FELightingSoftwareApplier::getPowerCoefficients):
23(WebCore::FELighting::platformApplyNeonWorker): Deleted.
24(WebCore::FELighting::getPowerCoefficients): Deleted.
25* Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h:
26(WebCore::FELightingSoftwareApplier::applyPlatformNeon):
27(WebCore::FELighting::platformApplyNeon): Deleted.
28* Source/WebCore/platform/graphics/filters/DistantLightSource.h:
29* Source/WebCore/platform/graphics/filters/FELighting.h:
30* Source/WebCore/platform/graphics/filters/PointLightSource.h:
31* Source/WebCore/platform/graphics/filters/SpotLightSource.h:
32* Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h:
33
34Upstream-Status: Submitted [https://github.com/WebKit/WebKit/pull/1233]
35Signed-off-by: Khem Raj <raj.khem@gmail.com>
36---
37 .../cpu/arm/filters/FELightingNEON.cpp | 4 +-
38 .../graphics/cpu/arm/filters/FELightingNEON.h | 52 +++++++++----------
39 .../graphics/filters/DistantLightSource.h | 4 ++
40 .../platform/graphics/filters/FELighting.h | 7 ---
41 .../graphics/filters/PointLightSource.h | 4 ++
42 .../graphics/filters/SpotLightSource.h | 4 ++
43 .../software/FELightingSoftwareApplier.h | 16 ++++++
44 7 files changed, 56 insertions(+), 35 deletions(-)
45
46diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
47index f6ff8c20..42a97ffc 100644
48--- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
49+++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
50@@ -49,7 +49,7 @@ short* feLightingConstantsForNeon()
51 return s_FELightingConstantsForNeon;
52 }
53
54-void FELighting::platformApplyNeonWorker(FELightingPaintingDataForNeon* parameters)
55+void FELightingSoftwareApplier::platformApplyNeonWorker(FELightingPaintingDataForNeon* parameters)
56 {
57 neonDrawLighting(parameters);
58 }
59@@ -464,7 +464,7 @@ TOSTRING(neonDrawLighting) ":" NL
60 "b .lightStrengthCalculated" NL
61 ); // NOLINT
62
63-int FELighting::getPowerCoefficients(float exponent)
64+int FELightingSoftwareApplier::getPowerCoefficients(float exponent)
65 {
66 // Calling a powf function from the assembly code would require to save
67 // and reload a lot of NEON registers. Since the base is in range [0..1]
68diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
69index b17c603d..e4629cda 100644
70--- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
71+++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
72@@ -24,14 +24,15 @@
73 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
74 */
75
76-#ifndef FELightingNEON_h
77-#define FELightingNEON_h
78+#pragma once
79
80 #if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
81
82-#include "FELighting.h"
83+#include "FELightingSoftwareApplier.h"
84+#include "ImageBuffer.h"
85 #include "PointLightSource.h"
86 #include "SpotLightSource.h"
87+#include <wtf/ObjectIdentifier.h>
88 #include <wtf/ParallelJobs.h>
89
90 namespace WebCore {
91@@ -93,14 +94,14 @@ extern "C" {
92 void neonDrawLighting(FELightingPaintingDataForNeon*);
93 }
94
95-inline void FELighting::platformApplyNeon(const LightingData& data, const LightSource::PaintingData& paintingData)
96+inline void FELightingSoftwareApplier::applyPlatformNeon(const FELightingSoftwareApplier::LightingData& data, const LightSource::PaintingData& paintingData)
97 {
98- alignas(16) FELightingFloatArgumentsForNeon floatArguments;
99- FELightingPaintingDataForNeon neonData = {
100+ WebCore::FELightingFloatArgumentsForNeon alignas(16) floatArguments;
101+ WebCore::FELightingPaintingDataForNeon neonData = {
102 data.pixels->data(),
103 1,
104- data.widthDecreasedByOne - 1,
105- data.heightDecreasedByOne - 1,
106+ data.width - 2,
107+ data.height - 2,
108 0,
109 0,
110 0,
111@@ -111,23 +112,23 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
112 // Set light source arguments.
113 floatArguments.constOne = 1;
114
115- auto color = m_lightingColor.toColorTypeLossy<SRGBA<uint8_t>>().resolved();
116+ auto color = data.lightingColor.toColorTypeLossy<SRGBA<uint8_t>>().resolved();
117
118 floatArguments.colorRed = color.red;
119 floatArguments.colorGreen = color.green;
120 floatArguments.colorBlue = color.blue;
121 floatArguments.padding4 = 0;
122
123- if (m_lightSource->type() == LS_POINT) {
124+ if (data.lightSource->type() == LS_POINT) {
125 neonData.flags |= FLAG_POINT_LIGHT;
126- PointLightSource& pointLightSource = static_cast<PointLightSource&>(m_lightSource.get());
127+ const auto& pointLightSource = *static_cast<const PointLightSource*>(data.lightSource);
128 floatArguments.lightX = pointLightSource.position().x();
129 floatArguments.lightY = pointLightSource.position().y();
130 floatArguments.lightZ = pointLightSource.position().z();
131 floatArguments.padding2 = 0;
132- } else if (m_lightSource->type() == LS_SPOT) {
133+ } else if (data.lightSource->type() == LS_SPOT) {
134 neonData.flags |= FLAG_SPOT_LIGHT;
135- SpotLightSource& spotLightSource = static_cast<SpotLightSource&>(m_lightSource.get());
136+ const auto& spotLightSource = *static_cast<const SpotLightSource*>(data.lightSource);
137 floatArguments.lightX = spotLightSource.position().x();
138 floatArguments.lightY = spotLightSource.position().y();
139 floatArguments.lightZ = spotLightSource.position().z();
140@@ -145,7 +146,7 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
141 if (spotLightSource.specularExponent() == 1)
142 neonData.flags |= FLAG_CONE_EXPONENT_IS_1;
143 } else {
144- ASSERT(m_lightSource->type() == LS_DISTANT);
145+ ASSERT(data.lightSource->type() == LS_DISTANT);
146 floatArguments.lightX = paintingData.initialLightingData.lightVector.x();
147 floatArguments.lightY = paintingData.initialLightingData.lightVector.y();
148 floatArguments.lightZ = paintingData.initialLightingData.lightVector.z();
149@@ -155,38 +156,39 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
150 // Set lighting arguments.
151 floatArguments.surfaceScale = data.surfaceScale;
152 floatArguments.minusSurfaceScaleDividedByFour = -data.surfaceScale / 4;
153- if (m_lightingType == FELighting::DiffuseLighting)
154- floatArguments.diffuseConstant = m_diffuseConstant;
155+ if (data.filterType == FilterEffect::Type::FEDiffuseLighting)
156+ floatArguments.diffuseConstant = data.diffuseConstant;
157 else {
158 neonData.flags |= FLAG_SPECULAR_LIGHT;
159- floatArguments.diffuseConstant = m_specularConstant;
160- neonData.specularExponent = getPowerCoefficients(m_specularExponent);
161- if (m_specularExponent == 1)
162+ floatArguments.diffuseConstant = data.specularConstant;
163+ neonData.specularExponent = getPowerCoefficients(data.specularExponent);
164+ if (data.specularExponent == 1)
165 neonData.flags |= FLAG_SPECULAR_EXPONENT_IS_1;
166 }
167 if (floatArguments.diffuseConstant == 1)
168 neonData.flags |= FLAG_DIFFUSE_CONST_IS_1;
169
170- int optimalThreadNumber = ((data.widthDecreasedByOne - 1) * (data.heightDecreasedByOne - 1)) / s_minimalRectDimension;
171+ static constexpr int minimalRectDimension = 100 * 100; // Empirical data limit for parallel jobs
172+ int optimalThreadNumber = ((data.width - 2) * (data.height - 2)) / minimalRectDimension;
173 if (optimalThreadNumber > 1) {
174 // Initialize parallel jobs
175- ParallelJobs<FELightingPaintingDataForNeon> parallelJobs(&WebCore::FELighting::platformApplyNeonWorker, optimalThreadNumber);
176+ ParallelJobs<FELightingPaintingDataForNeon> parallelJobs(&FELightingSoftwareApplier::platformApplyNeonWorker, optimalThreadNumber);
177
178 // Fill the parameter array
179 int job = parallelJobs.numberOfJobs();
180 if (job > 1) {
181 int yStart = 1;
182- int yStep = (data.heightDecreasedByOne - 1) / job;
183+ int yStep = (data.height - 2) / job;
184 for (--job; job >= 0; --job) {
185 FELightingPaintingDataForNeon& params = parallelJobs.parameter(job);
186 params = neonData;
187 params.yStart = yStart;
188- params.pixels += (yStart - 1) * (data.widthDecreasedByOne + 1) * 4;
189+ params.pixels += (yStart - 1) * data.width * 4;
190 if (job > 0) {
191 params.absoluteHeight = yStep;
192 yStart += yStep;
193 } else
194- params.absoluteHeight = data.heightDecreasedByOne - yStart;
195+ params.absoluteHeight = (data.height - 1) - yStart;
196 }
197 parallelJobs.execute();
198 return;
199@@ -199,5 +201,3 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
200 } // namespace WebCore
201
202 #endif // CPU(ARM_NEON) && COMPILER(GCC_COMPATIBLE)
203-
204-#endif // FELightingNEON_h
205diff --git a/Source/WebCore/platform/graphics/filters/DistantLightSource.h b/Source/WebCore/platform/graphics/filters/DistantLightSource.h
206index 70c6512f..b032c82e 100644
207--- a/Source/WebCore/platform/graphics/filters/DistantLightSource.h
208+++ b/Source/WebCore/platform/graphics/filters/DistantLightSource.h
209@@ -26,6 +26,10 @@
210 #include <wtf/ArgumentCoder.h>
211 #include <wtf/Ref.h>
212
213+namespace WTF {
214+class TextStream;
215+} // namespace WTF
216+
217 namespace WebCore {
218
219 class DistantLightSource : public LightSource {
220diff --git a/Source/WebCore/platform/graphics/filters/FELighting.h b/Source/WebCore/platform/graphics/filters/FELighting.h
221index 53beb596..e78a9354 100644
222--- a/Source/WebCore/platform/graphics/filters/FELighting.h
223+++ b/Source/WebCore/platform/graphics/filters/FELighting.h
224@@ -35,8 +35,6 @@
225
226 namespace WebCore {
227
228-struct FELightingPaintingDataForNeon;
229-
230 class FELighting : public FilterEffect {
231 public:
232 const Color& lightingColor() const { return m_lightingColor; }
233@@ -64,11 +62,6 @@ protected:
234
235 std::unique_ptr<FilterEffectApplier> createSoftwareApplier() const override;
236
237-#if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
238- static int getPowerCoefficients(float exponent);
239- inline void platformApplyNeon(const LightingData&, const LightSource::PaintingData&);
240-#endif
241-
242 Color m_lightingColor;
243 float m_surfaceScale;
244 float m_diffuseConstant;
245diff --git a/Source/WebCore/platform/graphics/filters/PointLightSource.h b/Source/WebCore/platform/graphics/filters/PointLightSource.h
246index 3a5723f0..675d63f5 100644
247--- a/Source/WebCore/platform/graphics/filters/PointLightSource.h
248+++ b/Source/WebCore/platform/graphics/filters/PointLightSource.h
249@@ -26,6 +26,10 @@
250 #include "LightSource.h"
251 #include <wtf/Ref.h>
252
253+namespace WTF {
254+class TextStream;
255+} // namespace WTF
256+
257 namespace WebCore {
258
259 class PointLightSource : public LightSource {
260diff --git a/Source/WebCore/platform/graphics/filters/SpotLightSource.h b/Source/WebCore/platform/graphics/filters/SpotLightSource.h
261index 684626f7..dea58389 100644
262--- a/Source/WebCore/platform/graphics/filters/SpotLightSource.h
263+++ b/Source/WebCore/platform/graphics/filters/SpotLightSource.h
264@@ -26,6 +26,10 @@
265 #include "LightSource.h"
266 #include <wtf/Ref.h>
267
268+namespace WTF {
269+class TextStream;
270+} // namespace WTF
271+
272 namespace WebCore {
273
274 class SpotLightSource : public LightSource {
275diff --git a/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h b/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
276index c974d921..e2896660 100644
277--- a/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
278+++ b/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
279@@ -36,6 +36,7 @@
280 namespace WebCore {
281
282 class FELighting;
283+struct FELightingPaintingDataForNeon;
284
285 class FELightingSoftwareApplier final : public FilterEffectConcreteApplier<FELighting> {
286 WTF_MAKE_FAST_ALLOCATED;
287@@ -132,8 +133,23 @@ private:
288
289 static void applyPlatformGenericPaint(const LightingData&, const LightSource::PaintingData&, int startY, int endY);
290 static void applyPlatformGenericWorker(ApplyParameters*);
291+
292+#if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
293+ static int getPowerCoefficients(float exponent);
294+ static void platformApplyNeonWorker(FELightingPaintingDataForNeon*);
295+ inline static void applyPlatformNeon(const LightingData&, const LightSource::PaintingData&);
296+
297+ inline static void applyPlatformGeneric(const LightingData& data, const LightSource::PaintingData& paintingData)
298+ {
299+ applyPlatformNeon(data, paintingData);
300+ }
301+#else
302 static void applyPlatformGeneric(const LightingData&, const LightSource::PaintingData&);
303+#endif
304+
305 static void applyPlatform(const LightingData&);
306 };
307
308 } // namespace WebCore
309+
310+#include "FELightingNEON.h"
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3/4977290ab4ab35258a6da9b13795c9b0f7894bf4.patch b/meta-oe/recipes-support/webkitgtk/webkitgtk3/4977290ab4ab35258a6da9b13795c9b0f7894bf4.patch
new file mode 100644
index 000000000..79da855ff
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3/4977290ab4ab35258a6da9b13795c9b0f7894bf4.patch
@@ -0,0 +1,41 @@
1From 4977290ab4ab35258a6da9b13795c9b0f7894bf4 Mon Sep 17 00:00:00 2001
2From: Diego Pino Garcia <dpino@igalia.com>
3Date: Mon, 22 May 2023 19:58:50 -0700
4Subject: [PATCH] [GLIB] Fix build error after 264196@main
5 https://bugs.webkit.org/show_bug.cgi?id=256917
6
7Reviewed by Michael Catanzaro.
8
9Variable BWRAP_EXECUTABLE is only defined when BUBBLEWRAP_SANDBOX is
10enabled.
11
12* Source/WTF/wtf/glib/Sandbox.cpp:
13(WTF::isInsideUnsupportedContainer):
14
15Canonical link: https://commits.webkit.org/264395@main
16Upstream-Status: Backport [https://github.com/WebKit/WebKit/commit/4977290ab4ab35258a6da9b13795c9b0f7894bf4]
17Signed-off-by: Alexander Kanavin <alex@linutronix.de>
18---
19 Source/WTF/wtf/glib/Sandbox.cpp | 2 ++
20 1 file changed, 2 insertions(+)
21
22diff --git a/Source/WTF/wtf/glib/Sandbox.cpp b/Source/WTF/wtf/glib/Sandbox.cpp
23index 7d84e830ab33e..9b07bb8cb5a9b 100644
24--- a/Source/WTF/wtf/glib/Sandbox.cpp
25+++ b/Source/WTF/wtf/glib/Sandbox.cpp
26@@ -36,6 +36,7 @@ bool isInsideFlatpak()
27 return returnValue;
28 }
29
30+#if ENABLE(BUBBLEWRAP_SANDBOX)
31 bool isInsideUnsupportedContainer()
32 {
33 static bool inContainer = g_file_test("/run/.containerenv", G_FILE_TEST_EXISTS);
34@@ -64,6 +65,7 @@ bool isInsideUnsupportedContainer()
35
36 return inContainer && !supportedContainer;
37 }
38+#endif
39
40 bool isInsideSnap()
41 {
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3/check-GST_GL_HAVE_PLATFORM_GLX.patch b/meta-oe/recipes-support/webkitgtk/webkitgtk3/check-GST_GL_HAVE_PLATFORM_GLX.patch
new file mode 100644
index 000000000..ae99810ce
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3/check-GST_GL_HAVE_PLATFORM_GLX.patch
@@ -0,0 +1,33 @@
1Add additional check on GST_GL_HAVE_PLATFORM_GLX before using gst_gl_display_x11_new_with_display
2
3This ensures that there is a compile time check for glx support in gstreamer as
4runtime check is not enough because gst_gl_display_x11_new_with_display() API comes from
5gst/gl/x11/gstgldisplay_x11.h which is only included when GST_GL_HAVE_PLATFORM_GLX is defined
6therefore make this check consistent to fix build with some platforms which use pvr gl drivers
7where this problem appear at compile time.
8
9
10/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/webkitgtk/2.40.2-r0/webkitgtk-2.40.2/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp:68:31: error: use of undeclared identifier 'gst_gl_display_x11_new_with_display'; did you mean 'gst_gl_display_egl_new_with_egl_display'?
11 68 | return GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native()));
12 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 | gst_gl_display_egl_new_with_egl_display
14
15This issue is 2.40 specific since GLX support is removed [1] from trunk upstream, therefore
16this patch wont be needed when upgrading to 2.42+
17
18[1] https://github.com/WebKit/WebKit/commit/320560f9e53ddcd53954059bd005e0c75eb91abf
19
20Upstream-Status: Inappropriate [GLX support is gone in 2.41+]
21Signed-off-by: Khem Raj <raj.khem@gmail.com>
22
23--- a/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp 2023-02-20 01:22:18.917743700 -0800
24+++ b/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp 2023-07-08 08:45:09.739177065 -0700
25@@ -63,7 +63,7 @@
26 if (glPlatform == GST_GL_PLATFORM_EGL)
27 return GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(sharedDisplay.eglDisplay()));
28 #endif
29-#if USE(GLX)
30+#if USE(GLX) && GST_GL_HAVE_PLATFORM_GLX
31 if (is<PlatformDisplayX11>(sharedDisplay) && glPlatform == GST_GL_PLATFORM_GLX)
32 return GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native()));
33 #endif
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3/reproducibility.patch b/meta-oe/recipes-support/webkitgtk/webkitgtk3/reproducibility.patch
new file mode 100644
index 000000000..e866a1a19
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3/reproducibility.patch
@@ -0,0 +1,22 @@
1Injection a year based on the current date isn't reproducible. Hack this
2to a specific year for now for reproducibilty and to avoid autobuilder failures.
3
4The correct fix would be to use SOURCE_DATE_EPOCH from the environment and
5then this could be submitted upstream, sadly my ruby isn't up to that.
6
7Upstream-Status: Pending [could be reworked]
8Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9
10Index: webkitgtk-2.34.2/Source/JavaScriptCore/generator/GeneratedFile.rb
11===================================================================
12--- webkitgtk-2.34.2.orig/Source/JavaScriptCore/generator/GeneratedFile.rb
13+++ webkitgtk-2.34.2/Source/JavaScriptCore/generator/GeneratedFile.rb
14@@ -25,7 +25,7 @@ require 'date'
15 require 'digest'
16
17 $LICENSE = <<-EOF
18-Copyright (C) #{Date.today.year} Apple Inc. All rights reserved.
19+Copyright (C) 2021 Apple Inc. All rights reserved.
20
21 Redistribution and use in source and binary forms, with or without
22 modification, are permitted provided that the following conditions
diff --git a/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.40.2.bb b/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.40.2.bb
new file mode 100644
index 000000000..9bd0c4e19
--- /dev/null
+++ b/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.40.2.bb
@@ -0,0 +1,169 @@
1SUMMARY = "WebKit web rendering engine for the GTK+ platform"
2HOMEPAGE = "https://www.webkitgtk.org/"
3BUGTRACKER = "https://bugs.webkit.org/"
4
5LICENSE = "BSD-2-Clause & LGPL-2.0-or-later"
6LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
7 file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
8 file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
9 file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
10 "
11
12SRC_URI = "https://www.webkitgtk.org/releases/webkitgtk-${PV}.tar.xz \
13 file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
14 file://reproducibility.patch \
15 file://0d3344e17d258106617b0e6d783d073b188a2548.patch \
16 file://4977290ab4ab35258a6da9b13795c9b0f7894bf4.patch \
17 file://0001-Source-JavaScriptCore-CMakeLists.txt-ensure-reproduc.patch \
18 file://check-GST_GL_HAVE_PLATFORM_GLX.patch \
19 "
20SRC_URI[sha256sum] = "96898870d994da406ee7a632816dcde9a3bb395ee5f344fcb3f3b8cc8a77e000"
21
22inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen
23
24S = "${WORKDIR}/webkitgtk-${PV}"
25
26ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
27REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}"
28
29CVE_PRODUCT = "webkitgtk webkitgtk\+"
30
31DEPENDS += " \
32 ruby-native \
33 gperf-native \
34 unifdef-native \
35 cairo \
36 harfbuzz \
37 jpeg \
38 atk \
39 libwebp \
40 gtk+3 \
41 libxslt \
42 libtasn1 \
43 libnotify \
44 gstreamer1.0 \
45 gstreamer1.0-plugins-base \
46 glib-2.0-native \
47 gettext-native \
48 "
49
50PACKAGECONFIG_SOUP ?= "soup3"
51PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
52 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
53 ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \
54 ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
55 enchant \
56 libsecret \
57 ${PACKAGECONFIG_SOUP} \
58 "
59
60PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
61PACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF"
62PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
63PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
64PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
65PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
66PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/egl"
67PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/egl"
68PACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF"
69PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
70PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
71PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
72PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
73PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
74PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
75PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms"
76PACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3"
77PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
78PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
79PACKAGECONFIG[avif] = "-DUSE_AVIF_LOG=ON,-DUSE_AVIF=OFF,libavif"
80PACKAGECONFIG[media-recorder] = "-DENABLE_MEDIA_RECORDER=ON,-DENABLE_MEDIA_RECORDER=OFF,gstreamer1.0-plugins-bad"
81PACKAGECONFIG[gamepad] = "-DENABLE_GAMEPAD=ON,-DENABLE_GAMEPAD=OFF,libmanette"
82PACKAGECONFIG[webrtc] = "-DENABLE_WEB_RTC=ON,-DENABLE_WEB_RTC=OFF"
83PACKAGECONFIG[bubblewrap] = "-DENABLE_BUBBLEWRAP_SANDBOX=ON -DBWRAP_EXECUTABLE=${bindir}/bwrap -DDBUS_PROXY_EXECUTABLE=${bindir}/xdg-dbus-proxy,-DENABLE_BUBBLEWRAP_SANDBOX=OFF,,bubblewrap xdg-dbus-proxy"
84
85EXTRA_OECMAKE = " \
86 -DPORT=GTK \
87 ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
88 ${@bb.utils.contains('GIDOCGEN_ENABLED', 'True', '-DENABLE_DOCUMENTATION=ON', '-DENABLE_DOCUMENTATION=OFF', d)} \
89 -DENABLE_MINIBROWSER=ON \
90 "
91
92# Javascript JIT is not supported on ARC
93EXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF "
94# By default 25-bit "medium" calls are used on ARC
95# which is not enough for binaries larger than 32 MiB
96CFLAGS:append:arc = " -mlong-calls"
97CXXFLAGS:append:arc = " -mlong-calls"
98
99# Needed for non-mesa graphics stacks when x11 is disabled
100CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
101
102# Javascript JIT is not supported on powerpc
103EXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF "
104EXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF "
105
106# ARM JIT code does not build on ARMv4/5/6 anymore
107EXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF "
108EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
109EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
110
111EXTRA_OECMAKE:append:mipsarch = " -DUSE_LD_GOLD=OFF "
112EXTRA_OECMAKE:append:powerpc = " -DUSE_LD_GOLD=OFF "
113
114# JIT and gold linker does not work on RISCV
115EXTRA_OECMAKE:append:riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
116EXTRA_OECMAKE:append:riscv64 = " -DUSE_LD_GOLD=OFF"
117
118# JIT not supported on MIPS either
119EXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
120
121# JIT not supported on X32
122# An attempt was made to upstream JIT support for x32 in
123# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
124# unresolved due to limited X32 adoption.
125EXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF "
126
127SECURITY_CFLAGS:remove:aarch64 = "-fpie"
128SECURITY_CFLAGS:append:aarch64 = " -fPIE"
129
130FILES:${PN} += "${libdir}/webkit2gtk-4.*/injected-bundle/libwebkit2gtkinjectedbundle.so"
131
132RRECOMMENDS:${PN} += "ca-certificates shared-mime-info"
133
134# http://errors.yoctoproject.org/Errors/Details/20370/
135ARM_INSTRUCTION_SET:armv4 = "arm"
136ARM_INSTRUCTION_SET:armv5 = "arm"
137ARM_INSTRUCTION_SET:armv6 = "arm"
138
139# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
140# https://bugs.webkit.org/show_bug.cgi?id=159880
141# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
142# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
143ARM_INSTRUCTION_SET:armv7a = "thumb"
144ARM_INSTRUCTION_SET:armv7r = "thumb"
145ARM_INSTRUCTION_SET:armv7ve = "thumb"
146
147# ANGLE requires SSE support as of webkit 2.40.x on 32 bit x86
148COMPATIBLE_HOST:x86 = "${@bb.utils.contains_any('TUNE_FEATURES', 'core2 corei7', '.*', 'null', d)}"
149
150# introspection inside qemu-arm hangs forever on musl/arm builds
151# therefore disable GI_DATA
152GI_DATA_ENABLED:libc-musl:armv7a = "False"
153GI_DATA_ENABLED:libc-musl:armv7ve = "False"
154
155do_install:append() {
156 mv ${D}${bindir}/WebKitWebDriver ${D}${bindir}/WebKitWebDriver3
157}
158
159PACKAGE_PREPROCESS_FUNCS += "src_package_preprocess"
160src_package_preprocess () {
161 # Trim build paths from comments in generated sources to ensure reproducibility
162 sed -i -e "s,${WORKDIR},,g" \
163 ${B}/JavaScriptCore/DerivedSources/*.h \
164 ${B}/JavaScriptCore/DerivedSources/yarr/*.h \
165 ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \
166 ${B}/WebCore/DerivedSources/*.cpp \
167 ${B}/WebKitGTK/DerivedSources/webkit/*.cpp
168}
169