Skip to content

Conversation

zboszor
Copy link
Contributor

@zboszor zboszor commented Sep 17, 2025

Builds on #920

caneraltinbasak and others added 4 commits September 11, 2025 13:09
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"
There are breaking changes in whinlatter in oe-core.

Part of the changes was that meta-clang was merged into oe-core.
There's no need to depend on meta-clang anymore.

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
RUNTIME and TC_CXX_RUNTIME are both set explicitly to "llvm"
in chromium.inc. Therefore the :runtime-llvm override is
not needed because it's always on. But it's also a problem in
whinlatter now, because the DEPENDS = "compiler-rt" is not
applied properly, making do_copy_clang_library() fail.
Remove :runtime-llvm override.

Use TOOLCHAIN_NATIVE instead of TOOLCHAIN:class-native.

Drop 0008-Use-the-correct-path-to-libclang_rt.builtins.a.patch
and fix do_copy_clang_library() in a way that's compatible with
clang in oe-core.

Depend on lld-native.

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
@jcalvinowens
Copy link
Contributor

This was working for me on both master and master-next until the recent Rust upgrade [1]:

ld.lld: error: undefined symbol: __rustc::__rust_alloc_error_handler_should_panic_v2
>>> referenced by alloc.d16fd91a32ace09d-cgu.4
>>>               alloc-faa60bfc05302ce6.alloc.d16fd91a32ace09d-cgu.4.rcgu.o:(__rustc::__rdl_oom) in archive yocto_native/prebuilt_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc.rlib
>>> referenced by std.af0d7a7313393f15-cgu.04
>>>               std-8688c4250417c96d.std.af0d7a7313393f15-cgu.04.rcgu.o:(std::alloc::default_alloc_error_hook::hbbe2e26af10d4252) in archive yocto_native/prebuilt_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd.rlib
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

Full command here: https://pastebin.com/raw/pz2cKdML

[1] https://git.openembedded.org/openembedded-core/commit/?id=86d09ec9cd

@zboszor
Copy link
Contributor Author

zboszor commented Sep 28, 2025

Can you try adding the patch from
https://github.com/chromium/chromium/commit/23d818d3c7fba4658248f17fd7b8993199242aa9.patch
?

It looks like it has landed in the new stable chromium 141.0.7390.43.
https://chromiumdash.appspot.com/commit/23d818d3c7fba4658248f17fd7b8993199242aa9

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
jcalvinowens added a commit to jcalvinowens/meta-browser that referenced this pull request Sep 28, 2025
@jcalvinowens
Copy link
Contributor

That did it. This PR works for now with these upstream SHAs:

:master-next
2025-09-28 11:15:41 - INFO     - Repository bitbake checked out to 90073ae5f2b0861983e1980812002386bdeeb170
2025-09-28 11:15:41 - INFO     - Repository openembedded-core checked out to b458ba33a3a2521ca1e778713b51265354089ed1
2025-09-28 11:15:41 - INFO     - Repository meta-yocto checked out to db24e48498b2d40131b871f6eafeb7a67da343f0
2025-09-28 11:15:41 - INFO     - Repository meta-openembedded checked out to c3013c45d9ac3591cd8298bb81fb0598ffdf0d1e
2025-09-28 11:15:41 - INFO     - Repository meta-browser checked out to 255113e39c96ee977c92ee717276d2dc42d2a8c7 

:master
2025-09-28 13:03:34 - INFO     - Repository bitbake checked out to 7bd36f6c6d33211bb2a6b6fc6d40bdbd83b8b7c3
2025-09-28 13:03:34 - INFO     - Repository openembedded-core checked out to 07747aa7390e98bf2853154e5fd473e4984a1d3d
2025-09-28 13:03:34 - INFO     - Repository meta-yocto checked out to db24e48498b2d40131b871f6eafeb7a67da343f0
2025-09-28 13:03:34 - INFO     - Repository meta-openembedded checked out to 52e78803b0c0c2f6b523b6a6fd4505af25cc6ff2
2025-09-28 13:03:34 - INFO     - Repository meta-browser checked out to 255113e39c96ee977c92ee717276d2dc42d2a8c7

gn[-native] is shipped by oe-core since this commit:

commit e8dbf41f1f40ae3a5f9641429cad974f716f1f3e
Author: Khem Raj <raj.khem@gmail.com>
Date:   Mon Sep 29 08:36:47 2025 -0700

    gn: Add recipe

    gn is a commonly used build tool to generate ninja files, used
    in a lot of recipes e.g. chromium, qtwebengine, perfetto, hafnium etc.
    these recipes come from different layers e.g. meta-qt6/meta-arm/meta-oe

    since not all layers depend on meta-oe ( meta-arm does not ), its not
    a possible option.

    Given the usecases, putting it in core will benefit the ecosystem
    and reduce some duplication. This recipe is taken from meta-arm

    Disable maybe-initialized is a gcc specific option as error

    Disable format warnings as errors, it adds -Wno-format explictly in
    its build system

    Signed-off-by: Khem Raj <raj.khem@gmail.com>
    Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
jcalvinowens added a commit to jcalvinowens/meta-browser that referenced this pull request Oct 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

5 participants