This workspace integrates multiple Eclipse Score modules (baselibs, communication, persistency, orchestrator, etc.) to validate cross-repository builds and detect integration issues early in the development cycle.
The reference integration workspace serves as a single Bazel build environment to:
- Validate cross-module dependency graphs
- Detect label and repository boundary issues
- Test toolchain and platform support (Linux, QNX, LLVM/GCC)
- Prepare for release validation workflows
Simply run ./score_starter and select which integration You want to run. Once running, You will be guided by our welcome cli to run selected examples.
Intention for each folder is described below
Used to keep a common bazel functionalities for images like:
- toolchain setups
- common tooling deps
- common S-CORE modules deps
- common
.bzlextensions needed to streamline images
Used to keep S-CORE wide showcases implementation to showcase S-CORE in certain deployments (images). Contains:
- proxy target bundling all
standaloneexamples from allS-CORErepos to deploy then as single bazel target into image - implementation of certain showcases that shall be deployed into images
Contains a CLI tool to be used on runner that is showcasing the S-CORE functionality. It will provide superior user experience and will guide user to run examples. How to use it in Your image, look [here] (./showcases/cli/README.md)
Used to keep concrete images for given target platform as bazel modules. Each platform shall have it's own folder with name {platform}_{arch} ie. qnx_aarch64.
This images shall:
- deploy all
showcasesinto image so they can be run inside - other specific code for given
image
Used to keep thin logic ro reuse runners between images, like docker runner etc.
To generate a full documentation of all integrated modules, run:
bazel run //:docs_combo_experimentalNote
Please refer to the README documents in the respective sub-directories for details about the specific integration.
You can obtain a complete S-CORE workspace, i.e. a git checkout of all modules from known_good.json, on the specific branches / commits, integrated into one Bazel build.
This helps with cross-module development, debugging, and generally "trying out things".
Note
The startup of the S-CORE devcontainer integrated in this repository already installs supported workspace managers and generates the required metadata.
You can do this manually as well, of course (e.g. if you do not use the devcontainer).
Take a look at .devcontainer/prepare_workspace.sh, which contains the setup script.
-
Switch to local path overrides, using the VSCode Task (
Terminal->Run Task...) "Switch Bazel modules tolocal_path_overrides". Note that you can switch back togit_overrides(the default) using the task "Switch Bazel modules togit_overrides"Command line:
python3 scripts/known_good/update_module_from_known_good.py --override-type local_path
-
Update workspace metadata from known good, using the VSCode Task "Update workspace metadata from known good". This will generate the
.gita-workspace.csvfile based onknown_good.json.Command line:
python3 scripts/known_good/known_good_to_workspace_metadata.py
-
Run VSCode Task "<Name>: Generate workspace", e.g. "Gita: Generate workspace". This will clone all modules using the chosen workspace manager. The modules will be in sub-directories starting with
score_. Note that the usage of different workspace managers is mutually exclusive.Command line:
gita clone --preserve-path --from-file .gita-workspace.csv
When you now run Bazel, it will use the local working copies of all modules and not download them from git remotes. You can make local changes to each module, which will be directly reflected in the next Bazel run.
Module: score/mw/com/requirements
Issues when building from external repository:
- Label inconsistency: Some
BUILDfiles use@//third_partyinstead of//third_party(repository-qualified vs. local label). Should standardize on local labels within the module. - Outdated path reference:
runtime_test.cpp:get_pathchecks forsafe_posix_platform(likely obsolete module name) instead ofexternal/score_communication+/.
Running coverage has to be executed on Ubuntu 22.04, newer versions are not supported and might have issues.
Install the following system packages:
sudo apt-get update
sudo apt-get install -y protobuf-compiler libclang-dev lcovThe starpls.bzl file (source) uses curl directly for downloading dependencies, which:
- Bypasses Bazel's managed fetch lifecycle and dependency tracking
- Breaks reproducibility and remote caching expectations
- May fail in corporate proxy-restricted environments
Use a local_path_override and configure proxy environment variables before building:
export http_proxy=http://127.0.0.1:3128
export https_proxy=http://127.0.0.1:3128
export HTTP_PROXY=http://127.0.0.1:3128
export HTTPS_PROXY=http://127.0.0.1:3128Add this to your MODULE.bazel:
local_path_override(module_name = "score_tooling", path = "../tooling")Use scripts/generate_rust_analyzer_support.sh to generate rust_analyzer settings that will let VS Code work.