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 |
|---|---|
How to compile C++ (Linux, QNX) |
|
How to compile Rust (incl. Ferrocene) |
|
Which rules to enforce for C++ |
|
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.