From 8a146eab60ab87cc42cc676399f1c72a923d7c09 Mon Sep 17 00:00:00 2001 From: Ryan Steel Date: Mon, 6 Jul 2026 15:54:26 +0000 Subject: [PATCH 1/7] feature: initial devcontainer setup with qnx support --- .devcontainer/Dockerfile | 17 +++++++++++++++++ .devcontainer/devcontainer.json | 29 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..c786502 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,17 @@ +# Use Dockerfile to get Dependabot version bumps after new image is released +FROM ghcr.io/eclipse-score/devcontainer:v1.8.0 + +ARG USERNAME=vscode + +# Rename 'vscode' to the host username for QNX-related user expectations. +# In environments using a license server, the QNX license might be bound to a username. +RUN if [ "$USERNAME" != "vscode" ]; then \ + usermod -l ${USERNAME} vscode \ + && groupmod -n ${USERNAME} vscode \ + && usermod -d /home/${USERNAME} -m ${USERNAME} \ + && ln -s /home/${USERNAME} /home/vscode \ + && echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${USERNAME} \ + && chmod 0440 /etc/sudoers.d/${USERNAME}; \ + fi + +USER ${USERNAME} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..ea00b61 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,29 @@ +{ + "name": "eclipse-s-core", + "build": { + "dockerfile": "Dockerfile", + "args": { + "USERNAME": "${localEnv:USER}" + } + }, + "runArgs": [ + "--privileged" + ], + "remoteUser": "${localEnv:USER}", + "mounts": [ + { + "source": "${localEnv:HOME}${localEnv:USERPROFILE}/.qnx/license/licenses", + "target": "/opt/score_qnx/license/licenses", + "type": "bind" + }, + { + "source": "${localEnv:HOME}${localEnv:USERPROFILE}/.netrc", + "target": "/home/${localEnv:USER}/.netrc", + "type": "bind" + } + ], + "initializeCommand": { + "Make sure QNX license exists": "mkdir -p ~/.qnx/license && touch -a ~/.qnx/license/licenses", + "Make sure .netrc exists": "touch -a ~/.netrc" + } +} From e7308b2d104dfa41a39f7c1b448ad669290c473c Mon Sep 17 00:00:00 2001 From: Ryan Steel Date: Mon, 6 Jul 2026 17:18:47 +0100 Subject: [PATCH 2/7] add docker-in-docker feature --- .devcontainer/devcontainer-lock.json | 9 +++++++++ .devcontainer/devcontainer.json | 2 ++ 2 files changed, 11 insertions(+) create mode 100644 .devcontainer/devcontainer-lock.json diff --git a/.devcontainer/devcontainer-lock.json b/.devcontainer/devcontainer-lock.json new file mode 100644 index 0000000..e3f1791 --- /dev/null +++ b/.devcontainer/devcontainer-lock.json @@ -0,0 +1,9 @@ +{ + "features": { + "ghcr.io/devcontainers/features/docker-in-docker:4.0.0": { + "version": "4.0.0", + "resolved": "ghcr.io/devcontainers/features/docker-in-docker@sha256:4fa87399214366e320d489991769c4f3f461e1ffe461f54eea78a41b34945bb5", + "integrity": "sha256:4fa87399214366e320d489991769c4f3f461e1ffe461f54eea78a41b34945bb5" + } + } +} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ea00b61..20a6440 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,6 +6,8 @@ "USERNAME": "${localEnv:USER}" } }, + "features": { "ghcr.io/devcontainers/features/docker-in-docker:4.0.0": {} }, + "runArgs": [ "--privileged" ], From 4ae687463d3d0c83f9bfe138a47b73492776e7cb Mon Sep 17 00:00:00 2001 From: Ryan Steel Date: Mon, 6 Jul 2026 17:38:03 +0000 Subject: [PATCH 3/7] fix mounts --- .devcontainer/devcontainer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 20a6440..0045718 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,12 +14,12 @@ "remoteUser": "${localEnv:USER}", "mounts": [ { - "source": "${localEnv:HOME}${localEnv:USERPROFILE}/.qnx/license/licenses", + "source": "${localEnv:HOME}/.qnx/license/licenses", "target": "/opt/score_qnx/license/licenses", "type": "bind" }, { - "source": "${localEnv:HOME}${localEnv:USERPROFILE}/.netrc", + "source": "${localEnv:HOME}/.netrc", "target": "/home/${localEnv:USER}/.netrc", "type": "bind" } From 9346f05d513ec0840b082f10ca2a3aef0de54bab Mon Sep 17 00:00:00 2001 From: Ryan Steel Date: Mon, 6 Jul 2026 19:49:53 +0100 Subject: [PATCH 4/7] add compilation databases to .gitignore --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 085f857..7566960 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,8 @@ styles/ .venv __pycache__/ /.coverage + +# Compilation databases for code completion in IDEs +.cache/* +compile_commands.json +rust-project.json From 729e425682c550e846a00b9bb4681da62d2b89dd Mon Sep 17 00:00:00 2001 From: Ryan Steel Date: Tue, 7 Jul 2026 12:38:34 +0100 Subject: [PATCH 5/7] chore: update readme with dev environment setup steps --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 1e8af75..ec92c98 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,20 @@ It provides a **standardized project structure**, ensuring best practices for: ## 🚀 Getting Started +### 0️⃣ Set up development environment + +Use devcontainer as default path. It includes Bazel tooling and dependencies. + +1. Install Docker. +2. Open repository in a devcontainer-capable editor (for example VS Code with Dev Containers extension). +3. Reopen workspace in container. + +Official setup guide: +https://eclipse-score.github.io/score/main/contribute/development/development_environment.html + +If devcontainer not available, follow manual setup steps in same guide. + + ### 1️⃣ Clone the Repository ```sh From 614b8295d0d2fa9a63b7ffa24a347c47484faa0f Mon Sep 17 00:00:00 2001 From: Ryan Steel Date: Wed, 8 Jul 2026 09:58:13 +0000 Subject: [PATCH 6/7] format devcontainer.json --- .devcontainer/devcontainer.json | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0045718..ba343ff 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,17 +1,18 @@ { - "name": "eclipse-s-core", - "build": { - "dockerfile": "Dockerfile", - "args": { - "USERNAME": "${localEnv:USER}" - } - }, - "features": { "ghcr.io/devcontainers/features/docker-in-docker:4.0.0": {} }, - - "runArgs": [ - "--privileged" - ], - "remoteUser": "${localEnv:USER}", + "name": "eclipse-s-core", + "build": { + "dockerfile": "Dockerfile", + "args": { + "USERNAME": "${localEnv:USER}" + } + }, + "features": { + "ghcr.io/devcontainers/features/docker-in-docker:4.0.0": {} + }, + "runArgs": [ + "--privileged" + ], + "remoteUser": "${localEnv:USER}", "mounts": [ { "source": "${localEnv:HOME}/.qnx/license/licenses", From afe5d8f4ad2c2cc1ceead35c15431c74f0bbf029 Mon Sep 17 00:00:00 2001 From: Ryan Steel Date: Wed, 8 Jul 2026 11:07:00 +0000 Subject: [PATCH 7/7] add license header and .devcontainer to copyright_checker --- .devcontainer/Dockerfile | 25 +++++++++++++++++++------ BUILD | 1 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index c786502..cbb891b 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,3 +1,16 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + # Use Dockerfile to get Dependabot version bumps after new image is released FROM ghcr.io/eclipse-score/devcontainer:v1.8.0 @@ -6,12 +19,12 @@ ARG USERNAME=vscode # Rename 'vscode' to the host username for QNX-related user expectations. # In environments using a license server, the QNX license might be bound to a username. RUN if [ "$USERNAME" != "vscode" ]; then \ - usermod -l ${USERNAME} vscode \ - && groupmod -n ${USERNAME} vscode \ - && usermod -d /home/${USERNAME} -m ${USERNAME} \ - && ln -s /home/${USERNAME} /home/vscode \ - && echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${USERNAME} \ - && chmod 0440 /etc/sudoers.d/${USERNAME}; \ + usermod -l ${USERNAME} vscode \ + && groupmod -n ${USERNAME} vscode \ + && usermod -d /home/${USERNAME} -m ${USERNAME} \ + && ln -s /home/${USERNAME} /home/vscode \ + && echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${USERNAME} \ + && chmod 0440 /etc/sudoers.d/${USERNAME}; \ fi USER ${USERNAME} diff --git a/BUILD b/BUILD index cfb9030..6593122 100644 --- a/BUILD +++ b/BUILD @@ -30,6 +30,7 @@ docs( copyright_checker( name = "copyright", srcs = [ + ".devcontainer", ".github", "docs", "examples",