Remove LLVM and Rust features#84
Conversation
They increase the image by 2.7GB and might not be needed since bazel or the extensions are able to download the binaries as well.
|
Would be lovely to have it confirmed working in some other repo besides communication? But I guess we can merge it, and undo as required. |
I tested the score repo as well and used it in the I was also thinking back and forth how to add better checks to this repo to ensure that devcontainer updates do not break workflows. It is quite time consuming to check different repos. |
There was a problem hiding this comment.
Pull request overview
This PR removes the LLVM and Rust pre-installed features from the devcontainer to reduce the image size by approximately 2GB. The change shifts the responsibility for providing language tooling from pre-installed binaries to on-demand downloads by IDE extensions (clangd for C++ and rust-analyzer for Rust) and Bazel-managed toolchains.
Changes:
- Removed LLVM and Rust feature installations from devcontainer.json and devcontainer-lock.json
- Removed version-specific tooling tests (clangd, clang-format, clang-tidy, rustc, cargo, etc.)
- Removed Rust bash completion setup
- Added install_dive.sh script (purpose unclear in relation to PR)
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/s-core-devcontainer/.devcontainer/devcontainer.json | Removed LLVM and Rust feature declarations; removed clangd.path setting (extension will auto-discover); minor formatting cleanup |
| src/s-core-devcontainer/.devcontainer/devcontainer-lock.json | Removed locked versions for LLVM and Rust features |
| src/s-core-devcontainer/.devcontainer/s-core-local/install.sh | Removed rustup bash completion installation |
| src/s-core-devcontainer/test-project/test.sh | Removed version checks for clangd, clang-format, clang-tidy, clang, rustc, cargo, clippy, rustfmt, and rust-analyzer |
| scripts/install_dive.sh | Added new script to install dive tool (Docker image analysis) - unclear relationship to PR purpose |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| #!/usr/bin/env bash | ||
|
|
||
| set -euo pipefail | ||
|
|
||
| # ******************************************************************************* | ||
| # 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-FileCopyrightText: 2026 Contributors to the Eclipse Foundation | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
| # ******************************************************************************* | ||
|
|
||
| echo "Installing dive..." | ||
|
|
||
| DIVE_NAME="/tmp/dive.deb" | ||
|
|
||
| VERSION="0.13.1" | ||
|
|
||
| ARCHITECTURE="$(uname -m)" | ||
| if [ "${ARCHITECTURE}" = "x86_64" ]; then | ||
| ARCH="amd64" | ||
| SHA256SUM="0c20d18f0cc87e6e982a3289712ac3aa9fc364ba973109d1da3a473232640571" | ||
| else | ||
| ARCH="arm64" | ||
| SHA256SUM="80203401b3d7c4feffd13575755a07834a2d2f35f49e8612f0749b318c3f2fa5" | ||
| fi | ||
|
|
||
| curl -L "https://github.com/wagoodman/dive/releases/download/v${VERSION}/dive_${VERSION}_linux_${ARCH}.deb" -o "${DIVE_NAME}" | ||
| echo "${SHA256SUM} /tmp/dive.deb" | sha256sum -c - || exit 1 | ||
| sudo dpkg -i "${DIVE_NAME}" | ||
| rm -f "${DIVE_NAME}" | ||
|
|
||
| # Verify installation | ||
| dive --version |
There was a problem hiding this comment.
This new file appears to be unrelated to the PR's stated purpose of removing LLVM and Rust features. The script installs the 'dive' tool (a Docker image analysis tool), which might be useful for verifying the image size reduction mentioned in the PR description. However, since this file is not referenced anywhere in the codebase or documentation, it's unclear when and how it should be used. Consider either:
- Adding documentation explaining when this script should be used
- Integrating it into the CI workflow if it's meant to verify image sizes
- Creating this script in a separate PR if it's unrelated to the LLVM/Rust removal
This reduces the image size by 2GB. Combined feature size was 2.7GB. Thus in CI image downloads should consume less time.
The assumption is that toolchains are downloaded by bazel and IDE extensions are able to download binaries if needed.
This removes the option to build Rust with cargo. E.g. persistency seems still to use
Cargo.tomlfiles. It encourages to use bazel instead, but who knows if that is really followed. However since the persistency build has a hard dependency on the QNX toolchain, which is not yet supported by the devcontainer, I doubt the devcontainer is used there in conjunction with bazel.In the communication repository code navigation in Rust still works by having the Rust extension installed. Also C++ code navigation still work. Both extensions now download the needed language servers from somewhere.