Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ build:host --define config=host
build:x86_64-linux --config=stub
build:x86_64-linux --config=toolchain_common
build:x86_64-linux --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix
build:x86_64-linux --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0-posix
build:x86_64-linux --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0
build:x86_64-linux --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu
build:x86_64-linux --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu_miri
build:x86_64-linux --define config=x86_64-linux
Expand All @@ -57,7 +57,7 @@ build:x86_64-linux --define config=x86_64-linux
build:arm64-linux --config=stub
build:arm64-linux --config=toolchain_common
build:arm64-linux --platforms=@score_bazel_platforms//:aarch64-linux-gcc_12.2.0-posix
build:arm64-linux --extra_toolchains=@score_gcc_aarch64_toolchain//:aarch64-linux-gcc_12.2.0-posix
build:arm64-linux --extra_toolchains=@score_gcc_aarch64_toolchain//:aarch64-linux-gcc_12.2.0
build:arm64-linux --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_linux_gnu
build:arm64-linux --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_linux_gnu_miri
build:arm64-linux --copt=-mno-outline-atomics
Expand All @@ -67,16 +67,26 @@ build:arm64-linux --linkopt=-latomic
build:x86_64-qnx --config=stub
build:x86_64-qnx --config=toolchain_common
build:x86_64-qnx --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix
build:x86_64-qnx --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0-posix
build:x86_64-qnx --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0
build:x86_64-qnx --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800
build:x86_64-qnx --extra_toolchains=@score_qnx_x86_64_ifs_toolchain//:ifs-x86_64-qnx-sdp_8.0.0
test:x86_64-qnx --run_under=@score_qnx_unit_tests//src:run_under_qnx
test:x86_64-qnx --test_tag_filters=-skip_local # see https://github.com/eclipse-score/lifecycle/issues/272
test:x86_64-qnx --test_lang_filters=cc,rust

# Target configuration for CPU:AArch64|OS:QNX build (do not use it in case of system toolchains!)
build:arm64-qnx --config=stub
build:arm64-qnx --config=toolchain_common
build:arm64-qnx --incompatible_strict_action_env
build:arm64-qnx --platforms=@score_bazel_platforms//:aarch64-qnx-sdp_8.0.0-posix
build:arm64-qnx --extra_toolchains=@score_qcc_aarch64_toolchain//:aarch64-qnx-sdp_8.0.0-posix
build:arm64-qnx --extra_toolchains=@score_qcc_aarch64_toolchain//:aarch64-qnx-sdp_8.0.0
build:arm64-qnx --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_nto_qnx800
build:arm64-qnx --extra_toolchains=@score_qnx_aarch64_ifs_toolchain//:ifs-aarch64-qnx-sdp_8.0.0
test:arm64-qnx --run_under=@score_qnx_unit_tests//src:run_under_qnx
test:arm64-qnx --test_tag_filters=-skip_local # see https://github.com/eclipse-score/lifecycle/issues/272
test:arm64-qnx --test_timeout=300
test:arm64-qnx --test_lang_filters=cc,rust


# Ferrocene Rust coverage config
build:ferrocene-coverage --@rules_rust//rust/settings:extra_rustc_flag=-Cinstrument-coverage
Expand Down
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8.4.2
8.6.0
37 changes: 33 additions & 4 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,29 @@
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {}
},

// Initialize bazel cache on host
"initializeCommand": "mkdir -p ${localEnv:HOME}/.cache/bazel",
// customize VS Code settings and extensions
"customizations": {
"vscode": {
"extensions": [
"anthropic.claude-code"
]
}
},

"containerEnv": {
"ANTHROPIC_FOUNDRY_API_KEY": "${localEnv:ANTHROPIC_FOUNDRY_API_KEY}",
"ANTHROPIC_FOUNDRY_RESOURCE": "${localEnv:ANTHROPIC_FOUNDRY_RESOURCE}",
"CLAUDE_CODE_USE_FOUNDRY": "${localEnv:CLAUDE_CODE_USE_FOUNDRY}",
"ANTHROPIC_DEFAULT_FABLE_MODEL": "${localEnv:ANTHROPIC_DEFAULT_FABLE_MODEL}",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "${localEnv:ANTHROPIC_DEFAULT_OPUS_MODEL}",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "${localEnv:ANTHROPIC_DEFAULT_SONNET_MODEL}",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "${localEnv:ANTHROPIC_DEFAULT_HAIKU_MODEL}"
},

"initializeCommand": {
"Initialize bazel cache on host": "mkdir -p ${localEnv:HOME}/.cache/bazel",
"Make sure QNX licenses exists": "touch -a ~/.qnx/license/licenses",
"Make sure .netrc exists": "touch -a ~/.netrc"},

// Mount ca-certificates from host
"mounts": [
Expand All @@ -25,13 +46,21 @@
"source": "${localEnv:HOME}/.qnx/license",
"target": "/opt/score_qnx/license",
"type": "bind"
},
{
"source": "${localEnv:HOME}/.netrc",
"target": "/home/vscode/.netrc",
"type": "bind"
}
],

// Add your personal customizations
"onCreateCommand": {
"update certificates & install dependencies": "sudo apt update && sudo apt install -y --no-install-recommends ca-certificates-java openjdk-17-jre-headless libacl1-dev tmux fakechroot && sudo update-ca-certificates",
"update certificates & install dependencies": "sudo apt update && sudo apt install -y --no-install-recommends ca-certificates-java openjdk-17-jre-headless libacl1-dev tmux fakechroot libvirt-daemon-system libvirt-clients bridge-utils virt-manager qemu-system-x86 qemu-system-arm && sudo update-ca-certificates",
"bazel use system trust store": "echo 'startup --host_jvm_args=-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts --host_jvm_args=-Djavax.net.ssl.trustStorePassword=changeit' | sudo tee --append /etc/bazel.bazelrc"
},

"runArgs": ["--network", "host"]

"runArgs": ["--device=/dev/kvm", "--network", "host"],
"postCreateCommand": "sudo chmod 666 /dev/kvm && sudo usermod -aG kvm $USER"
}
52 changes: 52 additions & 0 deletions .github/workflows/qnx8.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# *******************************************************************************
# Copyright (c) 2026 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************

name: QNX8 Build & Test
on:
pull_request_target:
types: [opened, reopened, synchronize]
push:
branches:
- main
merge_group:
types: [checks_requested]
workflow_call:
jobs:
qnx-build:
name: Build and Test ${{ matrix.bazel-config }}
strategy:
fail-fast: false
matrix:
include:
- bazel-config: x86_64-qnx
bazel-test-target: >-
//score/...
- bazel-config: arm64-qnx
bazel-test-target: >-
//score/...
extra-bazel-test-flags: "--test_timeout=120,600,1800,7200" # Increase test timeout due to QEMU emulation
uses: eclipse-score/cicd-workflows/.github/workflows/qnx-build.yml@af347722c7ae3ed85518895c11268d96ac728f62
permissions:
contents: read
pull-requests: read
with:
bazel-target: "//score/... //examples/..."
bazel-config: ${{ matrix.bazel-config }}
bazel-test-target: ${{ matrix.bazel-test-target }}
credential-helper: "scripts/internal/qnx_creds.py"
bazel-disk-cache: ${{ matrix.bazel-config }}
secrets:
score-qnx-license: ${{ secrets.SCORE_QNX_LICENSE }}
score-qnx-user: ${{ secrets.SCORE_QNX_USER }}
score-qnx-password: ${{ secrets.SCORE_QNX_PASSWORD }}

37 changes: 31 additions & 6 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ module(

# Bazel global rules
bazel_dep(name = "bazel_skylib", version = "1.9.0")
bazel_dep(name = "rules_pkg", version = "1.1.0")
bazel_dep(name = "rules_pkg", version = "1.2.0")
bazel_dep(name = "rules_python", version = "1.8.5")
bazel_dep(name = "rules_rust", version = "0.68.2-score")
bazel_dep(name = "rules_cc", version = "0.2.17")
bazel_dep(name = "rules_oci", version = "2.3.0")
bazel_dep(name = "aspect_rules_lint", version = "2.0.0")
bazel_dep(name = "buildifier_prebuilt", version = "8.2.0.2")
bazel_dep(name = "aspect_rules_lint", version = "2.3.0")
bazel_dep(name = "buildifier_prebuilt", version = "8.5.1")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "flatbuffers", version = "25.12.19")
bazel_dep(name = "download_utils", version = "1.2.2")
Expand All @@ -40,7 +40,7 @@ bazel_dep(name = "score_process", version = "1.5.4", dev_dependency = True)
bazel_dep(name = "score_platform", version = "0.5.5", dev_dependency = True)

## Configure the C++ toolchain
bazel_dep(name = "score_bazel_cpp_toolchains", version = "0.2.2", dev_dependency = True)
bazel_dep(name = "score_bazel_cpp_toolchains", version = "0.5.4", dev_dependency = True)

gcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True)
gcc.toolchain(
Expand All @@ -59,15 +59,15 @@ gcc.toolchain(
)
gcc.toolchain(
name = "score_qcc_x86_64_toolchain",
sdp_version = "8.0.0",
sdp_version = "8.0.4",
target_cpu = "x86_64",
target_os = "qnx",
use_default_package = True,
version = "12.2.0",
)
gcc.toolchain(
name = "score_qcc_aarch64_toolchain",
sdp_version = "8.0.0",
sdp_version = "8.0.4",
target_cpu = "aarch64",
target_os = "qnx",
use_default_package = True,
Expand All @@ -78,8 +78,33 @@ use_repo(
"score_gcc_aarch64_toolchain",
"score_gcc_x86_64_toolchain",
"score_qcc_aarch64_toolchain",
"score_qcc_aarch64_toolchain_pkg",
"score_qcc_x86_64_toolchain",
"score_qcc_x86_64_toolchain_pkg",
)

# UTs on QNX
bazel_dep(name = "score_qnx_unit_tests", version = "0.2.0", dev_dependency = True)
bazel_dep(name = "score_rules_imagefs", version = "0.0.3", dev_dependency = True)

imagefs = use_extension("@score_rules_imagefs//extensions:imagefs.bzl", "imagefs", dev_dependency = True)
imagefs.toolchain(
name = "score_qnx_x86_64_ifs_toolchain",
sdp_to_import = "@score_qcc_x86_64_toolchain_pkg",
sdp_version = "8.0.0",
Comment thread
paulquiring marked this conversation as resolved.
target_cpu = "x86_64",
target_os = "qnx",
type = "ifs",
)
imagefs.toolchain(
name = "score_qnx_aarch64_ifs_toolchain",
sdp_to_import = "@score_qcc_aarch64_toolchain_pkg",
sdp_version = "8.0.0",
target_cpu = "aarch64",
target_os = "qnx",
type = "ifs",
)
use_repo(imagefs, "score_qnx_aarch64_ifs_toolchain", "score_qnx_x86_64_ifs_toolchain")

## Rust Toolchain
bazel_dep(name = "score_toolchains_rust", version = "0.9.1", dev_dependency = True)
Expand Down
Loading
Loading