Skip to content

Conversation

@zboszor
Copy link
Contributor

@zboszor zboszor commented Sep 17, 2025

Builds on #920

@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

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

jcalvinowens added a commit to jcalvinowens/meta-browser that referenced this pull request Oct 7, 2025
@neenareddi
Copy link

Hi @zboszor ,

I'm running into this error with your changes. Any idea on how to fix this ?

ERROR: chromium-ozone-wayland-140.0.7339.136-r0 do_compile: Execution of '/home/chromium/whinlatter/bld-mx8/tmp/work/armv8a-mx8-poky-linux/chromium-ozone-wayland/140.0.7339.136/temp/run.do_compile.547038' failed with exit code 1
ERROR: Logfile of failure stored in: /home/chromium/whinlatter/bld-mx8/tmp/work/armv8a-mx8-poky-linux/chromium-ozone-wayland/140.0.7339.136/temp/log.do_compile.547038
Log data follows:
| DEBUG: Executing shell function do_compile
| ninja: error: '../../../../recipe-sysroot-native/usr/lib/clang/latest/lib/aarch64-unknown-linux-gnu/libclang_rt.builtins.a', needed by 'obj/build/rust/allocator/liballoc_error_handler_impl.a', missing and no known rule to make it
| WARNING: exit code 1 from a shell command.

@anon3137
Copy link

same issue as @neenareddi when cross compiling for ARM64 target.
Using a modified/updated variant of the old "0008-Use-the-correct-path-to-libclang_rt.builtins.a.patch" dident seem to resolve the issue in my case, the problem probably lies deeper.

@otavio
Copy link
Member

otavio commented Oct 22, 2025

Take a look at this discussion: #930 @neenareddi @anon3137

@neenareddi
Copy link

neenareddi commented Oct 22, 2025

Hi @otavio
I'm not sure if this is the right fix but this workaround fixed the above issue for me for ARM64 target. I was able to build successfully after this change.

diff --git a/meta-chromium/recipes-browser/chromium/chromium-gn.inc b/meta-chromium/recipes-browser/chromium/chromium-gn.inc
index e89d773b..905e8260 100644
--- a/meta-chromium/recipes-browser/chromium/chromium-gn.inc
+++ b/meta-chromium/recipes-browser/chromium/chromium-gn.inc
@@ -492,9 +492,27 @@ do_add_clang_latest () {
}
addtask add_clang_latest after do_configure before do_compile

-do_copy_clang_library () {
-    cp -r ${STAGING_LIBDIR_NATIVE}/clang/latest ${STAGING_DIR_HOST}${nonarch_libdir}/clang/
+do_copy_clang_library() {
+    cp -r "${STAGING_LIBDIR_NATIVE}/clang/latest" "${STAGING_DIR_HOST}${nonarch_libdir}/clang/"
+    cd "${STAGING_DIR_HOST}${nonarch_libdir}/clang" || return
+
+    lib_file=$(find . \( -name "libclang_rt.builtins-*" -o -name "liborc_rt-*" \))
+    export ARCH="${TARGET_ARCH}"
+
+    mkdir -p "latest/lib/${ARCH}-unknown-linux-gnu"
+    cp $lib_file "latest/lib/${ARCH}-unknown-linux-gnu/"
+    cd "latest/lib/${ARCH}-unknown-linux-gnu/" || return
+
+    for file in *-"${ARCH}".a; do
+        new_name=$(echo "$file" | sed "s/-${ARCH}//")
+        mv "$file" "$new_name"
+    done
+
+    native_arch_path="${STAGING_LIBDIR_NATIVE}/clang/latest/lib/${ARCH}-unknown-linux-gnu/"
+    mkdir -p "$native_arch_path"
+    cp -r * "$native_arch_path"
 }

@anon3137
Copy link

@neenareddi your workaround works for me too. Thanks

@zboszor
Copy link
Contributor Author

zboszor commented Oct 28, 2025

Hi @otavio I'm not sure if this is the right fix but this workaround fixed the above issue for me for ARM64 target. I was able to build successfully after this change.

diff --git a/meta-chromium/recipes-browser/chromium/chromium-gn.inc b/meta-chromium/recipes-browser/chromium/chromium-gn.inc index e89d773b..905e8260 100644 --- a/meta-chromium/recipes-browser/chromium/chromium-gn.inc +++ b/meta-chromium/recipes-browser/chromium/chromium-gn.inc @@ -492,9 +492,27 @@ do_add_clang_latest () { } addtask add_clang_latest after do_configure before do_compile

-do_copy_clang_library () {
-    cp -r ${STAGING_LIBDIR_NATIVE}/clang/latest ${STAGING_DIR_HOST}${nonarch_libdir}/clang/
+do_copy_clang_library() {
+    cp -r "${STAGING_LIBDIR_NATIVE}/clang/latest" "${STAGING_DIR_HOST}${nonarch_libdir}/clang/"
+    cd "${STAGING_DIR_HOST}${nonarch_libdir}/clang" || return
+
+    lib_file=$(find . \( -name "libclang_rt.builtins-*" -o -name "liborc_rt-*" \))
+    export ARCH="${TARGET_ARCH}"
+
+    mkdir -p "latest/lib/${ARCH}-unknown-linux-gnu"
+    cp $lib_file "latest/lib/${ARCH}-unknown-linux-gnu/"
+    cd "latest/lib/${ARCH}-unknown-linux-gnu/" || return
+
+    for file in *-"${ARCH}".a; do
+        new_name=$(echo "$file" | sed "s/-${ARCH}//")
+        mv "$file" "$new_name"
+    done
+
+    native_arch_path="${STAGING_LIBDIR_NATIVE}/clang/latest/lib/${ARCH}-unknown-linux-gnu/"
+    mkdir -p "$native_arch_path"
+    cp -r * "$native_arch_path"
 }

I will test your change on my x86-64 build and commit it if it works.

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>
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>
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. Remove it.

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Use TOOLCHAIN_NATIVE instead of TOOLCHAIN:class-native.

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Chromium wants to be linked with lld.

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
@zboszor zboszor force-pushed the meta-chromium-whinlatter-support branch 2 times, most recently from e60a5db to b0511a6 Compare October 31, 2025 10:21
@zboszor
Copy link
Contributor Author

zboszor commented Oct 31, 2025

I am building 142.0.7444.59 now, chromium-x11 for intel-corei7-64 already succeeded.

3 more builds to go.

@zboszor zboszor changed the title Update chromium to 140.0.7339.136 and meta-chromium whinlatter support Update chromium to 142.0.7444.59 and meta-chromium whinlatter(-only) support Nov 1, 2025
@zboszor zboszor force-pushed the meta-chromium-whinlatter-support branch from 0905e70 to 5898670 Compare November 1, 2025 04:29
Release Notes:
    https://chromereleases.googleblog.com/2025/09/stable-channel-update-for-desktop_9.html
    https://chromereleases.googleblog.com/2025/09/beta-channel-update-for-chromeos_12.html

Build and patch changes:
------------------------

Added INSANE_SKIP = "buildpaths" to the debug package.
Backported a patch for rust 1.90.

Added patches:
  * 0001-Define___rust_alloc_error_handler_should_panic_v2.patch

Updated patches:
  * 0001-Drop-GN-compiler-settings-conflicting-with-OE.patch
  * 0004-Delete-compiler-options-not-available-in-release-ver.patch
  * 0009-Adjust-the-Rust-build-to-our-needs.patch

Removed patches:
  * 0008-Use-the-correct-path-to-libclang_rt.builtins.a.patch

License changes:
----------------

Added licenses:
  * third_party/android_deps/autorolled/committed/libs/com_airbnb_android_lottie/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_android_annotations/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_cloud_messaging/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_code_gson_gson/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_annotations/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_common/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_components/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_datatransport/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_iid_interop/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_installations/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_installations_interop/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_measurement_connector/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_firebase_firebase_messaging/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_grpc_grpc_api/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_grpc_grpc_binder/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_grpc_grpc_context/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_grpc_grpc_core/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_grpc_grpc_protobuf_lite/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_grpc_grpc_stub/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_perfmark_perfmark_api/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_reactivex_rxjava2_rxandroid/LICENSE
  * third_party/android_deps/autorolled/committed/libs/io_reactivex_rxjava2_rxjava/LICENSE
  * third_party/android_deps/autorolled/committed/libs/org_checkerframework_checker_util/LICENSE
  * third_party/android_deps/autorolled/committed/libs/org_codehaus_mojo_animal_sniffer_annotations/LICENSE
  * third_party/android_deps/autorolled/committed/libs/org_reactivestreams_reactive_streams/LICENSE
  * third_party/androidx/committed/libs/androidx_datastore_datastore_preferences_android/LICENSE
  * third_party/androidx/committed/libs/androidx_datastore_datastore_preferences_core_android/LICENSE
  * third_party/androidx/committed/libs/androidx_datastore_datastore_preferences_external_protobuf/LICENSE
  * third_party/androidx/committed/libs/androidx_datastore_datastore_preferences_proto/LICENSE
  * third_party/androidx/committed/libs/androidx_navigationevent_navigationevent_compose_android/LICENSE
  * third_party/angle/third_party/re2/LICENSE
  * third_party/catapult/third_party/jszip/LICENSE.markdown
  * third_party/catapult/tracing/third_party/jszip/LICENSE.markdown
  * third_party/devtools-frontend/src/front_end/third_party/source-map-scopes-codec/LICENSE
  * third_party/readability/LICENSE

Removed licenses:
  * chrome/third_party/mozilla_security_manager/LICENSE
  * native_client_sdk/src/libraries/third_party/newlib-extras/README
  * third_party/android_deps/libs/com_google_android_gms_play_services_cloud_messaging/LICENSE
  * third_party/android_deps/libs/com_google_dagger_dagger/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_annotations/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_common/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_common_ktx/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_components/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_datatransport/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_iid/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_iid_interop/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_installations/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_installations_interop/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_measurement_connector/LICENSE
  * third_party/android_deps/libs/com_google_firebase_firebase_messaging/LICENSE
  * third_party/android_deps/libs/jakarta_inject_jakarta_inject_api/LICENSE
  * third_party/android_deps/libs/org_checkerframework_checker_util/LICENSE
  * third_party/android_deps/libs/org_codehaus_mojo_animal_sniffer_annotations/LICENSE
  * third_party/chromevox/third_party/closure-library/LICENSE
  * third_party/jszip/LICENSE
  * third_party/mesa_headers/LICENSE
  * third_party/wasm_tts_engine/EIGEN_LICENSE

Updated licenses:
  * chrome/browser/resources/chromeos/accessibility/chromevox/mv2/third_party/tamachiyomi/LICENSE → chrome/browser/resources/chromeos/accessibility/chromevox/mv2/background/third_party/tamachiyomi/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_auth/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_auth_base/LICENSE
  * third_party/android_deps/autorolled/committed/libs/com_google_android_gms_play_services_instantapps/LICENSE
  * third_party/android_deps/autorolled/committed/libs/org_checkerframework_checker_qual/LICENSE
  * third_party/bidimapper/licenses/LICENSE.zod
  * third_party/ffmpeg/CREDITS.chromium

Test-built:
-----------

* chromium-ozone-wayland
  * MACHINE=intel-corei7-64, qemuarm64

* chromium-x11
  * MACHINE=intel-corei7-64, qemuarm64

Test dependencies:
------------------

* URI: git://git.openembedded.org/openembedded-core
  - branch: master
  - revision: 2c134301b55892ecf3c0ae9fa4912bc827579ece
    (poky equivalent: 8a69e57f53f4523c1b86d8d259826b57c8df0a3a)

* URI: git://git.openembedded.org/meta-openembedded
  - layers: meta-oe
  - branch: master
  - revision: 7e9941ab0f69576542cbfeb6576750c878bdd6ca

* URI: git://github.com/kraj/meta-clang
  - branch: master
  - revision: 95a6015b1e12fd760ecd22b6915a7e65bdef3d73

* URI: git://git.yoctoproject.org/meta-intel
  - branch: master
  - revision: c347d0be75958ca095d4ad320c6f2faf88b364a6

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Release Notes:
https://chromereleases.googleblog.com/2025/10/stable-channel-update-for-desktop_28.html

Build and patch changes:
------------------------

Added skia_use_dawn=false to GN_ARGS. skia_use_dawn=true (the default) causes
a build error because "dawn_commit_hash.h" does not exist, but it's included
unconditionally. To fix the error, a supporting patch was also added.

Added a patch to build with Rust 1.90 found in Yocto master.

Added patches:
  * 0001-Fix-building-gpu_host_impl.cc-on-Linux.patch
  * chromium-142-crabbyavif-rust18x.patch

Updated patches:
  * 0004-Delete-compiler-options-not-available-in-release-ver.patch
  * 0009-Adjust-the-Rust-build-to-our-needs.patch

Removed patches:
  * 0006-Don-t-pass-unknown-LLVM-options.patch
  * 0001-Define___rust_alloc_error_handler_should_panic_v2.patch

License changes:
----------------

Added licenses:
  * third_party/android_deps/autorolled/committed/libs/com_google_ar_impress/LICENSE
  * third_party/android_deps/autorolled/committed/libs/org_jetbrains_kotlinx_kotlinx_serialization_json_jvm/LICENSE
  * third_party/androidx/committed/libs/androidx_compose_runtime_runtime_retain_android/LICENSE
  * third_party/androidx/committed/libs/androidx_xr_runtime_runtime_manifest/LICENSE
  * third_party/federated_compute/src/LICENSE
  * third_party/oak/src/LICENSE

Removed licenses:
  * chrome/installer/mac/third_party/bsdiff/LICENSE
  * chrome/installer/mac/third_party/xz/LICENSE
  * ios/third_party/material_components_ios/LICENSE
  * ios/third_party/material_internationalization_ios/LICENSE
  * ios/third_party/material_roboto_font_loader_ios/LICENSE
  * ios/third_party/material_sprited_animation_view_ios/LICENSE
  * ios/third_party/material_text_accessibility_ios/LICENSE
  * ios/third_party/motion_animator_objc/LICENSE
  * ios/third_party/motion_interchange_objc/LICENSE
  * ios/third_party/motion_transitioning_objc/LICENSE
  * net/third_party/nss/LICENSE
  * third_party/android_deps/libs/com_google_ar_impress/LICENSE
  * third_party/androidx/committed/libs/androidx_window_extensions_extensions/LICENSE
  * third_party/androidx/committed/libs/androidx_window_sidecar_sidecar/LICENSE
  * third_party/ashmem/LICENSE
  * third_party/bspatch/LICENSE

Updated licenses:
  * third_party/android_deps/autorolled/committed/libs/org_checkerframework_checker_qual/LICENSE
  * third_party/devtools-frontend/src/LICENSE
  * third_party/swiftshader/third_party/SPIRV-Headers/LICENSE

Test-built:
-----------

* chromium-ozone-wayland
  * MACHINE=intel-corei7-64, qemuarm64

* chromium-x11
  * MACHINE=intel-corei7-64, qemuarm64

Test dependencies:
------------------

* URI: git://git.openembedded.org/openembedded-core
  - branch: master
  - revision: 380ea7d79a7c7be3eee2fe4f57935787b57ab16c
    (poky equivalent: 77348b07ccd98689a15d6b1baf64471953fd557e)

* URI: git://git.openembedded.org/meta-openembedded
  - layers: meta-oe
  - branch: master
  - revision: 5a4c632ac3f165e642d25ec8ea7a45b94a1ccd19

* URI: git://github.com/kraj/meta-clang
  - branch: master
  - revision: 95a6015b1e12fd760ecd22b6915a7e65bdef3d73

* URI: git://git.yoctoproject.org/meta-intel
  - branch: master
  - revision: 5c653790aaa5d61435e4b9fbbee7957b3d22e838

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
@zboszor zboszor force-pushed the meta-chromium-whinlatter-support branch from 5898670 to 5fb276a Compare November 1, 2025 04:31
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.

7 participants