Skip to content

Update dependency score_toolchains_rust to v0.10.0 - #369

Open
eclipse-score-bot wants to merge 4 commits into
mainfrom
renovate/score_toolchains_rust-0.x
Open

Update dependency score_toolchains_rust to v0.10.0#369
eclipse-score-bot wants to merge 4 commits into
mainfrom
renovate/score_toolchains_rust-0.x

Conversation

@eclipse-score-bot

@eclipse-score-bot eclipse-score-bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change
score_toolchains_rust bazel_dep patch 0.9.10.9.2

Release Notes

eclipse-score/toolchains_rust (score_toolchains_rust)

v0.9.2

What's Changed

Full Changelog: eclipse-score/toolchains_rust@v0.9.1...v0.9.2


  • If you want to rebase/retry this PR, check this box

This PR was generated by #infrastructure automation. Contact us if you have any questions or feedback.

@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run --lockfile_mode=error //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.6.0) and connecting to it...
INFO: Invocation ID: 4a84a62d-5510-40d8-9256-f2123a668c96
Computing main repo mapping: 
Computing main repo mapping: 
Loading: 
Loading: 0 packages loaded
Loading: 0 packages loaded
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)

Analyzing: target //:license-check (37 packages loaded, 10 targets configured)

Analyzing: target //:license-check (89 packages loaded, 10 targets configured)

Analyzing: target //:license-check (145 packages loaded, 1759 targets configured)

Analyzing: target //:license-check (158 packages loaded, 4928 targets configured)

Analyzing: target //:license-check (159 packages loaded, 7168 targets configured)

Analyzing: target //:license-check (168 packages loaded, 9373 targets configured)

Analyzing: target //:license-check (170 packages loaded, 9397 targets configured)

Analyzing: target //:license-check (170 packages loaded, 9397 targets configured)

Analyzing: target //:license-check (170 packages loaded, 9397 targets configured)

Analyzing: target //:license-check (173 packages loaded, 11285 targets configured)

Analyzing: target //:license-check (174 packages loaded, 11409 targets configured)

INFO: Analyzed target //:license-check (175 packages loaded, 11535 targets configured).
[13 / 16] JavaToolchainCompileClasses external/rules_java+/toolchains/platformclasspath_classes; 0s disk-cache, processwrapper-sandbox
[14 / 16] JavaToolchainCompileBootClasspath external/rules_java+/toolchains/platformclasspath.jar; 0s disk-cache, processwrapper-sandbox
INFO: Found 1 target...
Target //:license.check.license_check up-to-date:
  bazel-bin/license.check.license_check
  bazel-bin/license.check.license_check.jar
INFO: Elapsed time: 28.101s, Critical Path: 2.57s
INFO: 16 processes: 12 internal, 3 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 16 total actions
INFO: Running command line: bazel-bin/license.check.license_check ./formatted.txt <args omitted>
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

@github-actions

Copy link
Copy Markdown

The created documentation from the pull request is available at: docu-html

@NicolasFussberger

Copy link
Copy Markdown
Contributor

Hi @pawelrutkaq, could you take a look at what is the problem updating the rust toolchain?

/home/runner/.bazel/execroot/_main/external/score_toolchains_rust++ferrocene_toolchain_ext+ferrocene_x86_64_unknown_linux_gnu/symbol-report: symbol lookup error: /home/runner/.bazel/execroot/_main/external/score_toolchains_rust++ferrocene_toolchain_ext+ferrocene_x86_64_unknown_linux_gnu/symbol-report: undefined symbol: _RNvMNtNtNtNtCs8TbtzrLADkX_3std3sys4sync5mutex5futexNtB2_5Mutex4wake

and

ERROR: /home/runner/.bazel/external/score_baselibs+/src/log/score_log_fmt/BUILD:15:13: Compiling Rust rlib score_log_fmt (8 files) failed: (Exit 1): process_wrapper failed: error executing Rustc command (from target @@score_baselibs+//src/log/score_log_fmt:score_log_fmt) bazel-out/k8-opt-exec-ST-9c9faeccc416/bin/external/rules_rust+/util/process_wrapper/process_wrapper --subst '***' -- ... (remaining 24 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
error[E0463]: can't find crate for `profiler_builtins`
  |
  = note: the compiler may have been built without the profiler runtime

@eclipse-score-bot
eclipse-score-bot force-pushed the renovate/score_toolchains_rust-0.x branch 3 times, most recently from 9dde20d to bd2a4ef Compare July 28, 2026 08:56
@dcalavrezo-qorix

dcalavrezo-qorix commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Hi @pawelrutkaq, could you take a look at what is the problem updating the rust toolchain?

/home/runner/.bazel/execroot/_main/external/score_toolchains_rust++ferrocene_toolchain_ext+ferrocene_x86_64_unknown_linux_gnu/symbol-report: symbol lookup error: /home/runner/.bazel/execroot/_main/external/score_toolchains_rust++ferrocene_toolchain_ext+ferrocene_x86_64_unknown_linux_gnu/symbol-report: undefined symbol: _RNvMNtNtNtNtCs8TbtzrLADkX_3std3sys4sync5mutex5futexNtB2_5Mutex4wake

and

ERROR: /home/runner/.bazel/external/score_baselibs+/src/log/score_log_fmt/BUILD:15:13: Compiling Rust rlib score_log_fmt (8 files) failed: (Exit 1): process_wrapper failed: error executing Rustc command (from target @@score_baselibs+//src/log/score_log_fmt:score_log_fmt) bazel-out/k8-opt-exec-ST-9c9faeccc416/bin/external/rules_rust+/util/process_wrapper/process_wrapper --subst '***' -- ... (remaining 24 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
error[E0463]: can't find crate for `profiler_builtins`
  |
  = note: the compiler may have been built without the profiler runtime

@pawelrutkaq @NicolasFussberger

TL;DR: score_toolchains_rust 0.9.2 enables real coverage instrumentation for Rust code. Instrumented Rust compiles need the profiler_builtins crate from the sysroot — but because this repo registers the Miri toolchain in the base platform config, the S-CORE rules_rust fork points all Rust compiles at the Miri sysroot, which does not ship profiler_builtins. Result: E0463 at compile time. Reproduced and diagnosed locally; workaround and root fixes below.

The failure

ERROR: .../score_baselibs+/src/log/score_log_fmt/BUILD:15:13: Compiling Rust rlib score_log_fmt (8 files) failed
error[E0463]: can't find crate for profiler_builtins
= note: the compiler may have been built without the profiler runtime

Why a C++ coverage job compiles Rust at all

The job runs bazel coverage ... --test_lang_filters=-rust,-miri -- //score/.... The filter only controls which tests execute — //score/... still builds every target in the tree, including this repo's Rust libraries (//score/health_monitor/src/rust:health_monitoring_lib, //score/launch_manager/src/alive/src/rust:alive_rs, //score/launch_manager/src/lifecycle_client/src/rust:lifecycle_client_rs) and their score_baselibs Rust dependencies — which is where the compile fails. The build abort is why unrelated C++ tests show NO STATUS.

The causal chain (three interacting pieces)

  1. score_toolchains_rust 0.9.2 attaches llvm-cov/llvm-profdata to the Ferrocene toolchains (via the coverage-tools 1.3.0 tarball). This is intentional — it makes rules_rust add --codegen=instrument-coverage under bazel coverage, enabling Rust coverage for S-CORE repos. Before 0.9.2, Rust code was silently never instrumented.
  2. Instrumented compiles need the profiler runtime. -Cinstrument-coverage makes rustc auto-inject extern crate profiler_builtins (Rust's wrapper around LLVM compiler-rt's profile runtime — the code that actually writes .profraw). It is resolved from the sysroot at compile time, like std — so even a leaf rlib fails to compile if the sysroot lacks it.
  3. The Miri sysroot override. The S-CORE rules_rust fork points every target-side Rust compile at the Miri sysroot whenever a Miri toolchain is resolvable (rustc.bzl: "Point target-side crates at the Miri sysroot so their metadata and std linkage match what the direct miri driver will interpret later"). This repo registers the Miri toolchain in the base configs (.bazelrc:66,75 — build:x86_64-linux / build:arm64-linux), so the override applies to coverage builds too. The Miri sysroot tarball was built without the profiler runtime → E0463.

Evidence (local repro with the exact CI invocation)

The failing rustc command mixes the regular toolchain with the Miri sysroot:

.../ferrocene_x86_64_unknown_linux_gnu/rust_ferrocene/bin/rustc
'--codegen=instrument-coverage'
'--sysroot=external/score_toolchains_rust++ferrocene_toolchain_ext+ferrocene_x86_64_unknown_linux_gnu/miri-sysroot'

'--codegen=instrument-coverage'
'--sysroot=external/score_toolchains_rust++ferrocene_toolchain_ext+ferrocene_x86_64_unknown_linux_gnu/miri-sysroot'

and that sysroot contains libstd-.rlib but no libprofiler_builtins-.rlib (the main toolchain tarballs got the profiler runtime in the ferrocene_toolchain_builder "prof" rebuild in June; the miri-sysroot tarballs never did).

Repos that register Miri only inside dedicated configs (e.g. communication, persistency coverage setups) are unaffected — no sysroot override in their coverage builds.

Workaround to unblock this PR (repo-side, small)

Move the Miri toolchain registration out of the base platform configs into a dedicated config used only by Miri invocations:

.bazelrc — remove from build:x86_64-linux / build:arm64-linux:

--extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu_miri

--extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_linux_gnu_miri

build:miri --config=x86_64-linux
build:miri --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu_miri

(and invoke Miri tests with --config=miri). Beyond fixing this failure, it restores a healthy invariant: coverage (native instrumentation) and Miri (MIR interpretation for UB detection) are contradictory build modes and should never share a configuration.

Root fixes (tracked separately — either makes the workaround unnecessary)

  1. rules_rust fork: gate the Miri sysroot override on actually building for Miri (a build setting/config), not on "a Miri toolchain is registered". Registering a toolchain should not change the semantics of builds that don't use it — this is the class-of-bug fix.
  2. ferrocene_toolchain_builder: ship libprofiler_builtins in the miri-sysroot tarballs (same "prof" treatment the main toolchain tarballs received in June), making the two sysroots interchangeable under coverage.

@eclipse-score-bot
eclipse-score-bot force-pushed the renovate/score_toolchains_rust-0.x branch from bd2a4ef to 9da326d Compare July 29, 2026 06:54
@eclipse-score-bot
eclipse-score-bot force-pushed the renovate/score_toolchains_rust-0.x branch from 9da326d to f3fe441 Compare July 29, 2026 07:56
MaximilianSoerenPollak pushed a commit to eclipse-score/cicd-workflows that referenced this pull request Jul 29, 2026
* cpp-coverage: pass --build_tests_only to bazel coverage

Test language/tag filters only control which tests RUN - with wildcard
target patterns, bazel coverage still BUILDS filtered-out test targets.
This broke consumers with Miri tests once score_toolchains_rust 0.9.2
enabled Rust coverage instrumentation: the Miri test subgraph is
compiled against the Miri sysroot, which does not ship the
profiler_builtins crate that instrumented compiles require
(error[E0463], aborting the whole coverage invocation and killing
in-flight C++ tests).

With --build_tests_only the filters apply to building as well, so
excluded tests are neither run nor built. Verified on
eclipse-score/lifecycle#369: without the flag the job fails at 16/19
tests; with it, exit 0 and 19/19 tests pass.

Fixes #164

* rust-coverage: pass --build_tests_only to bazel test

Same hardening as cpp-coverage (see #164): make consumers'
--test_lang_filters/--test_tag_filters apply to building as well, so
filtered-out tests (e.g. Miri targets, whose Miri-sysroot compiles
fail under coverage instrumentation) are neither run nor built.

Consumers that already pass --build_tag_filters (e.g. lifecycle's rust
job with -miri,-loom) are unaffected; this protects the ones relying
on test filters alone.

Refs #164
score_toolchains_rust 0.9.2 enables Rust coverage instrumentation,
which exposed that the coverage workflows built filtered-out Miri test
targets - their Miri-sysroot compiles fail with
error[E0463]: can't find crate for 'profiler_builtins',
aborting the whole C++ Coverage job.

eclipse-score/cicd-workflows#164 (fixed in #165, commit 4c20f0d9) adds
--build_tests_only so test filters apply to building as well. Bump the
cpp-coverage/rust-coverage refs to pick it up.

Verified locally on this branch's toolchain bump: without the fix the
coverage run aborts at 16/19 tests; with it, 19/19 tests pass.
@eclipse-score-bot

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

dcalavrezo-qorix added a commit to eclipse-score/toolchains_rust that referenced this pull request Jul 31, 2026
#35)

1.3.0 mixed artifacts from two different builds: the coverage-tools
tarball was freshly rebuilt (ubuntu20-prof tree) while the main
toolchain tarballs were carried over (ubuntu24-prof tree). The
dynamically linked Rust tools (symbol-report/blanket) require the exact
libstd of the build that produced them, so every consumer of the
default toolchains failed the blanket coverage flow with
'symbol lookup error: undefined symbol: ..._3std...Mutex4wake'
(seen on eclipse-score/lifecycle#369 and eclipse-score/baselibs#412).

1.3.1 rebuilds ALL artifacts from a single tree:
- symbol-report/blanket ABI-match the shipped libstd again (verified:
  both carry std build Csi8ZjCaVeSd1)
- miri-sysroots now include libprofiler_builtins, so coverage-
  instrumented compiles against the Miri sysroot no longer fail with
  E0463 (root fix; the --build_tests_only mitigation in cicd-workflows
  remains as defense in depth)
- QNX toolchains are built with the profiler runtime for the first time
- coverage-tools keep llvm-cov/llvm-profdata/llvm-cxxfilt (the 1.3.0
  feature enabling Rust coverage instrumentation)

Validated against lifecycle with a local override: rust tests green
under ferrocene-coverage, blanket report generated (94.25% line
coverage), llvm tools and miri profiler_builtins present.
v0.10.0 pins ferrocene_toolchain_builder 1.3.1, which rebuilds all
toolchain artifacts from a single build tree. This fixes the
rust-coverage failure on this PR: the 1.3.0 coverage-tools shipped a
symbol-report/blanket build that was ABI-incompatible with the main
toolchain's libstd (symbol lookup error, exit 127 in the blanket
report step).

Validated locally against registry v0.10.0: rust tests green under
ferrocene-coverage and the blanket report generates successfully
(94.25% line coverage).
@dcalavrezo-qorix dcalavrezo-qorix changed the title Update dependency score_toolchains_rust to v0.9.2 Update dependency score_toolchains_rust to v0.10.0 Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

4 participants