Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d497d80
Revert "fix: Use libstdc++ instead of libc++ for LLVM toolchain"
LittleHuba Feb 18, 2026
545b618
Update S-CORE dependencies
LittleHuba Feb 5, 2026
dd61ca7
Add appropriate development dependency flags
LittleHuba Feb 23, 2026
e922def
Update non-S-CORE dependencies
LittleHuba Feb 23, 2026
8501935
Drop manual selection of host platform for QNX configs
LittleHuba Feb 16, 2026
ed2dca1
Clean permissions of workflows and enable coverage reporting for PRs
LittleHuba Feb 3, 2026
745b283
Simplify build_and_test_host to support more scenarios
LittleHuba Feb 16, 2026
1f1d966
Alphabetically order packages in ubuntu image manifest
LittleHuba Feb 17, 2026
966c5cd
Add libstdc++6 to packages in Ubuntu image manifest
LittleHuba Feb 17, 2026
3f3fbcd
Add additional exclusions in QNX build
LittleHuba Feb 17, 2026
e305f2e
Use canonical reproducable way of fetching codeql_coding_standards
LittleHuba Feb 20, 2026
6398da3
Enable sanitizer backtraces in integration tests
LittleHuba Feb 18, 2026
8803df3
Introduce support for suppressions in sanitizers
LittleHuba Feb 18, 2026
0594661
Provide better information to bazel about integration_test size
LittleHuba Feb 20, 2026
91a6479
Do not duplicate logs in integration tests
LittleHuba Feb 20, 2026
3bd2d18
Suppress findings of thread sanitizer
LittleHuba Feb 20, 2026
69bf111
Fix ABI test for LLVM
LittleHuba Feb 3, 2026
9f7bf94
Fix flakiness of integration tests (1/2)
LittleHuba Feb 17, 2026
4323e97
Fix flakiness of integration tests (2/2)
LittleHuba Feb 17, 2026
19268e3
Fix lock inversion
LittleHuba Feb 19, 2026
288db03
Fix data race in transaction log set
LittleHuba Feb 20, 2026
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
17 changes: 10 additions & 7 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,31 @@ common --@score_logging//score/mw/log/flags:KRemote_Logging=False
common --@score_baselibs//score/json:base_library=nlohmann
common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False
common --//score/mw/com/flags:tracing_library=@score_baselibs//score/analysis/tracing/generic_trace_library/stub_implementation
common --extra_toolchains=@gcc_toolchain//:host_gcc_12
common --extra_toolchains=@gcc_toolchain_x86_64//:cc_toolchain
common --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu
build --incompatible_strict_action_env
test --test_output=errors
build --experimental_retain_test_configuration_across_testonly #https://github.com/bazelbuild/bazel/issues/6842

common:linux_x86_64_score_gcc_12_2_0_posix --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix
common:linux_x86_64_score_gcc_12_2_0_posix --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux

# In order to build for QNX, you need:
# * An account on qnx.com
# * An assigned QNX 8 license to your account
# * If you are applicable for "Free for non commercial use" see here: https://www.qnx.com/products/everywhere/
# * The credentials for this account stored in your ~/.netrc (machine qnx.com)
# * A license stored under `/opt/score_qnx/license/licenses`
common:qnx_x86_64 --host_platform=@score_bazel_platforms//:x86_64-linux
common:qnx_x86_64 --platforms=@score_bazel_platforms//:x86_64-qnx8_0
common:qnx_x86_64 --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix
common:qnx_x86_64 --extra_toolchains=@toolchains_qnx_ifs//:ifs_x86_64
common:qnx_x86_64 --extra_toolchains=@toolchains_qnx_qcc//:qcc_x86_64
common:qnx_x86_64 --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0
common:qnx_x86_64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800
common:qnx_x86_64 --credential_helper=*.qnx.com=%workspace%/third_party/qnx_credential_helper.py
common:qnx_x86_64 --sandbox_writable_path=/var/tmp

common:qnx_arm64 --host_platform=@score_bazel_platforms//:x86_64-linux
common:qnx_arm64 --platforms=@score_bazel_platforms//:arm64-qnx8_0
common:qnx_arm64 --platforms=@score_bazel_platforms//:aarch64-qnx-sdp_8.0.0-posix
common:qnx_arm64 --extra_toolchains=@toolchains_qnx_ifs//:ifs_aarch64
common:qnx_arm64 --extra_toolchains=@toolchains_qnx_qcc//:qcc_aarch64
common:qnx_arm64 --extra_toolchains=@score_qcc_aarch64_toolchain//:aarch64-qnx-sdp_8.0.0
common:qnx_arm64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_nto_qnx800
common:qnx_arm64 --credential_helper=*.qnx.com=%workspace%/third_party/qnx_credential_helper.py
common:qnx_arm64 --sandbox_writable_path=/var/tmp
Expand All @@ -62,6 +63,7 @@ coverage --experimental_use_llvm_covmap
coverage --combined_report=lcov
coverage --coverage_report_generator=@bazel_tools//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:Main
coverage --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux
coverage --extra_toolchains=@ferrocene_x86_64_unknown_linux_gnu_llvm//:rust_ferrocene_toolchain
coverage --test_env=COVERAGE_GCOV_OPTIONS=-bcu
# TODO set toolchain feature once possible
# These compile time options are required to cover abnormal termination cases. In GCC one can use `__gcc_dump()`, but this does not work with LLVM
Expand All @@ -76,6 +78,7 @@ test:clang-tidy --aspects=//:tools/lint/linters.bzl%clang_tidy_aspect
test:clang-tidy --output_groups=+rules_lint_report
# Use LLVM toolchain for clang-tidy so it can find system headers
test:clang-tidy --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux
test:clang-tidy --extra_toolchains=@ferrocene_x86_64_unknown_linux_gnu_llvm//:rust_ferrocene_toolchain

import quality/sanitizer/sanitizer.bazelrc

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ on:
jobs:
build_and_test_asan_ubsan_lsan:
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.2
Expand Down
84 changes: 42 additions & 42 deletions .github/workflows/automated_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ jobs:
echo "Release version tag: $RELEASE_VERSION"
echo "release-tag=$RELEASE_VERSION" >> $GITHUB_OUTPUT

- name: Delete trigger tag
run: |
gh api repos/${{ github.repository }}/git/refs/tags/${{ github.ref_name }} -X DELETE
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Create draft release
id: create-release
uses: softprops/action-gh-release@v2
Expand All @@ -65,7 +71,6 @@ jobs:
uses: ./.github/workflows/build_and_test_qnx.yml
permissions:
contents: read
pull-requests: read
secrets:
SCORE_QNX_LICENSE: ${{ secrets.SCORE_QNX_LICENSE }}
SCORE_QNX_USER: ${{ secrets.SCORE_QNX_USER }}
Expand All @@ -81,11 +86,27 @@ jobs:

run-coverage-report:
needs: create-draft-release
uses: ./.github/workflows/release_coverage_report.yml
with:
release_tag: ${{ needs.create-draft-release.outputs.release-tag }}
uses: ./.github/workflows/coverage_report.yml

upload-coverage-report:
needs:
- create-draft-release
- run-coverage-report
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- name: Download coverage report artifact
uses: actions/download-artifact@v4
with:
name: ${{ needs.run-coverage-report.outputs.artifact-name }}
path: ./

- name: Upload coverage report to existing draft release
run: |
gh release upload "${{ needs.create-draft-release.outputs.release-tag }}" "${{ needs.run-coverage-report.outputs.artifact-name }}.zip"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

finalize-release:
runs-on: ubuntu-24.04
Expand All @@ -96,46 +117,30 @@ jobs:
- run-thread-sanitizer
- run-address-sanitizer
- run-coverage-report
if: always()
- upload-coverage-report
if: ${{ success() }}
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.2

- name: Check workflow results
id: check-results
- name: Report success
if: steps.check-results.outputs.all-success == 'true'
run: |
RESULT_HOST="${{ needs.run-build-and-test-host.result }}"
RESULT_QNX="${{ needs.run-build-and-test-qnx.result }}"
RESULT_TSAN="${{ needs.run-thread-sanitizer.result }}"
RESULT_ASAN="${{ needs.run-address-sanitizer.result }}"
RESULT_COVERAGE="${{ needs.run-coverage-report.result }}"

echo "Build and test host: $RESULT_HOST"
echo "Build and test QNX: $RESULT_QNX"
echo "Thread sanitizer: $RESULT_TSAN"
echo "Address sanitizer: $RESULT_ASAN"
echo "Coverage report: $RESULT_COVERAGE"

if [[ "$RESULT_HOST" == "success" ]] && \
[[ "$RESULT_QNX" == "success" ]] && \
[[ "$RESULT_TSAN" == "success" ]] && \
[[ "$RESULT_ASAN" == "success" ]] && \
[[ "$RESULT_COVERAGE" == "success" ]]; then
echo "all-success=true" >> $GITHUB_OUTPUT
else
echo "all-success=false" >> $GITHUB_OUTPUT
fi
echo "All workflows succeeded. Draft release ${{ needs.create-draft-release.outputs.release-tag }} is ready for manual publishing."

- name: Delete trigger tag
run: |
gh api repos/${{ github.repository }}/git/refs/tags/${{ github.ref_name }} -X DELETE
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
delete-release-on-failure:
runs-on: ubuntu-24.04
needs: create-draft-release
if: ${{ failure() || cancelled() }}
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.2

- name: Delete draft release (on failure)
if: steps.check-results.outputs.all-success == 'false'
- name: Delete draft release due to failure
run: |
gh release delete ${{ needs.create-draft-release.outputs.release-tag }} --yes
env:
Expand All @@ -144,10 +149,5 @@ jobs:
- name: Report failure
if: steps.check-results.outputs.all-success == 'false'
run: |
echo "❌ One or more workflows failed. Draft release has been deleted."
exit 1

- name: Report success
if: steps.check-results.outputs.all-success == 'true'
run: |
echo "✅ All workflows succeeded. Draft release ${{ needs.create-draft-release.outputs.release-tag }} is ready for manual publishing."
echo "One or more workflows failed. Draft release has been deleted."
exit 1
13 changes: 9 additions & 4 deletions .github/workflows/build_and_test_host.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,17 @@ on:
types: [checks_requested]
workflow_call:
jobs:
build_and_test_host:
build_and_test:
strategy:
fail-fast: false
matrix:
toolchain: ["@llvm_toolchain//:cc-toolchain-x86_64-linux", "@gcc_toolchain//:host_gcc_12"]
param:
- "" # The default configuration
- "--extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux"
- "--config=linux_x86_64_score_gcc_12_2_0_posix"
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.2
Expand All @@ -42,7 +47,7 @@ jobs:
uses: ./actions/unblock_user_namespace_for_linux_sandbox
- name: Bazel build communication targets
run: |
bazel build --extra_toolchains=${{ matrix.toolchain }} //...
bazel build ${{ matrix.param }} //...
- name: Bazel test communication targets
run: |
bazel test --extra_toolchains=${{ matrix.toolchain }} //... --build_tests_only
bazel test ${{ matrix.param }} //... --build_tests_only
5 changes: 4 additions & 1 deletion .github/workflows/build_and_test_qnx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,17 @@ jobs:
incompatible_targets:
- "-//score/mw/com/requirements/..." # Uninvestigated problem
- "-//score/mw/com/performance_benchmarks/..." # Uninvestigated problem
- "-//score/mw/com/doc/..." # Uninvestigated problem
- "-//score/mw/com/design/..." # Uninvestigated problem
- bazel-config: "qnx_arm64"
incompatible_targets:
- "-//score/mw/com/requirements/..." # Uninvestigated problem
- "-//score/mw/com/performance_benchmarks/..." # Uninvestigated problem
- "-//score/mw/com/doc/..." # Uninvestigated problem
- "-//score/mw/com/design/..." # Uninvestigated problem
runs-on: ubuntu-24.04
permissions:
contents: read
pull-requests: read
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,21 @@
name: Coverage Report

on:
pull_request:
types: [ opened, reopened, synchronize ]
workflow_call:
inputs:
release_tag:
description: 'Release tag to upload artifacts to'
required: true
type: string
outputs:
artifact-name:
description: 'Name of the coverage report artifact'
value: ${{ jobs.coverage-report.outputs.artifact-name }}

jobs:
coverage-report:
runs-on: ubuntu-24.04
permissions:
contents: write # required to upload release assets
outputs:
artifact-name: ${{ steps.set-artifact-name.outputs.artifact-name }}

steps:
- name: Checkout Repository
Expand Down Expand Up @@ -66,18 +69,18 @@ jobs:
mkdir -p artifacts
find bazel-testlogs/score/ -name 'test.xml' -print0 | xargs -0 -I{} cp --parents {} artifacts/
cp -r cpp_coverage artifacts/
zip -r ${{ github.event.repository.name }}_coverage_report.zip artifacts/
zip -r ${{ github.event.repository.name }}_coverage_report_${{ github.sha }}.zip artifacts/
shell: bash

- name: Set artifact name
id: set-artifact-name
run: |
echo "artifact-name=${{ github.event.repository.name }}_coverage_report_${{ github.sha }}" >> $GITHUB_OUTPUT

- name: Upload coverage artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}_coverage_report.zip
path: ${{ github.event.repository.name }}_coverage_report.zip
name: ${{ steps.set-artifact-name.outputs.artifact-name }}
path: ${{ github.event.repository.name }}_coverage_report_${{ github.sha }}.zip


- name: Upload coverage report to existing draft release
run: |
# Upload the file to the existing release
gh release upload "${{ inputs.release_tag }}" "${{ github.event.repository.name }}_coverage_report.zip"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 2 additions & 0 deletions .github/workflows/thread_sanitizer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ on:
jobs:
build_and_test_tsan:
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.2
Expand Down
Loading
Loading