Skip to content

Scarthgap#12

Closed
caneraltinbasak wants to merge 16 commits into
masterfrom
scarthgap
Closed

Scarthgap#12
caneraltinbasak wants to merge 16 commits into
masterfrom
scarthgap

Conversation

@caneraltinbasak

Copy link
Copy Markdown

No description provided.

caneraltinbasak and others added 14 commits July 15, 2025 11:46
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.
Copilot AI review requested due to automatic review settings September 3, 2025 08:13

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"

Copilot AI Sep 3, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

Suggested change
BBCLASSEXTEND = "native"
BBCLASSEXTEND = "native:${PN}-${PV}"

Copilot uses AI. Check for mistakes.
Comment on lines +21 to +29
+#if defined(__ANDROID__) || \
+ defined(__MINGW32__) || \
+ defined(__OpenBSD__) || \
+ defined(_MSC_VER)
+
+# include <nameser.h>
+#else
+# include <arpa/nameser.h>
+#endif

Copilot AI Sep 3, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

Copilot uses AI. Check for mistakes.
/// <type> ... meta - metainformation about package
/// tgz - tarball

const process = require("node:process");

Copilot AI Sep 3, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

Copilot uses AI. Check for mistakes.
meta-chromium-test has some modifications for scarthgap builds. Use
that branch when building for scarthgap
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants