Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
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
1 change: 1 addition & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ common --action_env=ANDROID_HOME=""

common --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux-gcc_12.2.0
common --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu
common --extra_toolchains=//bazel/toolchains:baselibs_libclang_toolchain
common --host_platform=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix
common --//score/json:base_library=nlohmann

Expand Down
54 changes: 54 additions & 0 deletions BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ load("@hedron_compile_commands//:refresh_compile_commands.bzl", "refresh_compile
load("@score_bazel_tools_cc//quality:defs.bzl", "quality_clang_tidy_config")
load("@score_docs_as_code//:docs.bzl", "docs")
load("@score_tooling//:defs.bzl", "copyright_checker", "dash_license_checker")
load("@score_tooling//bazel/rules/rules_score:rules_score.bzl", "dependable_element")
load("@score_tooling//third_party/format:macros.bzl", "use_format_targets")
load("//:project_config.bzl", "PROJECT_CONFIG")
load(":qemu.bzl", "qemu_aarch64")
Expand Down Expand Up @@ -95,6 +96,12 @@ docs(
"@score_process_description//:needs_json_file",
],
source_dir = "docs",
# Take test links from the *.lobster activity pools emitted by lobster-gtest
# instead of scanning bazel-testlogs/**/test.xml. The pools are produced by
# every build of the dependable_element()/component() targets, so the
# testcase needs no longer depend on the cc_tests having been named
# explicitly in a `bazel test` invocation.
testlink_source = "lobster",
)

# Generate `compile_commands.json`.
Expand Down Expand Up @@ -224,3 +231,50 @@ quality_clang_tidy_config(
unsupported_flags = [],
visibility = ["//visibility:public"],
)

# Complete SEooC for baselibs, assembling requirements, AoUs, architecture
# and the implementing component(s) into a single certifiable dependable
# element. This is baselibs' single, repo-wide dependable element (not
# scoped per component), so it lives here in the root BUILD rather than in
# an individual component's own BUILD file; its own artifact targets
# (requirements, AoUs, architecture diagram, FMEA) still live in
# //score/bitmanipulation, hence the fully-qualified labels below instead of
# same-package ":name" references.
#
# requirements points at feat_req_baselibs, not comp_req_bitmanipulation:
# dependable_element.requirements only accepts targets providing
# FeatureRequirementsInfo/AssumedSystemRequirementsInfo. comp_req_bitmanipulation
# (ComponentRequirementsInfo) is already pulled in transitively via
# `components` -> component_bitmanipulation's own `requirements` attribute.
# feat_req_baselibs converts all 14 baselibs feature requirements; as long as
# component_bitmanipulation is the only component wired in below, this
# report's "Feature Requirements" coverage stays well below 100% (only
# bitmanipulation's own feat_req is ever referenced by a Component
# Requirement) - a reporting-precision concern only, not a build/test
# failure under maturity=development. Adding more baselibs components here
# over time is expected to raise that coverage.
#
# dependability_analysis wraps fmea_bitmanipulation, a TRLC re-expression of
# the failure modes/control measures already analysed as prose in
# score/bitmanipulation/docs/safety_analysis/fmea.rst. tests is empty for
# now: there are no system-level integration tests beyond the unit tests
# already wired via unit().
dependable_element(
name = "dependable_element_baselibs",
assumptions_of_use = ["//score/bitmanipulation:aous_bitmanipulation"],
requirements = ["@score_platform//docs/features/baselibs/requirements:feat_req_baselibs"],
architectural_design = ["//score/bitmanipulation:arch_design_bitmanipulation"],
dependability_analysis = ["//score/bitmanipulation:dependability_analysis_bitmanipulation"],
components = ["//score/bitmanipulation:component_bitmanipulation"],
tests = [],
integrity_level = "B",
# This SEooC is still in development: component_bitmanipulation has no
# test_case_coverage_lock yet, so the "Test Case Coverage" lobster level
# has no data. maturity="release" (the default) force-emits that level
# empty and fails the build on every Component Requirement missing a
# coverage-lock-backed reference. maturity="development" omits empty
# checking levels instead, downgrading such gaps to warnings until the
# lock file is introduced.
maturity = "development",
visibility = ["//visibility:public"],
)
43 changes: 42 additions & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,45 @@ bazel_dep(name = "score_process_description", version = "2.1.2")

bazel_dep(name = "score_tooling", version = "2.2.1", dev_dependency = True)

# Playground experiment: point score_tooling at the poc/rst-package-param
# branch (pushed), which has newer rules_score features (package=
# overrides, req_kind directive filtering, [version==N] qualifier
# stripping in derived_from/satisfies) not yet present in the registry's
# score_tooling 2.2.1 release.
git_override(
module_name = "score_tooling",
commit = "a429b1cbfdefe8a2b6d54284640eaeefab0b27b5",
remote = "https://github.com/eclipse-score/tooling.git",
)

# Playground experiment: point score_docs_as_code at the pushed
# playground/bitmanipulation-seooc-lobster-report branch, which carries the
# score_lobster_report Sphinx extension (renders a pre-built Lobster
# traceability JSON report as a table on a docs page) plus the lobster_parser
# test-link producer selected via docs(testlink_source = "lobster").
# Both mirror how score_source_code_linker reads build artifacts off disk at
# Sphinx build time instead of depending on the (testonly) test targets through
# the Bazel graph.
git_override(
module_name = "score_docs_as_code",
commit = "03972ae89132e8ba77623cc7d788308d2def0ec3",
remote = "https://github.com/eclipse-score/docs-as-code.git",
)

bazel_dep(name = "score_platform", version = "0.7.1")

# Playground experiment: point score_platform at the
# playground/bitmanipulation-seooc branch of the score checkout instead of
# the registry version, so we can reference its docs/features RST sources
# (e.g. the baselibs feature requirements) directly. This commit reverts
# the earlier bitmanipulation.rst extraction (merged back into index.rst;
# feat_req_bitmanipulation removed, only feat_req_baselibs remains).
git_override(
module_name = "score_platform",
commit = "10d492b0fb7747734220ea213d67e2e1b9a31dc5",
remote = "https://github.com/eclipse-score/score.git",
)

## Configure the python toolchain

bazel_dep(name = "rules_python", version = "1.8.5")
Expand Down Expand Up @@ -136,7 +173,11 @@ llvm.toolchain(
llvm_version = "22.1.7",
stdlib = {"linux-x86_64": "stdc++"},
)
use_repo(llvm, "llvm_toolchain")

# "llvm_toolchain_llvm" exposes the raw LLVM distribution (libclang.so, C++
# include dirs), needed to register our own libclang_toolchain for
# score_tooling's unit()/component() cpp_parser (see //bazel/toolchains).
use_repo(llvm, "llvm_toolchain", "llvm_toolchain_llvm")

deb = use_repo_rule("@download_utils//download/deb:defs.bzl", "download_deb")

Expand Down
Loading
Loading