Igalia / meta-webkit

Yocto / OpenEmbedded layer for WebKit based engines and browsers
MIT License
125 stars 69 forks source link

Update WPE WebKit and WebKitGTK version to 2.36 and fixes for the wpewebkit and cog recipes #359

Closed psaavedra closed 2 years ago

psaavedra commented 2 years ago
manuelafm commented 2 years ago

LGTM-ish, but several jobs fail because cmae cannot find libsystemd.

psaavedra commented 2 years ago

LGTM-ish, but several jobs fail because cmae cannot find libsystemd.

Good catch. WebKit 2.36 renames USE_SYSTEMD to ENABLE_JOURNALD_LOG.

The following changes should address that (PR already pushed with them)

diff --git a/recipes-browser/wpewebkit/wpewebkit.inc b/recipes-browser/wpewebkit/wpewebkit.inc
index ff02afc..715ca60 100644
--- a/recipes-browser/wpewebkit/wpewebkit.inc
+++ b/recipes-browser/wpewebkit/wpewebkit.inc
@@ -57,7 +57,6 @@ export WK_USE_CCACHE="NO"

 PACKAGECONFIG ??= "jit dfg-jit mediasource video webaudio webcrypto woff2 gst_gl \
                    remote-inspector openjpeg unified-builds service-worker \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '' ,d)} \
                   "

 PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
@@ -76,8 +75,6 @@ PACKAGECONFIG[minibrowser] = "-DENABLE_MINIBROWSER=ON,-DENABLE_MINIBROWSER=OFF,"
 PACKAGECONFIG[mediasource] = "-DENABLE_MEDIA_SOURCE=ON,-DENABLE_MEDIA_SOURCE=OFF,gstreamer1.0 gstreamer1.0-plugins-good"
 PACKAGECONFIG[mediastream] = "-DENABLE_MEDIA_STREAM=ON -DUSE_GSTREAMER_TRANSCODER=OFF,-DENABLE_MEDIA_STREAM=OFF,gstreamer1.0 gstreamer1.0-plugins-bad"
 PACKAGECONFIG[service-worker] = "-DENABLE_SERVICE_WORKER=ON,-DENABLE_SERVICE_WORKER=OFF,"
-# Replaced by ENABLE_JOURNALD_LOG in the future 2.36.X
-PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=OFF,systemd"
 PACKAGECONFIG[video] = "-DENABLE_VIDEO=ON,-DENABLE_VIDEO=OFF,gstreamer1.0 gstreamer1.0-plugins-base"
 PACKAGECONFIG[webaudio] = "-DENABLE_WEB_AUDIO=ON,-DENABLE_WEB_AUDIO=OFF,gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good"
 PACKAGECONFIG[webcrypto] = "-DENABLE_WEB_CRYPTO=ON,-DENABLE_WEB_CRYPTO=OFF,libgcrypt libtasn1"
diff --git a/recipes-browser/wpewebkit/wpewebkit_2.34.6.bb b/recipes-browser/wpewebkit/wpewebkit_2.34.6.bb
index 09d4f71..f86a6b6 100644
--- a/recipes-browser/wpewebkit/wpewebkit_2.34.6.bb
+++ b/recipes-browser/wpewebkit/wpewebkit_2.34.6.bb
@@ -18,8 +18,10 @@ PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,"

 # Removed in 2.36
 PACKAGECONFIG[gold] = "-DUSE_LD_GOLD=ON,-DUSE_LD_GOLD=OFF,"
+# Replaced by ENABLE_JOURNALD_LOG in the future 2.36.X
+PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=OFF,systemd"

-PACKAGECONFIG:append = " gold dfg-jit"
+PACKAGECONFIG:append = " gold dfg-jit ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '' ,d)}"

 # Disable gold on mips/riscv. Mips/gold does not yet implement: error: .gnu.hash is incompatible with the MIPS ABI
 PACKAGECONFIG:remove:riscv32 = "gold"
diff --git a/recipes-browser/wpewebkit/wpewebkit_2.36.0.bb b/recipes-browser/wpewebkit/wpewebkit_2.36.0.bb
index 390092a..ee958d1 100644
--- a/recipes-browser/wpewebkit/wpewebkit_2.36.0.bb
+++ b/recipes-browser/wpewebkit/wpewebkit_2.36.0.bb
@@ -19,6 +19,10 @@ SRC_URI:class-devupstream = "\
 # WPE 2.36.X branch was forked from the main branch in this commit
 SRCREV:class-devupstream = "b3f12a91b11b34b71aa4ec64c1806616b45bd877"

+# Needed from 2.36
+PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,"
+PACKAGECONFIG:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'journald', 'journald', '' ,d)}"
+
 # libsoup-3 will be available not before Poky kirkstone.
 # http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/meta/recipes-support/libsoup/libsoup_3.0.1.bb?id=de296e2b2be876ca5cf2af309b710111e2b2581e
 EXTRA_OECMAKE += "-DUSE_SOUP2=ON"
manuelafm commented 2 years ago

LGTM-ish, but several jobs fail because cmae cannot find libsystemd.

Good catch. WebKit 2.36 renames USE_SYSTEMD to ENABLE_JOURNALD_LOG.

The following changes should address that (PR already pushed with them)

Still failing at least on one test: https://gitlab.com/browsers/meta-webkit/-/pipelines/502812348/failures

I suppose that you'll notice at some point, but was checking myself the current status and already saw this problem, so just in case and advancing to try to get it solved earlier.

psaavedra commented 2 years ago

I forgot to update the webkitgtk recipe.

aperezdc commented 2 years ago

The libjxl build recipe downloads sources using a script instead of listing them in SRC_URI. I would prefer to see that changed before merging.

Also, have you wondered also contributing the libjxl recipe to upstream Yocto? That way in the future it will be possible to remove it from meta-webkit.

psaavedra commented 2 years ago

ownloads sources using a script instead of listing them in SRC_URI. I wou

The libjxl build recipe downloads sources using a script instead of listing them in SRC_URI. I would prefer to see that changed before merging.

Also, have you wondered also contributing the libjxl recipe to upstream Yocto? That way in the future it will be possible to remove it from meta-webkit.

That is a good point. Yes in the future I agree on move this kind of "extra" packages to meta-oe. That is fine.

psaavedra commented 2 years ago

Finally I had to downgrade the highway package to 0.15.0 because some errors in the build:

/home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/libjxl-0.6.1/lib/jxl/dec_upsample.cc: In function 'void jxl::N_NEON::{anonymous}::Upsample(const ImageF&, const jxl::Rect&, jxl::ImageF*, const jxl::Rect&, const float*, ssize_t, size_t, float*)':
/home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/libjxl-0.6.1/lib/jxl/dec_upsample.cc:179:23: error: no matching function for call to 'MinOfLanes(hwy::N_NEON::Vec128<float, 4>&)' 
  179 |       min = MinOfLanes(min); 
      |             ~~~~~~~~~~^~~~~ 
In file included from /home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/recipe-sysroot/usr/include/hwy/highway.h:304, 
                 from /home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/libjxl-0.6.1/lib/jxl/dec_upsample.cc:11: 
/home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/recipe-sysroot/usr/include/hwy/ops/arm_neon-inl.h:4445:22: note: candidate: 'template<class T, unsigned int N> hwy::N_NEON::Vec128<T, N> hwy::N_NEON::MinOfLanes(hwy::N_NEON::Simd<T, kNumLanes, 0>, hwy::N_NEON::Vec128<T, N>)' 
 4445 | HWY_API Vec128<T, N> MinOfLanes(Simd<T, N, 0> /* tag */, const Vec128<T, N> v) { 
      |                      ^~~~~~~~~~ 
/home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/recipe-sysroot/usr/include/hwy/ops/arm_neon-inl.h:4445:22: note:   template argument deduction/substitution failed: 
/home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/libjxl-0.6.1/lib/jxl/dec_upsample.cc:179:23: note:   'hwy::N_NEON::Vec128<float, 4>' is not derived from 'hwy::N_NEON::Simd<T, kNumLanes, 0>'
  179 |       min = MinOfLanes(min);
      |             ~~~~~~~~~~^~~~~
/home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/libjxl-0.6.1/lib/jxl/dec_upsample.cc:180:23: error: no matching function for call to 'MaxOfLanes(hwy::N_NEON::Vec128<float, 4>&)'
  180 |       max = MaxOfLanes(max);
      |             ~~~~~~~~~~^~~~~
home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/libjxl-0.6.1/lib/jxl/transpose-inl.h:153:38: error: 'InterleaveUpper' was not declared in this scope 
  153 |       const auto r3 = InterleaveUpper(q2, q3); 
      |                       ~~~~~~~~~~~~~~~^~~~~~~~ 
/home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/libjxl-0.6.1/lib/jxl/transpose-inl.h:153:38: note: suggested alternatives:
In file included from /home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/recipe-sysroot/usr/include/hwy/highway.h:304,
                 from /home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/libjxl-0.6.1/lib/jxl/dec_group.cc:20:
/home/bot/yocto-rpi3-manual/builds/raspberrypi3-mesa-wpe-nightly/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/libjxl/0.6.1-r0/recipe-sysroot/usr/include/hwy/ops/arm_neon-inl.h:3666:11: note:   'hwy::N_NEON::InterleaveUpper'
 3666 | HWY_API V InterleaveUpper(Simd<T, N, 0> d, V a, V b) {

OTOH, 0.15.0 is the version already used in WPE flatpak as well so I don't foresee a major issue doing this downgrade. I will investigate if we could do something to update this component later.

psaavedra commented 2 years ago

WARNING: highway-0.15.0-r0 do_package_qa: QA Issue: highway: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol [src-uri-bad]

from

    for url in d.getVar("SRC_URI").split():
        if re.search(r"git(hu|la)b\.com/.+/.+/archive/.+", url):
            package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol" % pn, d)

and the same happens with libxl. I will move the sources recipes to git again.

aperezdc commented 2 years ago

WARNING: highway-0.15.0-r0 do_package_qa: QA Issue: highway: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol [src-uri-bad]

from

    for url in d.getVar("SRC_URI").split():
        if re.search(r"git(hu|la)b\.com/.+/.+/archive/.+", url):
            package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol" % pn, d)

and the same happens with libxl. I will move the sources recipes to git again.

What I meant in my comment earlier was to use Git, but with HTTPS as the transport, because the Git protocol is insecure. This is why I mentioned about appending ;protocol=https to the SRC_URI entries to make them look like git://host.com/repo;tag=...;protocol=https 😉

psaavedra commented 2 years ago

WARNING: highway-0.15.0-r0 do_package_qa: QA Issue: highway: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol [src-uri-bad] from

    for url in d.getVar("SRC_URI").split():
        if re.search(r"git(hu|la)b\.com/.+/.+/archive/.+", url):
            package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol" % pn, d)

and the same happens with libxl. I will move the sources recipes to git again.

What I meant in my comment earlier was to use Git, but with HTTPS as the transport, because the Git protocol is insecure. This is why I mentioned about appending ;protocol=https to the SRC_URI entries to make them look like git://host.com/repo;tag=...;protocol=https wink

Now understood. I think with this last change everything is in place. I will let the CI finish before merging anything.