Skip to content

feat: add QNX process configuration, schema, docs for TimeSlave reference Integration - #158

Open
gordon9901 wants to merge 20 commits into
eclipse-score:mainfrom
gordon9901:ecarx_pr5_qnx_config_and_docs
Open

feat: add QNX process configuration, schema, docs for TimeSlave reference Integration#158
gordon9901 wants to merge 20 commits into
eclipse-score:mainfrom
gordon9901:ecarx_pr5_qnx_config_and_docs

Conversation

@gordon9901

@gordon9901 gordon9901 commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

This PR adds the configuration required to build and run the TimeSlave process on QNX:

  • Add QNX JSON configuration for TimeSlave (iface_name, PHC, QNX BPF shim settings)
  • Add a representative example configuration showing all supported fields
  • Add JSON Schema (Draft 2020-12) plus a Bazel validate_json_schema_test lint rule
  • Add Bazel build infrastructure: ITF framework, rules_pkg, rules_oci, score_rules_imagefs, json-schema-validator
  • Add QNX setup documentation covering prerequisites, build/run steps, and config usage
  • Add QEMU reference integration test verifying binary/config deployment, interface presence, and config loading under QNX

Closes #141

#test QNX

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.6.0) and connecting to it...
INFO: Invocation ID: ffdbbd05-0850-4380-9fac-206f598e9946
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
WARNING: For repository 'platforms', the root module requires module version platforms@1.0.0, but got platforms@1.1.0 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'rules_oci', the root module requires module version rules_oci@2.2.7, but got rules_oci@2.3.0 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Loading: 
Loading: 3 packages loaded
Analyzing: target //:license-check (4 packages loaded, 0 targets configured)
Analyzing: target //:license-check (4 packages loaded, 0 targets configured)

Analyzing: target //:license-check (47 packages loaded, 10 targets configured)

Analyzing: target //:license-check (91 packages loaded, 10 targets configured)

Analyzing: target //:license-check (144 packages loaded, 768 targets configured)

Analyzing: target //:license-check (159 packages loaded, 4906 targets configured)

Analyzing: target //:license-check (164 packages loaded, 6259 targets configured)

Analyzing: target //:license-check (169 packages loaded, 6308 targets configured)

Analyzing: target //:license-check (169 packages loaded, 6308 targets configured)

Analyzing: target //:license-check (169 packages loaded, 6308 targets configured)

Analyzing: target //:license-check (172 packages loaded, 8195 targets configured)

Analyzing: target //:license-check (175 packages loaded, 11421 targets configured)

Analyzing: target //:license-check (176 packages loaded, 11429 targets configured)

Analyzing: target //:license-check (176 packages loaded, 11429 targets configured)

Analyzing: target //:license-check (176 packages loaded, 11429 targets configured)

INFO: Analyzed target //:license-check (177 packages loaded, 11555 targets configured).
INFO: From Generating Dash formatted dependency file ...:
INFO: Successfully converted 2 packages from Cargo.lock to bazel-out/k8-fastbuild/bin/formatted.txt
[13 / 16] JavaToolchainCompileClasses external/rules_java+/toolchains/platformclasspath_classes; 0s disk-cache, processwrapper-sandbox
[14 / 16] JavaToolchainCompileBootClasspath external/rules_java+/toolchains/platformclasspath.jar; 0s disk-cache, processwrapper-sandbox
INFO: Found 1 target...
Target //:license.check.license_check up-to-date:
  bazel-bin/license.check.license_check
  bazel-bin/license.check.license_check.jar
INFO: Elapsed time: 34.099s, Critical Path: 2.57s
INFO: 16 processes: 12 internal, 3 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 16 total actions
INFO: Running command line: bazel-bin/license.check.license_check ./formatted.txt <args omitted>
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

The created documentation from the pull request is available at: docu-html

@gordon9901
gordon9901 force-pushed the ecarx_pr5_qnx_config_and_docs branch from 8a7b319 to d30c777 Compare August 7, 2026 04:46
@gordon9901 gordon9901 self-assigned this Aug 7, 2026
@gordon9901 gordon9901 changed the title Add QNX process configuration, schema, docs for TimeSlave reference Integration feat:add QNX process configuration, schema, docs for TimeSlave reference Integration Aug 7, 2026
@gordon9901 gordon9901 changed the title feat:add QNX process configuration, schema, docs for TimeSlave reference Integration feat: add QNX process configuration, schema, docs for TimeSlave reference Integration Aug 7, 2026
Comment thread score/time_slave/src/application/configuration/time_slave_config_schema.json Outdated
Comment thread score/time_slave/src/application/configuration/time_slave_config_schema.json Outdated
Comment thread score/time_slave/src/application/configuration/config_parser.cpp

@BjoernAtBosch BjoernAtBosch left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@gordon9901 gordon9901 closed this Aug 28, 2026
@gordon9901
gordon9901 force-pushed the ecarx_pr5_qnx_config_and_docs branch from 585f170 to 4a3a6c5 Compare August 28, 2026 05:53
@github-project-automation github-project-automation Bot moved this from In Progress to Done in TIM - Time FT Aug 28, 2026

@BjoernAtBosch BjoernAtBosch left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have some finding regarding docs structuring and some clarification points with the testing.

Comment thread score/time_slave/docs/manuals/index.rst Outdated
.. toctree::
:maxdepth: 1

qnx_setup

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please link qnx_setup from the user manual, e.g. from section "Runtime Requirements" or add a new section

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved qnx_setup into the user manual under a new "Platform-Specific Setup" section.

Comment thread score/time_slave/docs/index.rst Outdated
manuals/user_manual
detailed_design/index
requirements/index
manuals/index

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need for an index.rst if qnx_setup is linked from user_manual.rst

Suggested change
manuals/index

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed manuals/index.rst and its toctree entry now that qnx_setup is linked directly from the user manual.


Configuration
*************

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we move section "Configuration" out to the configuration_guide.rst, please?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved the Configuration section (file lookup, QNX fields, PHC config, example) to configuration_guide.rst. qnx_setup.rst now links to it via :ref:.


// Resolve config path: --config CLI > TIMESLAVE_CONFIG env > ./etc/time_slave_config.json
fs::path config_path;
const std::string cli_config = context.get_argument("--config");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you shortly describe this parameter in the section "Command-line Arguments" in the configuration_guide.rst, please. There is already some which needs replacement

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Documented --config in the "Command-Line Arguments" section of configuration_guide.rst, replacing the placeholder.

Comment on lines +297 to +336
[uid=0 gid=0 perms=0400] /var/ssh/ssh_host_rsa_key = {
-----BEGIN OPENSSH PRIVATE KEY-----
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
Fu+/MLbJQuA1zpAAAAAAEC
-----END OPENSSH PRIVATE KEY-----
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this key something very specific for a certain testing env?
If yes, could we pass such things in as runtime test config?
(If easy to be achieved - else we can do this in a later improvement step)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the baked-in key; init.build now generates a fresh RSA host key on the RAM disk via ssh-keygen before starting sshd.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for being confused. Shouldn't this be also moved to tools/lint/?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it under third_party/. It's the BUILD overlay for the http_archive-downloaded third-party C++ library, which by Bazel convention lives alongside vendored deps. The .bzl in tools/lint/ is our custom lint rule that uses the library — different layers, intentionally separated.

@BjoernAtBosch BjoernAtBosch left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Improvement: Add QNX process configuration, schema, documentation for TimeSlave reference Integration

3 participants