Skip to content

build: add bazel configs for QNX 8 - #10

Draft
stmuench wants to merge 3 commits into
eclipse-score:mainfrom
stmuench:add_bazel_configs_for_qnx8
Draft

build: add bazel configs for QNX 8#10
stmuench wants to merge 3 commits into
eclipse-score:mainfrom
stmuench:add_bazel_configs_for_qnx8

Conversation

@stmuench

@stmuench stmuench commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Add QNX SDP 8.0.0 toolchain registrations for aarch64 and x86_64, the imagefs toolchains needed to create QNX IFS images, and a public score_diag_aarch64_qnx config that combines the common build settings with the QNX target platform and toolchains.

The QNX SDP artifacts are license-gated on qnx.com, so Bazel must authenticate repository downloads before it can fetch the toolchain packages. The score_diag_aarch64_qnx config includes a config named _score_diag_qnx_credential_helper which registers a python tool as Bazel's credential helper only for *.qnx.com requests. During a QNX download, Bazel invokes the helper with the requested URI on stdin. The helper rejects non-QNX domains, attempts to resolve credentials from env variables SCORE_QNX_USER and SCORE_QNX_PASSWORD first and otherwise falls back to the machine qnx.com entry in ~/.netrc.

To use the config, users need an assigned QNX 8 license on their qnx.com account, credentials provided either through SCORE_QNX_USER/SCORE_QNX_PASSWORD or via ~/.netrc and a local QNX license under /opt/score_qnx/license/licenses prior to being able to build with --config=score_diag_aarch64_qnx.

Depends-On: #9

stmuench added 2 commits July 8, 2026 14:16
Since the //src directory will not be used in this repository
in favor of the //score directory.
Rework the Bazel setup to use the eclipse-score toolchains and platforms
instead of the generic cpp/rust template config:

- MODULE.bazel:
  - rename module to "score_diagnostics"
  - add score_bazel_platforms and score_bazel_cpp_toolchains (GCC 12.2.0)
  - replace toolchains_llvm host toolchain with the score GCC toolchain
  - switch rules_rust to 0.68.1-score and add score_toolchains_rust
    (Ferrocene) plus score_crates / crate_universe (score_crate_index)
  - align score_tooling (1.1.2) and aspect_rules_lint (2.3.0) versions
  - drop the obsolete grpc-java single_version_override
- .bazelrc:
  - replace the bl-x86_64-linux config with score_diag_x86_64_linux,
    composed of common build settings, GCC host platform and the
    x86_64-linux target platform + Ferrocene/GCC toolchains
  - add strict-warnings/warnings-as-errors features and strict action env
- .github/workflows/build_linux.yml: use the new score_diag_x86_64_linux
  config for build and test
- regenerate MODULE.bazel.lock for the new dependency graph

The stale lockfile referenced the previously selected transitive versions
(rules_pkg 1.2.0, tar.bzl 0.7.0). After the dependency rewrite MVS selects
lower versions (rules_pkg 1.1.0, tar.bzl 0.5.1) whose registry entries were
missing. Refreshing the lockfile facilitates the bazel command
`bazel build --config=score_diag_x86_64_linux -- //examples/... //tests/...`
to now work again.
@github-actions

github-actions Bot commented Jul 8, 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: 39cc343e-f1af-4f59-aa68-c89a7fd670fd
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
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: 
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)

Analyzing: target //:license-check (15 packages loaded, 14 targets configured)

Analyzing: target //:license-check (81 packages loaded, 14 targets configured)

Analyzing: target //:license-check (122 packages loaded, 266 targets configured)

Analyzing: target //:license-check (151 packages loaded, 2698 targets configured)

Analyzing: target //:license-check (156 packages loaded, 3452 targets configured)

Analyzing: target //:license-check (156 packages loaded, 3452 targets configured)

Analyzing: target //:license-check (156 packages loaded, 3452 targets configured)

Analyzing: target //:license-check (161 packages loaded, 5340 targets configured)

Analyzing: target //:license-check (162 packages loaded, 9436 targets configured)

Analyzing: target //:license-check (162 packages loaded, 9436 targets configured)

Analyzing: target //:license-check (163 packages loaded, 9560 targets configured)

Analyzing: target //:license-check (163 packages loaded, 9560 targets configured)

INFO: Analyzed target //:license-check (164 packages loaded, 9686 targets configured).
[13 / 16] Generating Dash formatted dependency file ...; 0s disk-cache, processwrapper-sandbox ... (2 actions, 1 running)
INFO: From Generating Dash formatted dependency file ...:
INFO: Successfully converted 2 packages from Cargo.lock to bazel-out/k8-fastbuild/bin/formatted.txt
[15 / 16] Building license.check.license_check.jar (); 0s disk-cache, multiplex-worker
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: 32.190s, Critical Path: 2.22s
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

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

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

Add QNX SDP 8.0.0 toolchain registrations for aarch64 and x86_64,
the imagefs toolchains needed to create QNX IFS images, and a public
`score_diag_aarch64_qnx` config that combines the common build settings
with the QNX target platform and toolchains.

The QNX SDP artifacts are license-gated on qnx.com, so Bazel must
authenticate repository downloads before it can fetch the toolchain
packages. The `score_diag_aarch64_qnx` config includes a config named
`_score_diag_qnx_credential_helper` which registers a python tool as
Bazel's credential helper only for *.qnx.com requests. During a QNX
download, Bazel invokes the helper with the requested URI on stdin.
The helper rejects non-QNX domains, attempts to resolve credentials
from env variables `SCORE_QNX_USER` and `SCORE_QNX_PASSWORD` first
and otherwise falls back to the machine qnx.com entry in ~/.netrc.

To use the config, users need an assigned QNX 8 license on their
qnx.com account, credentials provided either through
`SCORE_QNX_USER`/`SCORE_QNX_PASSWORD` or via ~/.netrc
and a local QNX license under /opt/score_qnx/license/licenses
prior to being able to build with `--config=score_diag_aarch64_qnx`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants