How to Build with Bazel¶
Configure registries¶
Every S-CORE module repository configures two Bazel registries in .bazelrc:
common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/
common --registry=https://bcr.bazel.build
The first line resolves S-CORE internal modules. The second line falls back to the public Bazel Central Registry for everything else.
Add a dependency¶
Declare dependencies in MODULE.bazel:
bazel_dep(name = "my_dependency", version = "1.2.3")
Use the Registry UI to discover available modules and their versions.
Find available modules¶
The Registry UI lists all modules published to the S-CORE registry. Each registry entry corresponds to a GitHub Release in the module's repository.
Configure toolchains¶
Build-side toolchains and policy modules are separate concerns:
| Repository | Role |
|---|---|
| bazel_cpp_toolchains | How to compile C++ (Linux, QNX) |
| toolchains_rust | How to compile Rust (incl. Ferrocene) |
| score_cpp_policies | Which rules to enforce for C++ |
| score_rust_policies | Which rules to enforce for Rust |
Toolchains define compilers and linkers. Policies define warning baselines, lint rules, and sanitizer selections. They evolve independently.
Refresh lock files¶
MODULE.bazel.lock and uv.lock should be committed. When dependency declarations change, refresh lock files:
pre-commit run --all-files
Start a new module¶
Use module_template as a starting point. It provides the standard directory layout, .bazelrc, devcontainer configuration, and CI workflows. See Tutorial: Creating a New Module for a step-by-step walkthrough.