Scarthgap#12
Conversation
Added a workflow for Chromium compile/test which is inspired from the Firefox version. I've restricted the build matrix to avoid building targets which we are not interested in. But meta-chromium-test provides recipes for building all possible combinations if neeeded. meta-chromium-test repo has the necessary infrastructure for running a basic smoke test. But test is not sufficient enough, so I decided to not to run the test step. Removed -g flags from arm builds. arm linker is unable to link the image if -g flag is used.
master branch of meta-chromium-test will use newer versions of meta-rust and meta-clang. Newer versions of these compilers cannot compile the older Chromium. Created a walnascar branch on meta-chromium-test which will point to meta-oe, poky and meta-clang master branches which points to refs on master equilavent of walnascar branch.
Release notes:
https://chromereleases.googleblog.com/2025/05/stable-channel-update-for-desktop_14.html
Build and patch changes:
------------------------
Added patches:
* 0014-Revert-Remove-libavif-based-AVIF-decoder.patch
* 0015-Revert-Remove-third_party-libavif.patch
* 0017-rust-Use-adler-instead-of-adler2.patch
* 0018-third_party-node-update_node_binaries-Update-nodejs-.patch
Updated patches:
* 0016-Disable-crabbyavif-to-fix-build-errors.patch
* Rebased remaining patches.
Removed patches:
* 0015-Revert-Connect-the-Rust-log-crate-to-the-base-loggin.patch
License changes:
----------------
Added licenses:
* TBD
Removed licenses:
* TBD
Updated licenses:
* TBD
Test-built:
-----------
* chromium-ozone-wayland
* master, clang, MACHINE=qemux86-64, qemuarm, qemuarm64
* chromium-x11
* master, clang, MACHINE=qemux86-64, qemuarm, qemuarm64
Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
Add configuration options to enable hardware video decoding using stateless V4L2 M2M device. This allows offloading e.g. h264 video playback to Hantro VPU on i.MX8MP where this was tested. To make that work, enable 'use-v4l2' and 'proprietary-codecs' PACKAGECONFIG. This commit was implemented with much great help from Jianfeng Liu . Signed-off-by: Marek Vasut <marex@denx.de>
OSSystems tested Chromium136 with following repo hashes: meta-oe: commit: "a8dfd10600035a799abae03178fc7054582ea43d" poky: commit: "243d54fd466f5f852cc0fdcce57997918ce35f32" meta-clang: commit: "7a2f83360920b10214e2659e17a4b9cba2d0435b" chromium136-master branch of meta-chromium-test uses these hashes.
rust triple is not specialized in yocto for neon enabled arm targets.
Filters out unwanted clang flags from rust compiler invocation.
Chromium 138+ uses its bundled libc++ and compiler-rt. To ensure the build system uses these and does not fall back to system-provided runtime libraries, explicitly pass the target triple and disable system stdlib++. This avoids linker errors caused by missing crtbeginS.o, crtendS.o, and libgcc when using Clang with a minimal sysroot. Release Notes: https://chromereleases.googleblog.com/2025/07/stable-channel-update-for-desktop_15.html Build and patch changes: Added patches: 0011-fix-check_version-Only-compare-node.js-major-version.patch Updated patches: 0009-Adjust-the-Rust-build-to-our-needs.patch Removed patches: 0011-Disable-crabbyavif-to-fix-build-errors.patch 0012-Revert-Allow-and-use-std-hardware_destructive_interf.patch 0013-Revert-Set-Rust-symbol-visibility-to-hidden-when-C-s.patch 0014-pdfium-Fix-missing-PDFiumAPIStringBufferAdapter-temp.patch 0015-Revert-Connect-the-Rust-log-crate-to-the-base-loggin.patch License changes: Added licenses: third_party/compiler-rt/src/LICENSE.TXT third_party/libtess2/LICENSE third_party/llvm-libc/src/LICENSE.TXT third_party/net/third_party/mozilla_security_manager/LICENSE Removed licenses: third_party/accessibility-audit/LICENSE third_party/io_grpc_grpc_api/LICENSE third_party/libavifinfo/LICENSE Updated licenses: third_party/android_deps/libs/com_google_android_gms_play_services_auth/LICENSE → third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_auth/LICENSE third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/LICENSE → third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_auth_api_phone/LICENSE third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/LICENSE → third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_auth_base/LICENSE third_party/android_deps/libs/com_google_android_gms_play_services_auth_blockstore/LICENSE → third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_auth_blockstore/LICENSE third_party/android_deps/libs/com_google_android_gms_play_services_fido/LICENSE → third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_fido/LICENSE third_party/android_deps/libs/com_google_android_libraries_identity_googleid_googleid/LICENSE → third_party/android_deps/autorolled/committed/libs/com_google_android_libraries_identity_googleid_googleid/LICENSE third_party/expat/src/expat/COPYING third_party/libjpeg_turbo/LICENSE Test-built chromium-ozone-wayland master, clang, MACHINE=qemux86-64 chromium-x11 master, clang, MACHINE=qemux86-64, qemuarm, qemuarm64 Repo hashes (from meta-chromium-test) meta-oe: commit: "a8dfd10600035a799abae03178fc7054582ea43d" poky: commit: "243d54fd466f5f852cc0fdcce57997918ce35f32" meta-clang: commit: "7a2f83360920b10214e2659e17a4b9cba2d0435b"
Added an electron build recipe and supplementary files. Electron recipes include Chromium recipes and override the necessary parts like do_compile, do_configure. meta-chromium-test is updated to test electron, as well as chromium. Added an electron workflow to use that infrastructure.
This changeset introduces major improvements to the GitHub Actions CI/CD workflows for the meta-browser project. The changes add support for running builds and tests on AWS EC2 instances for both Chromium and Electron, enable matrix builds across multiple configurations, and provide a new workflow for cleaning up EFS cache storage. The updates make the CI system more scalable, configurable, and better suited for large builds. New EC2-based CI workflow and matrix build support: Added a new workflow file bs_meta_browser_ci_ec2.yml that provisions EC2 runners, tags resources, and orchestrates build/test jobs for meta-browser on AWS, including automatic runner startup and cleanup. Updated chromium.yml and electron.yml to support matrix builds on AWS EC2, with configurable instance types, build parameters, and the option to fall back to local runners for manual dispatch. This enables parallel builds across Yocto versions, platforms, architectures, and libc flavors. Infrastructure and configuration enhancements: Added OIDC authentication permissions (id-token: write) to workflows for secure AWS credential management. Improved EC2 runner tagging for better traceability and resource management, including passing build metadata as AWS resource tags. EFS cache management: Introduced a new workflow cleanup-efs-cache.yml to automate cleanup of Yocto downloads and sstate-cache directories on EFS using a temporary EC2 runner, with options for selective cleanup and disk usage reporting. Minor fixes and consistency: Updated test repo cloning in build scripts to remove hardcoded branch, ensuring consistency for both Chromium and Electron workflows.
scarthgap doesn't define UNPACKDIR, use WORKDIR instead.
Chromium138/Electron37 requires Node.js v22.11.0. Add a new recipe to use updated version.
There was a problem hiding this comment.
Pull Request Overview
This PR updates the repository configuration to target the Yocto "Scarthgap" release branch instead of "master", adding Node.js 22.11.0 recipe support and updating build configurations accordingly.
- Node.js 22.11.0 recipe and supporting files added with comprehensive patch collection
- CI/CD workflows updated to use Scarthgap branch for testing
- Source directory variables updated from UNPACKDIR to WORKDIR for compatibility
Reviewed Changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| meta-chromium/recipes-devtools/nodejs/nodejs_22.11.0.bb | Complete Node.js 22.11.0 build recipe with cross-compilation support |
| meta-chromium/recipes-devtools/nodejs/nodejs-oe-cache-native_22.11.bb | NPM cache helper recipe for Node.js 22.11 |
| meta-chromium/recipes-devtools/nodejs/nodejs-oe-cache-22.11/oe-npm-cache | NPM cache manipulation utility script |
| meta-chromium/recipes-devtools/nodejs/nodejs/*.patch | Collection of patches for Node.js compatibility and cross-compilation |
| meta-chromium/recipes-browser/chromium/*.inc | Source directory path updates for Chromium recipes |
| .github/workflows/*.yml | CI workflow updates to target Scarthgap branch |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| d.setVar("HOST_AND_TARGET_SAME_WIDTH", "1") | ||
| } | ||
|
|
||
| BBCLASSEXTEND = "native" |
There was a problem hiding this comment.
[nitpick] The recipe lacks versioning information in BBCLASSEXTEND. For Node.js recipes that support both target and native builds, consider using a more specific extension pattern or adding version-specific native recipe handling to avoid potential conflicts with other Node.js versions.
| BBCLASSEXTEND = "native" | |
| BBCLASSEXTEND = "native:${PN}-${PV}" |
| +#if defined(__ANDROID__) || \ | ||
| + defined(__MINGW32__) || \ | ||
| + defined(__OpenBSD__) || \ | ||
| + defined(_MSC_VER) | ||
| + | ||
| +# include <nameser.h> | ||
| +#else | ||
| +# include <arpa/nameser.h> | ||
| +#endif |
There was a problem hiding this comment.
[nitpick] The patch replaces a direct include with platform-specific conditional includes. While this may resolve compatibility issues with c-ares 1.17.1, this approach may break if the upstream c-ares library structure changes. Consider adding a comment explaining why this specific header arrangement is needed for this c-ares version.
| /// <type> ... meta - metainformation about package | ||
| /// tgz - tarball | ||
|
|
||
| const process = require("node:process"); |
There was a problem hiding this comment.
[nitpick] Using the 'node:' prefix for core modules is a Node.js 16+ feature. Since this is for Node.js 22.11, this is acceptable, but consider adding a comment indicating the minimum Node.js version requirement for this script.
meta-chromium-test has some modifications for scarthgap builds. Use that branch when building for scarthgap
7f2c918 to
be5ed12
Compare
fdb8f4b to
198b0f7
Compare
No description provided.