From deb9c2d21bf1ee2defbc9b09b0f4d4512932856d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:29:42 +0000 Subject: [PATCH 1/5] Initial plan From 86336bf75327e448619a8bf7209e378e63891d1f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:37:14 +0000 Subject: [PATCH 2/5] Add C/C++ dev tool features and c-cpp-dev-collection meta-feature Agent-Logs-Url: https://github.com/devcontainer-community/devcontainer-features/sessions/0b32743a-0768-4bb6-a451-fa14320740b8 Co-authored-by: sebst <592313+sebst@users.noreply.github.com> --- README.md | 9 +++++ src/c-cpp-dev-collection/NOTES.md | 17 +++++++++ .../devcontainer-feature.json | 17 +++++++++ src/c-cpp-dev-collection/install.sh | 19 ++++++++++ src/ccache/NOTES.md | 17 +++++++++ src/ccache/devcontainer-feature.json | 7 ++++ src/ccache/install.sh | 35 +++++++++++++++++++ src/clang-format/NOTES.md | 17 +++++++++ src/clang-format/devcontainer-feature.json | 7 ++++ src/clang-format/install.sh | 35 +++++++++++++++++++ src/clang-tidy/NOTES.md | 17 +++++++++ src/clang-tidy/devcontainer-feature.json | 7 ++++ src/clang-tidy/install.sh | 35 +++++++++++++++++++ src/cmake/NOTES.md | 17 +++++++++ src/cmake/devcontainer-feature.json | 7 ++++ src/cmake/install.sh | 35 +++++++++++++++++++ src/cppcheck/NOTES.md | 17 +++++++++ src/cppcheck/devcontainer-feature.json | 7 ++++ src/cppcheck/install.sh | 35 +++++++++++++++++++ src/gdb/NOTES.md | 17 +++++++++ src/gdb/devcontainer-feature.json | 7 ++++ src/gdb/install.sh | 35 +++++++++++++++++++ src/ninja/NOTES.md | 17 +++++++++ src/ninja/devcontainer-feature.json | 7 ++++ src/ninja/install.sh | 35 +++++++++++++++++++ src/valgrind/NOTES.md | 17 +++++++++ src/valgrind/devcontainer-feature.json | 7 ++++ src/valgrind/install.sh | 35 +++++++++++++++++++ test/c-cpp-dev-collection/test.sh | 16 +++++++++ test/ccache/test.sh | 9 +++++ test/clang-format/test.sh | 9 +++++ test/clang-tidy/test.sh | 9 +++++ test/cmake/test.sh | 9 +++++ test/cppcheck/test.sh | 9 +++++ test/gdb/test.sh | 9 +++++ test/ninja/test.sh | 9 +++++ test/valgrind/test.sh | 9 +++++ 37 files changed, 622 insertions(+) create mode 100644 src/c-cpp-dev-collection/NOTES.md create mode 100644 src/c-cpp-dev-collection/devcontainer-feature.json create mode 100755 src/c-cpp-dev-collection/install.sh create mode 100644 src/ccache/NOTES.md create mode 100644 src/ccache/devcontainer-feature.json create mode 100755 src/ccache/install.sh create mode 100644 src/clang-format/NOTES.md create mode 100644 src/clang-format/devcontainer-feature.json create mode 100755 src/clang-format/install.sh create mode 100644 src/clang-tidy/NOTES.md create mode 100644 src/clang-tidy/devcontainer-feature.json create mode 100755 src/clang-tidy/install.sh create mode 100644 src/cmake/NOTES.md create mode 100644 src/cmake/devcontainer-feature.json create mode 100755 src/cmake/install.sh create mode 100644 src/cppcheck/NOTES.md create mode 100644 src/cppcheck/devcontainer-feature.json create mode 100755 src/cppcheck/install.sh create mode 100644 src/gdb/NOTES.md create mode 100644 src/gdb/devcontainer-feature.json create mode 100755 src/gdb/install.sh create mode 100644 src/ninja/NOTES.md create mode 100644 src/ninja/devcontainer-feature.json create mode 100755 src/ninja/install.sh create mode 100644 src/valgrind/NOTES.md create mode 100644 src/valgrind/devcontainer-feature.json create mode 100755 src/valgrind/install.sh create mode 100755 test/c-cpp-dev-collection/test.sh create mode 100755 test/ccache/test.sh create mode 100755 test/clang-format/test.sh create mode 100755 test/clang-tidy/test.sh create mode 100755 test/cmake/test.sh create mode 100755 test/cppcheck/test.sh create mode 100755 test/gdb/test.sh create mode 100755 test/ninja/test.sh create mode 100755 test/valgrind/test.sh diff --git a/README.md b/README.md index 3f3a3ff..9f8c4a7 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,15 @@ | [biomejs.dev](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/biomejs.dev) | `biome` — fast JS/TS formatter and linter | gh release | 1.0.1 | | [btop](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/btop) | `btop` — resource monitor (CPU, memory, network, processes) | gh release | 1.0.3 | | [bun.sh](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/bun.sh) | `bun` — fast JS runtime and package manager | curl | 1.0.0 | +| [c-cpp-dev-collection](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/c-cpp-dev-collection) | C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy | meta | 1.0.0 | +| [ccache](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ccache) | `ccache` — compiler cache for faster C/C++ recompilation | apt | 1.0.0 | | [charmbracelet/gum](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/charmbracelet-gum) | `gum` — building blocks for shell scripts | gh release | 1.0.4 | | [chezmoi.io](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/chezmoi.io) | `chezmoi` — dotfiles manager across machines | gh release | 1.0.2 | +| [clang-format](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/clang-format) | `clang-format` — C/C++ code formatter from the LLVM project | apt | 1.0.0 | +| [clang-tidy](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/clang-tidy) | `clang-tidy` — C++ linter and static analyzer from LLVM | apt | 1.0.0 | | [cloudflare.com/warp-cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cloudflare.com-warp-cli) | `warp-cli` — Cloudflare WARP VPN client | curl | 1.0.1 | +| [cmake](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cmake) | `cmake` — cross-platform build system generator | apt | 1.0.0 | +| [cppcheck](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cppcheck) | `cppcheck` — static analysis tool for C/C++ code | apt | 1.0.0 | | [critique.work](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/critique.work) | `critique` — TUI for reviewing git changes | bun | 1.0.0 | | [delta](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/delta) | `delta` — syntax-highlighting pager for git diffs | gh release | 1.0.1 | | [deno.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/deno.com) | `deno` — secure TypeScript/JavaScript runtime | curl | 1.0.0 | @@ -37,6 +43,7 @@ | [fd](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/fd) | `fd` — fast and user-friendly file finder | gh release | 1.0.1 | | [feature-installer](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/feature-installer) | `feature-installer` — install devcontainer features at runtime | curl | 1.0.0 | | [fzf](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/fzf) | `fzf` — general-purpose command-line fuzzy finder | gh release | 1.0.0 | +| [gdb](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/gdb) | `gdb` — GNU debugger for C/C++ and other languages | apt | 1.0.0 | | [getdnote.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/getdnote.com) | `dnote` — simple command-line notebook for developers | gh release | 1.0.0 | | [github.com/cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/github.com-cli) | `gh` — GitHub CLI | curl | 1.0.1 | | [helix-editor.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/helix-editor.com) | `hx` — modal text editor with built-in LSP | gh release | 1.0.0 | @@ -53,6 +60,7 @@ | [memvid.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/memvid.com) | `memvid` — video-based memory for AI applications | npm | 1.0.0 | | [mosh.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/mosh.org) | `mosh` — SSH replacement with roaming support | apt | 1.0.0 | | [neovim.io](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/neovim.io) | `nvim` — hyperextensible Vim-based text editor | gh release | 1.0.1 | +| [ninja](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ninja) | `ninja` — small build system with a focus on speed | apt | 1.0.0 | | [nixos.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/nixos.org) | `nix` — the Nix package manager | curl | 1.0.0 | | [nvidia.com/cuda](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/nvidia.com-cuda) | NVIDIA CUDA Toolkit for GPU computing | curl | 1.0.0 | | [onecli.sh/cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/onecli.sh-cli) | `onecli` — manage agents, secrets, rules, and configuration from the terminal | gh release | 1.0.1 | @@ -74,6 +82,7 @@ | [tailscale.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/tailscale.com) | `tailscale` — zero-config mesh VPN | curl | 1.0.0 | | [taskwarrior.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/taskwarrior.org) | `task` — command-line task manager | apt | 1.0.0 | | [turso.tech](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/turso.tech) | `tursodb` — in-process SQL database compatible with SQLite | gh release | 1.0.0 | +| [valgrind](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/valgrind) | `valgrind` — memory error detector and profiler for C/C++ | apt | 1.0.0 | | [webinstall.dev](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/webinstall.dev) | `webi` — install packages without sudo | curl | 1.0.1 | | [yakitrak/notesmd-cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/yakitrak-notesmd-cli) | `notesmd-cli` — manage Obsidian vaults from the terminal | gh release | 1.0.0 | | [yq](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/yq) | `yq` — command-line YAML/JSON/XML processor | gh release | 1.0.1 | diff --git a/src/c-cpp-dev-collection/NOTES.md b/src/c-cpp-dev-collection/NOTES.md new file mode 100644 index 0000000..c0384b6 --- /dev/null +++ b/src/c-cpp-dev-collection/NOTES.md @@ -0,0 +1,17 @@ +# c-cpp-dev-collection + +## Project + +- [devcontainer-community/devcontainer-features](https://github.com/devcontainer-community/devcontainer-features) + +## Description + +A meta-feature that installs a curated set of popular C/C++ development tools in one go. Installing this feature brings in: `cmake`, `ninja`, `gdb`, `valgrind`, `ccache`, `cppcheck`, `clang-format`, and `clang-tidy`. + +## Installation Method + +Meta-feature: installs via dependencies (`dependsOn`) declared in `devcontainer-feature.json`. + +## Other Notes + +_No additional notes._ diff --git a/src/c-cpp-dev-collection/devcontainer-feature.json b/src/c-cpp-dev-collection/devcontainer-feature.json new file mode 100644 index 0000000..0dce46f --- /dev/null +++ b/src/c-cpp-dev-collection/devcontainer-feature.json @@ -0,0 +1,17 @@ +{ + "name": "c-cpp-dev-collection", + "id": "c-cpp-dev-collection", + "version": "1.0.0", + "description": "C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/c-cpp-dev-collection", + "dependsOn": { + "ghcr.io/devcontainer-community/features/cmake:1": {}, + "ghcr.io/devcontainer-community/features/ninja:1": {}, + "ghcr.io/devcontainer-community/features/gdb:1": {}, + "ghcr.io/devcontainer-community/features/valgrind:1": {}, + "ghcr.io/devcontainer-community/features/ccache:1": {}, + "ghcr.io/devcontainer-community/features/cppcheck:1": {}, + "ghcr.io/devcontainer-community/features/clang-format:1": {}, + "ghcr.io/devcontainer-community/features/clang-tidy:1": {} + } +} diff --git a/src/c-cpp-dev-collection/install.sh b/src/c-cpp-dev-collection/install.sh new file mode 100755 index 0000000..98b7749 --- /dev/null +++ b/src/c-cpp-dev-collection/install.sh @@ -0,0 +1,19 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="c-cpp-dev-collection" +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + echo "This meta-feature installs C/C++ dev tools via its dependencies." + echo "See devcontainer-feature.json 'dependsOn' for the list of included features." +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/ccache/NOTES.md b/src/ccache/NOTES.md new file mode 100644 index 0000000..fc87e15 --- /dev/null +++ b/src/ccache/NOTES.md @@ -0,0 +1,17 @@ +# ccache + +## Project + +- [ccache](https://ccache.dev) + +## Description + +A compiler cache that speeds up recompilation of C/C++ code by caching the results of previous compilations. On a cache hit, it can reduce compilation time by an order of magnitude. + +## Installation Method + +Installed via the system APT package manager (`apt-get install ccache`). + +## Other Notes + +_No additional notes._ diff --git a/src/ccache/devcontainer-feature.json b/src/ccache/devcontainer-feature.json new file mode 100644 index 0000000..7224d09 --- /dev/null +++ b/src/ccache/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "ccache", + "id": "ccache", + "version": "1.0.0", + "description": "Install \"ccache\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ccache" +} diff --git a/src/ccache/install.sh b/src/ccache/install.sh new file mode 100755 index 0000000..8aa8e07 --- /dev/null +++ b/src/ccache/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="ccache" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall ccache + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/clang-format/NOTES.md b/src/clang-format/NOTES.md new file mode 100644 index 0000000..4fd7f6b --- /dev/null +++ b/src/clang-format/NOTES.md @@ -0,0 +1,17 @@ +# clang-format + +## Project + +- [clang-format](https://clang.llvm.org/docs/ClangFormat.html) + +## Description + +A tool to automatically format C/C++, Java, JavaScript, JSON, Objective-C, Protobuf, and C# code. It uses a style configuration file (`.clang-format`) to enforce consistent code style across a project. + +## Installation Method + +Installed via the system APT package manager (`apt-get install clang-format`). + +## Other Notes + +_No additional notes._ diff --git a/src/clang-format/devcontainer-feature.json b/src/clang-format/devcontainer-feature.json new file mode 100644 index 0000000..3a089e0 --- /dev/null +++ b/src/clang-format/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "clang-format", + "id": "clang-format", + "version": "1.0.0", + "description": "Install \"clang-format\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/clang-format" +} diff --git a/src/clang-format/install.sh b/src/clang-format/install.sh new file mode 100755 index 0000000..336afcc --- /dev/null +++ b/src/clang-format/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="clang-format" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall clang-format + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/clang-tidy/NOTES.md b/src/clang-tidy/NOTES.md new file mode 100644 index 0000000..6cfddb5 --- /dev/null +++ b/src/clang-tidy/NOTES.md @@ -0,0 +1,17 @@ +# clang-tidy + +## Project + +- [clang-tidy](https://clang.llvm.org/extra/clang-tidy/) + +## Description + +A clang-based C++ linter tool. It provides an extensible framework for diagnosing and fixing typical programming errors, including style violations, interface misuse, and bugs detectable via static analysis. + +## Installation Method + +Installed via the system APT package manager (`apt-get install clang-tidy`). + +## Other Notes + +_No additional notes._ diff --git a/src/clang-tidy/devcontainer-feature.json b/src/clang-tidy/devcontainer-feature.json new file mode 100644 index 0000000..9bda171 --- /dev/null +++ b/src/clang-tidy/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "clang-tidy", + "id": "clang-tidy", + "version": "1.0.0", + "description": "Install \"clang-tidy\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/clang-tidy" +} diff --git a/src/clang-tidy/install.sh b/src/clang-tidy/install.sh new file mode 100755 index 0000000..90ce329 --- /dev/null +++ b/src/clang-tidy/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="clang-tidy" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall clang-tidy + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/cmake/NOTES.md b/src/cmake/NOTES.md new file mode 100644 index 0000000..b607c69 --- /dev/null +++ b/src/cmake/NOTES.md @@ -0,0 +1,17 @@ +# cmake + +## Project + +- [CMake](https://cmake.org) + +## Description + +A cross-platform, open-source build system generator. CMake controls the software compilation process using compiler-independent configuration files, generating native makefiles and workspaces for build environments like Make, Ninja, and IDE projects. + +## Installation Method + +Installed via the system APT package manager (`apt-get install cmake`). + +## Other Notes + +_No additional notes._ diff --git a/src/cmake/devcontainer-feature.json b/src/cmake/devcontainer-feature.json new file mode 100644 index 0000000..54bd76f --- /dev/null +++ b/src/cmake/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "cmake", + "id": "cmake", + "version": "1.0.0", + "description": "Install \"cmake\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cmake" +} diff --git a/src/cmake/install.sh b/src/cmake/install.sh new file mode 100755 index 0000000..bac7199 --- /dev/null +++ b/src/cmake/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="cmake" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall cmake + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/cppcheck/NOTES.md b/src/cppcheck/NOTES.md new file mode 100644 index 0000000..d95deda --- /dev/null +++ b/src/cppcheck/NOTES.md @@ -0,0 +1,17 @@ +# cppcheck + +## Project + +- [Cppcheck](https://cppcheck.sourceforge.io) + +## Description + +A static analysis tool for C/C++ code. It detects bugs that compilers normally fail to detect, including undefined behavior, memory leaks, and other common programming errors. + +## Installation Method + +Installed via the system APT package manager (`apt-get install cppcheck`). + +## Other Notes + +_No additional notes._ diff --git a/src/cppcheck/devcontainer-feature.json b/src/cppcheck/devcontainer-feature.json new file mode 100644 index 0000000..ae5a954 --- /dev/null +++ b/src/cppcheck/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "cppcheck", + "id": "cppcheck", + "version": "1.0.0", + "description": "Install \"cppcheck\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cppcheck" +} diff --git a/src/cppcheck/install.sh b/src/cppcheck/install.sh new file mode 100755 index 0000000..37b1fdf --- /dev/null +++ b/src/cppcheck/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="cppcheck" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall cppcheck + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/gdb/NOTES.md b/src/gdb/NOTES.md new file mode 100644 index 0000000..84d97cf --- /dev/null +++ b/src/gdb/NOTES.md @@ -0,0 +1,17 @@ +# gdb + +## Project + +- [GDB](https://www.sourceware.org/gdb/) + +## Description + +The GNU Debugger allows you to see what is going on inside another program while it executes, or what it was doing at the moment it crashed. GDB supports debugging of C, C++, and many other languages. + +## Installation Method + +Installed via the system APT package manager (`apt-get install gdb`). + +## Other Notes + +_No additional notes._ diff --git a/src/gdb/devcontainer-feature.json b/src/gdb/devcontainer-feature.json new file mode 100644 index 0000000..968919e --- /dev/null +++ b/src/gdb/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "gdb", + "id": "gdb", + "version": "1.0.0", + "description": "Install \"gdb\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/gdb" +} diff --git a/src/gdb/install.sh b/src/gdb/install.sh new file mode 100755 index 0000000..9ee8213 --- /dev/null +++ b/src/gdb/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="gdb" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall gdb + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/ninja/NOTES.md b/src/ninja/NOTES.md new file mode 100644 index 0000000..c896023 --- /dev/null +++ b/src/ninja/NOTES.md @@ -0,0 +1,17 @@ +# ninja + +## Project + +- [Ninja](https://ninja-build.org) + +## Description + +A small build system with a focus on speed. Ninja is designed to run builds as fast as possible, making it a popular choice as a CMake generator target for C/C++ projects. + +## Installation Method + +Installed via the system APT package manager (`apt-get install ninja-build`). + +## Other Notes + +_No additional notes._ diff --git a/src/ninja/devcontainer-feature.json b/src/ninja/devcontainer-feature.json new file mode 100644 index 0000000..1077234 --- /dev/null +++ b/src/ninja/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "ninja", + "id": "ninja", + "version": "1.0.0", + "description": "Install \"ninja\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ninja" +} diff --git a/src/ninja/install.sh b/src/ninja/install.sh new file mode 100755 index 0000000..b55b0ef --- /dev/null +++ b/src/ninja/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="ninja" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall ninja-build + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/valgrind/NOTES.md b/src/valgrind/NOTES.md new file mode 100644 index 0000000..aee39a8 --- /dev/null +++ b/src/valgrind/NOTES.md @@ -0,0 +1,17 @@ +# valgrind + +## Project + +- [Valgrind](https://valgrind.org) + +## Description + +An instrumentation framework for building dynamic analysis tools. Valgrind's most popular tool, Memcheck, detects memory management bugs such as memory leaks, use-after-free, and buffer overflows in C/C++ programs. + +## Installation Method + +Installed via the system APT package manager (`apt-get install valgrind`). + +## Other Notes + +_No additional notes._ diff --git a/src/valgrind/devcontainer-feature.json b/src/valgrind/devcontainer-feature.json new file mode 100644 index 0000000..70c0c9c --- /dev/null +++ b/src/valgrind/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "valgrind", + "id": "valgrind", + "version": "1.0.0", + "description": "Install \"valgrind\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/valgrind" +} diff --git a/src/valgrind/install.sh b/src/valgrind/install.sh new file mode 100755 index 0000000..ec88300 --- /dev/null +++ b/src/valgrind/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="valgrind" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall valgrind + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/test/c-cpp-dev-collection/test.sh b/test/c-cpp-dev-collection/test.sh new file mode 100755 index 0000000..9be8c9d --- /dev/null +++ b/test/c-cpp-dev-collection/test.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "cmake installed" bash -c "cmake --version | grep 'cmake'" +check "ninja installed" bash -c "ninja --version" +check "gdb installed" bash -c "gdb --version | grep 'GNU'" +check "valgrind installed" bash -c "valgrind --version | grep 'valgrind'" +check "ccache installed" bash -c "ccache --version | grep 'ccache'" +check "cppcheck installed" bash -c "cppcheck --version | grep 'Cppcheck'" +check "clang-format installed" bash -c "clang-format --version | grep 'clang-format'" +check "clang-tidy installed" bash -c "clang-tidy --version | grep 'LLVM'" + +reportResults diff --git a/test/ccache/test.sh b/test/ccache/test.sh new file mode 100755 index 0000000..fee4c18 --- /dev/null +++ b/test/ccache/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "ccache --version | grep 'ccache'" + +reportResults diff --git a/test/clang-format/test.sh b/test/clang-format/test.sh new file mode 100755 index 0000000..6d0cc1b --- /dev/null +++ b/test/clang-format/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "clang-format --version | grep 'clang-format'" + +reportResults diff --git a/test/clang-tidy/test.sh b/test/clang-tidy/test.sh new file mode 100755 index 0000000..3f62a2f --- /dev/null +++ b/test/clang-tidy/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "clang-tidy --version | grep 'LLVM'" + +reportResults diff --git a/test/cmake/test.sh b/test/cmake/test.sh new file mode 100755 index 0000000..6d1fd97 --- /dev/null +++ b/test/cmake/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "cmake --version | grep 'cmake'" + +reportResults diff --git a/test/cppcheck/test.sh b/test/cppcheck/test.sh new file mode 100755 index 0000000..491b0ff --- /dev/null +++ b/test/cppcheck/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "cppcheck --version | grep 'Cppcheck'" + +reportResults diff --git a/test/gdb/test.sh b/test/gdb/test.sh new file mode 100755 index 0000000..4592bc9 --- /dev/null +++ b/test/gdb/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "gdb --version | grep 'GNU'" + +reportResults diff --git a/test/ninja/test.sh b/test/ninja/test.sh new file mode 100755 index 0000000..044fb40 --- /dev/null +++ b/test/ninja/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "ninja --version" + +reportResults diff --git a/test/valgrind/test.sh b/test/valgrind/test.sh new file mode 100755 index 0000000..5d8e87c --- /dev/null +++ b/test/valgrind/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "valgrind --version | grep 'valgrind'" + +reportResults From 25bd4e7c0426297ba8e0d93cff128ecfbb170197 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:53:03 +0000 Subject: [PATCH 3/5] Rename features per review, add distcc.org/vcpkg.io/apt-build-essential Agent-Logs-Url: https://github.com/devcontainer-community/devcontainer-features/sessions/5a572f43-e96c-4439-9eb6-9cb09c603ca5 Co-authored-by: sebst <592313+sebst@users.noreply.github.com> --- README.md | 17 ++++---- src/apt-build-essential/NOTES.md | 17 ++++++++ .../devcontainer-feature.json | 7 ++++ src/apt-build-essential/install.sh | 35 +++++++++++++++++ src/c-cpp-dev-collection/NOTES.md | 2 +- .../devcontainer-feature.json | 19 +++++---- src/{ccache => ccache.dev}/NOTES.md | 0 .../devcontainer-feature.json | 6 +-- src/{ccache => ccache.dev}/install.sh | 0 src/{cmake => cmake.org}/NOTES.md | 0 .../devcontainer-feature.json | 6 +-- src/{cmake => cmake.org}/install.sh | 0 src/{cppcheck => danmar-cppcheck}/NOTES.md | 0 .../devcontainer-feature.json | 6 +-- src/{cppcheck => danmar-cppcheck}/install.sh | 0 src/distcc.org/NOTES.md | 17 ++++++++ src/distcc.org/devcontainer-feature.json | 7 ++++ src/distcc.org/install.sh | 35 +++++++++++++++++ src/{ninja => ninja-build.org}/NOTES.md | 0 .../devcontainer-feature.json | 6 +-- src/{ninja => ninja-build.org}/install.sh | 0 src/{gdb => sourceware.org-gdb}/NOTES.md | 0 .../devcontainer-feature.json | 6 +-- src/{gdb => sourceware.org-gdb}/install.sh | 0 src/{valgrind => valgrind.org}/NOTES.md | 0 .../devcontainer-feature.json | 6 +-- src/{valgrind => valgrind.org}/install.sh | 0 src/vcpkg.io/NOTES.md | 17 ++++++++ src/vcpkg.io/devcontainer-feature.json | 7 ++++ src/vcpkg.io/install.sh | 39 +++++++++++++++++++ test/apt-build-essential/test.sh | 11 ++++++ test/c-cpp-dev-collection/test.sh | 3 ++ test/{ccache => ccache.dev}/test.sh | 0 test/{cmake => cmake.org}/test.sh | 0 test/{cppcheck => danmar-cppcheck}/test.sh | 0 test/distcc.org/test.sh | 9 +++++ test/{ninja => ninja-build.org}/test.sh | 0 test/{gdb => sourceware.org-gdb}/test.sh | 0 test/{valgrind => valgrind.org}/test.sh | 0 test/vcpkg.io/test.sh | 9 +++++ 40 files changed, 253 insertions(+), 34 deletions(-) create mode 100644 src/apt-build-essential/NOTES.md create mode 100644 src/apt-build-essential/devcontainer-feature.json create mode 100755 src/apt-build-essential/install.sh rename src/{ccache => ccache.dev}/NOTES.md (100%) rename src/{ccache => ccache.dev}/devcontainer-feature.json (58%) rename src/{ccache => ccache.dev}/install.sh (100%) rename src/{cmake => cmake.org}/NOTES.md (100%) rename src/{cmake => cmake.org}/devcontainer-feature.json (58%) rename src/{cmake => cmake.org}/install.sh (100%) rename src/{cppcheck => danmar-cppcheck}/NOTES.md (100%) rename src/{cppcheck => danmar-cppcheck}/devcontainer-feature.json (55%) rename src/{cppcheck => danmar-cppcheck}/install.sh (100%) create mode 100644 src/distcc.org/NOTES.md create mode 100644 src/distcc.org/devcontainer-feature.json create mode 100755 src/distcc.org/install.sh rename src/{ninja => ninja-build.org}/NOTES.md (100%) rename src/{ninja => ninja-build.org}/devcontainer-feature.json (54%) rename src/{ninja => ninja-build.org}/install.sh (100%) rename src/{gdb => sourceware.org-gdb}/NOTES.md (100%) rename src/{gdb => sourceware.org-gdb}/devcontainer-feature.json (52%) rename src/{gdb => sourceware.org-gdb}/install.sh (100%) rename src/{valgrind => valgrind.org}/NOTES.md (100%) rename src/{valgrind => valgrind.org}/devcontainer-feature.json (57%) rename src/{valgrind => valgrind.org}/install.sh (100%) create mode 100644 src/vcpkg.io/NOTES.md create mode 100644 src/vcpkg.io/devcontainer-feature.json create mode 100755 src/vcpkg.io/install.sh create mode 100755 test/apt-build-essential/test.sh rename test/{ccache => ccache.dev}/test.sh (100%) rename test/{cmake => cmake.org}/test.sh (100%) rename test/{cppcheck => danmar-cppcheck}/test.sh (100%) create mode 100755 test/distcc.org/test.sh rename test/{ninja => ninja-build.org}/test.sh (100%) rename test/{gdb => sourceware.org-gdb}/test.sh (100%) rename test/{valgrind => valgrind.org}/test.sh (100%) create mode 100755 test/vcpkg.io/test.sh diff --git a/README.md b/README.md index 9f8c4a7..93d7125 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ | Feature | Description | Install method | Version | | ------- | ----------- | -------------- | ------- | | [alexpasmantier/television](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/alexpasmantier-television) | `tv` — fuzzy finder for files, text, and more | gh release | 1.0.1 | +| [apt-build-essential](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/apt-build-essential) | `gcc`/`g++`/`make` — C/C++ compiler toolchain via the build-essential package | apt | 1.0.0 | | [asdf-vm.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/asdf-vm.com) | `asdf` — multi-runtime version manager | gh release | 1.0.2 | | [astral.sh/uv](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/astral.sh-uv) | `uv`/`uvx` — fast Python package and project manager | gh release | 1.0.4 | | [atuin.sh](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/atuin.sh) | `atuin` — shell history sync and search | gh release | 1.0.3 | @@ -20,21 +21,22 @@ | [biomejs.dev](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/biomejs.dev) | `biome` — fast JS/TS formatter and linter | gh release | 1.0.1 | | [btop](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/btop) | `btop` — resource monitor (CPU, memory, network, processes) | gh release | 1.0.3 | | [bun.sh](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/bun.sh) | `bun` — fast JS runtime and package manager | curl | 1.0.0 | -| [c-cpp-dev-collection](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/c-cpp-dev-collection) | C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy | meta | 1.0.0 | -| [ccache](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ccache) | `ccache` — compiler cache for faster C/C++ recompilation | apt | 1.0.0 | +| [c-cpp-dev-collection](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/c-cpp-dev-collection) | C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy, distcc, vcpkg, build-essential | meta | 1.0.0 | +| [ccache.dev](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ccache.dev) | `ccache` — compiler cache for faster C/C++ recompilation | apt | 1.0.0 | | [charmbracelet/gum](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/charmbracelet-gum) | `gum` — building blocks for shell scripts | gh release | 1.0.4 | | [chezmoi.io](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/chezmoi.io) | `chezmoi` — dotfiles manager across machines | gh release | 1.0.2 | | [clang-format](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/clang-format) | `clang-format` — C/C++ code formatter from the LLVM project | apt | 1.0.0 | | [clang-tidy](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/clang-tidy) | `clang-tidy` — C++ linter and static analyzer from LLVM | apt | 1.0.0 | | [cloudflare.com/warp-cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cloudflare.com-warp-cli) | `warp-cli` — Cloudflare WARP VPN client | curl | 1.0.1 | -| [cmake](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cmake) | `cmake` — cross-platform build system generator | apt | 1.0.0 | -| [cppcheck](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cppcheck) | `cppcheck` — static analysis tool for C/C++ code | apt | 1.0.0 | +| [cmake.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cmake.org) | `cmake` — cross-platform build system generator | apt | 1.0.0 | | [critique.work](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/critique.work) | `critique` — TUI for reviewing git changes | bun | 1.0.0 | +| [danmar/cppcheck](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/danmar-cppcheck) | `cppcheck` — static analysis tool for C/C++ code | apt | 1.0.0 | | [delta](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/delta) | `delta` — syntax-highlighting pager for git diffs | gh release | 1.0.1 | | [deno.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/deno.com) | `deno` — secure TypeScript/JavaScript runtime | curl | 1.0.0 | | [devenv.sh](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/devenv.sh) | `devenv` — reproducible developer environments via Nix | nix | 1.0.0 | | [diffity.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/diffity.com) | `diffity` — agent-agnostic GitHub-style diff viewer and code review tool | npm | 1.0.0 | | [direnv.net](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/direnv.net) | `direnv` — environment switcher that loads and unloads variables based on the current directory | apt | 1.0.0 | +| [distcc.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/distcc.org) | `distcc` — distributed C/C++ compiler for faster parallel builds | apt | 1.0.0 | | [dolthub.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/dolthub.com) | `dolt` — SQL database with Git-style versioning | gh release | 1.0.0 | | [dolthub.com/doltgres](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/dolthub.com-doltgres) | `doltgres` — version-controlled PostgreSQL-compatible database | gh release | 1.0.0 | | [dotenv.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/dotenv.org) | `dotenvx` — better dotenv with multi-environment and encrypted secrets support | bun | 1.0.0 | @@ -43,7 +45,6 @@ | [fd](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/fd) | `fd` — fast and user-friendly file finder | gh release | 1.0.1 | | [feature-installer](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/feature-installer) | `feature-installer` — install devcontainer features at runtime | curl | 1.0.0 | | [fzf](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/fzf) | `fzf` — general-purpose command-line fuzzy finder | gh release | 1.0.0 | -| [gdb](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/gdb) | `gdb` — GNU debugger for C/C++ and other languages | apt | 1.0.0 | | [getdnote.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/getdnote.com) | `dnote` — simple command-line notebook for developers | gh release | 1.0.0 | | [github.com/cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/github.com-cli) | `gh` — GitHub CLI | curl | 1.0.1 | | [helix-editor.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/helix-editor.com) | `hx` — modal text editor with built-in LSP | gh release | 1.0.0 | @@ -60,7 +61,7 @@ | [memvid.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/memvid.com) | `memvid` — video-based memory for AI applications | npm | 1.0.0 | | [mosh.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/mosh.org) | `mosh` — SSH replacement with roaming support | apt | 1.0.0 | | [neovim.io](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/neovim.io) | `nvim` — hyperextensible Vim-based text editor | gh release | 1.0.1 | -| [ninja](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ninja) | `ninja` — small build system with a focus on speed | apt | 1.0.0 | +| [ninja-build.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ninja-build.org) | `ninja` — small build system with a focus on speed | apt | 1.0.0 | | [nixos.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/nixos.org) | `nix` — the Nix package manager | curl | 1.0.0 | | [nvidia.com/cuda](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/nvidia.com-cuda) | NVIDIA CUDA Toolkit for GPU computing | curl | 1.0.0 | | [onecli.sh/cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/onecli.sh-cli) | `onecli` — manage agents, secrets, rules, and configuration from the terminal | gh release | 1.0.1 | @@ -74,6 +75,7 @@ | [schpet/linear-cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/schpet-linear-cli) | `linear` — CLI to access linear.com issue tracker | gh release | 1.0.2 | | [smallstep.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/smallstep.com) | `step` — zero-trust security toolkit and CA | gh release | 1.0.2 | | [socket.dev/sfw-free](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/socket.dev-sfw-free) | `sfw` — network security proxy that blocks malicious dependencies | gh release | 1.0.0 | +| [sourceware.org/gdb](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/sourceware.org-gdb) | `gdb` — GNU debugger for C/C++ and other languages | apt | 1.0.0 | | [sshd](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/sshd) | `sshd` — OpenSSH server running inside the container | apt | 1.0.0 | | [starship.rs](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/starship.rs) | `starship` — minimal, fast cross-shell prompt | gh release | 1.0.2 | | [steveyegge/beads](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/steveyegge-beads) | `bd` — distributed graph issue tracker for AI agents | gh release | 1.0.0 | @@ -82,7 +84,8 @@ | [tailscale.com](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/tailscale.com) | `tailscale` — zero-config mesh VPN | curl | 1.0.0 | | [taskwarrior.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/taskwarrior.org) | `task` — command-line task manager | apt | 1.0.0 | | [turso.tech](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/turso.tech) | `tursodb` — in-process SQL database compatible with SQLite | gh release | 1.0.0 | -| [valgrind](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/valgrind) | `valgrind` — memory error detector and profiler for C/C++ | apt | 1.0.0 | +| [valgrind.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/valgrind.org) | `valgrind` — memory error detector and profiler for C/C++ | apt | 1.0.0 | +| [vcpkg.io](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/vcpkg.io) | `vcpkg` — C/C++ package manager by Microsoft | git | 1.0.0 | | [webinstall.dev](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/webinstall.dev) | `webi` — install packages without sudo | curl | 1.0.1 | | [yakitrak/notesmd-cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/yakitrak-notesmd-cli) | `notesmd-cli` — manage Obsidian vaults from the terminal | gh release | 1.0.0 | | [yq](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/yq) | `yq` — command-line YAML/JSON/XML processor | gh release | 1.0.1 | diff --git a/src/apt-build-essential/NOTES.md b/src/apt-build-essential/NOTES.md new file mode 100644 index 0000000..bb216c8 --- /dev/null +++ b/src/apt-build-essential/NOTES.md @@ -0,0 +1,17 @@ +# apt-build-essential + +## Project + +- [build-essential](https://packages.debian.org/build-essential) + +## Description + +Installs the `build-essential` Debian/Ubuntu meta-package, which brings in `gcc`, `g++`, `make`, and the standard C/C++ header files needed to compile most software from source. + +## Installation Method + +Installed via the system APT package manager (`apt-get install build-essential`). + +## Other Notes + +_No additional notes._ diff --git a/src/apt-build-essential/devcontainer-feature.json b/src/apt-build-essential/devcontainer-feature.json new file mode 100644 index 0000000..527df78 --- /dev/null +++ b/src/apt-build-essential/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "apt-build-essential", + "id": "apt-build-essential", + "version": "1.0.0", + "description": "Install \"build-essential\" apt package (gcc, g++, make)", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/apt-build-essential" +} diff --git a/src/apt-build-essential/install.sh b/src/apt-build-essential/install.sh new file mode 100755 index 0000000..b700d1b --- /dev/null +++ b/src/apt-build-essential/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="build-essential" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall build-essential + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/c-cpp-dev-collection/NOTES.md b/src/c-cpp-dev-collection/NOTES.md index c0384b6..964d15e 100644 --- a/src/c-cpp-dev-collection/NOTES.md +++ b/src/c-cpp-dev-collection/NOTES.md @@ -6,7 +6,7 @@ ## Description -A meta-feature that installs a curated set of popular C/C++ development tools in one go. Installing this feature brings in: `cmake`, `ninja`, `gdb`, `valgrind`, `ccache`, `cppcheck`, `clang-format`, and `clang-tidy`. +A meta-feature that installs a curated set of popular C/C++ development tools in one go. Installing this feature brings in: `cmake`, `ninja`, `gdb`, `valgrind`, `ccache`, `cppcheck`, `clang-format`, `clang-tidy`, `distcc`, `vcpkg`, and `build-essential`. ## Installation Method diff --git a/src/c-cpp-dev-collection/devcontainer-feature.json b/src/c-cpp-dev-collection/devcontainer-feature.json index 0dce46f..533c370 100644 --- a/src/c-cpp-dev-collection/devcontainer-feature.json +++ b/src/c-cpp-dev-collection/devcontainer-feature.json @@ -2,16 +2,19 @@ "name": "c-cpp-dev-collection", "id": "c-cpp-dev-collection", "version": "1.0.0", - "description": "C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy", + "description": "C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy, distcc, vcpkg, build-essential", "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/c-cpp-dev-collection", "dependsOn": { - "ghcr.io/devcontainer-community/features/cmake:1": {}, - "ghcr.io/devcontainer-community/features/ninja:1": {}, - "ghcr.io/devcontainer-community/features/gdb:1": {}, - "ghcr.io/devcontainer-community/features/valgrind:1": {}, - "ghcr.io/devcontainer-community/features/ccache:1": {}, - "ghcr.io/devcontainer-community/features/cppcheck:1": {}, + "ghcr.io/devcontainer-community/features/cmake.org:1": {}, + "ghcr.io/devcontainer-community/features/ninja-build.org:1": {}, + "ghcr.io/devcontainer-community/features/sourceware.org-gdb:1": {}, + "ghcr.io/devcontainer-community/features/valgrind.org:1": {}, + "ghcr.io/devcontainer-community/features/ccache.dev:1": {}, + "ghcr.io/devcontainer-community/features/danmar-cppcheck:1": {}, "ghcr.io/devcontainer-community/features/clang-format:1": {}, - "ghcr.io/devcontainer-community/features/clang-tidy:1": {} + "ghcr.io/devcontainer-community/features/clang-tidy:1": {}, + "ghcr.io/devcontainer-community/features/distcc.org:1": {}, + "ghcr.io/devcontainer-community/features/vcpkg.io:1": {}, + "ghcr.io/devcontainer-community/features/apt-build-essential:1": {} } } diff --git a/src/ccache/NOTES.md b/src/ccache.dev/NOTES.md similarity index 100% rename from src/ccache/NOTES.md rename to src/ccache.dev/NOTES.md diff --git a/src/ccache/devcontainer-feature.json b/src/ccache.dev/devcontainer-feature.json similarity index 58% rename from src/ccache/devcontainer-feature.json rename to src/ccache.dev/devcontainer-feature.json index 7224d09..8021218 100644 --- a/src/ccache/devcontainer-feature.json +++ b/src/ccache.dev/devcontainer-feature.json @@ -1,7 +1,7 @@ { - "name": "ccache", - "id": "ccache", + "name": "ccache.dev", + "id": "ccache.dev", "version": "1.0.0", "description": "Install \"ccache\" binary", - "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ccache" + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ccache.dev" } diff --git a/src/ccache/install.sh b/src/ccache.dev/install.sh similarity index 100% rename from src/ccache/install.sh rename to src/ccache.dev/install.sh diff --git a/src/cmake/NOTES.md b/src/cmake.org/NOTES.md similarity index 100% rename from src/cmake/NOTES.md rename to src/cmake.org/NOTES.md diff --git a/src/cmake/devcontainer-feature.json b/src/cmake.org/devcontainer-feature.json similarity index 58% rename from src/cmake/devcontainer-feature.json rename to src/cmake.org/devcontainer-feature.json index 54bd76f..2b1775b 100644 --- a/src/cmake/devcontainer-feature.json +++ b/src/cmake.org/devcontainer-feature.json @@ -1,7 +1,7 @@ { - "name": "cmake", - "id": "cmake", + "name": "cmake.org", + "id": "cmake.org", "version": "1.0.0", "description": "Install \"cmake\" binary", - "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cmake" + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cmake.org" } diff --git a/src/cmake/install.sh b/src/cmake.org/install.sh similarity index 100% rename from src/cmake/install.sh rename to src/cmake.org/install.sh diff --git a/src/cppcheck/NOTES.md b/src/danmar-cppcheck/NOTES.md similarity index 100% rename from src/cppcheck/NOTES.md rename to src/danmar-cppcheck/NOTES.md diff --git a/src/cppcheck/devcontainer-feature.json b/src/danmar-cppcheck/devcontainer-feature.json similarity index 55% rename from src/cppcheck/devcontainer-feature.json rename to src/danmar-cppcheck/devcontainer-feature.json index ae5a954..e226906 100644 --- a/src/cppcheck/devcontainer-feature.json +++ b/src/danmar-cppcheck/devcontainer-feature.json @@ -1,7 +1,7 @@ { - "name": "cppcheck", - "id": "cppcheck", + "name": "danmar/cppcheck", + "id": "danmar-cppcheck", "version": "1.0.0", "description": "Install \"cppcheck\" binary", - "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cppcheck" + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/danmar-cppcheck" } diff --git a/src/cppcheck/install.sh b/src/danmar-cppcheck/install.sh similarity index 100% rename from src/cppcheck/install.sh rename to src/danmar-cppcheck/install.sh diff --git a/src/distcc.org/NOTES.md b/src/distcc.org/NOTES.md new file mode 100644 index 0000000..340dbbe --- /dev/null +++ b/src/distcc.org/NOTES.md @@ -0,0 +1,17 @@ +# distcc.org + +## Project + +- [distcc](https://distcc.github.io) + +## Description + +A distributed C/C++ compiler that speeds up compilation by distributing build jobs across multiple machines on a network. distcc runs on the local machine alongside a regular compiler, offloading compilation to remote machines running the `distccd` daemon. + +## Installation Method + +Installed via the system APT package manager (`apt-get install distcc`). + +## Other Notes + +_No additional notes._ diff --git a/src/distcc.org/devcontainer-feature.json b/src/distcc.org/devcontainer-feature.json new file mode 100644 index 0000000..f3b9cd7 --- /dev/null +++ b/src/distcc.org/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "distcc.org", + "id": "distcc.org", + "version": "1.0.0", + "description": "Install \"distcc\" binary", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/distcc.org" +} diff --git a/src/distcc.org/install.sh b/src/distcc.org/install.sh new file mode 100755 index 0000000..03c0a65 --- /dev/null +++ b/src/distcc.org/install.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="distcc" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall distcc + apt_get_cleanup +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/src/ninja/NOTES.md b/src/ninja-build.org/NOTES.md similarity index 100% rename from src/ninja/NOTES.md rename to src/ninja-build.org/NOTES.md diff --git a/src/ninja/devcontainer-feature.json b/src/ninja-build.org/devcontainer-feature.json similarity index 54% rename from src/ninja/devcontainer-feature.json rename to src/ninja-build.org/devcontainer-feature.json index 1077234..ad913aa 100644 --- a/src/ninja/devcontainer-feature.json +++ b/src/ninja-build.org/devcontainer-feature.json @@ -1,7 +1,7 @@ { - "name": "ninja", - "id": "ninja", + "name": "ninja-build.org", + "id": "ninja-build.org", "version": "1.0.0", "description": "Install \"ninja\" binary", - "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ninja" + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ninja-build.org" } diff --git a/src/ninja/install.sh b/src/ninja-build.org/install.sh similarity index 100% rename from src/ninja/install.sh rename to src/ninja-build.org/install.sh diff --git a/src/gdb/NOTES.md b/src/sourceware.org-gdb/NOTES.md similarity index 100% rename from src/gdb/NOTES.md rename to src/sourceware.org-gdb/NOTES.md diff --git a/src/gdb/devcontainer-feature.json b/src/sourceware.org-gdb/devcontainer-feature.json similarity index 52% rename from src/gdb/devcontainer-feature.json rename to src/sourceware.org-gdb/devcontainer-feature.json index 968919e..fdb1f29 100644 --- a/src/gdb/devcontainer-feature.json +++ b/src/sourceware.org-gdb/devcontainer-feature.json @@ -1,7 +1,7 @@ { - "name": "gdb", - "id": "gdb", + "name": "sourceware.org/gdb", + "id": "sourceware.org-gdb", "version": "1.0.0", "description": "Install \"gdb\" binary", - "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/gdb" + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/sourceware.org-gdb" } diff --git a/src/gdb/install.sh b/src/sourceware.org-gdb/install.sh similarity index 100% rename from src/gdb/install.sh rename to src/sourceware.org-gdb/install.sh diff --git a/src/valgrind/NOTES.md b/src/valgrind.org/NOTES.md similarity index 100% rename from src/valgrind/NOTES.md rename to src/valgrind.org/NOTES.md diff --git a/src/valgrind/devcontainer-feature.json b/src/valgrind.org/devcontainer-feature.json similarity index 57% rename from src/valgrind/devcontainer-feature.json rename to src/valgrind.org/devcontainer-feature.json index 70c0c9c..255c496 100644 --- a/src/valgrind/devcontainer-feature.json +++ b/src/valgrind.org/devcontainer-feature.json @@ -1,7 +1,7 @@ { - "name": "valgrind", - "id": "valgrind", + "name": "valgrind.org", + "id": "valgrind.org", "version": "1.0.0", "description": "Install \"valgrind\" binary", - "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/valgrind" + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/valgrind.org" } diff --git a/src/valgrind/install.sh b/src/valgrind.org/install.sh similarity index 100% rename from src/valgrind/install.sh rename to src/valgrind.org/install.sh diff --git a/src/vcpkg.io/NOTES.md b/src/vcpkg.io/NOTES.md new file mode 100644 index 0000000..16ad3fe --- /dev/null +++ b/src/vcpkg.io/NOTES.md @@ -0,0 +1,17 @@ +# vcpkg.io + +## Project + +- [vcpkg](https://vcpkg.io) + +## Description + +An open-source C/C++ package manager by Microsoft that simplifies acquiring and building open-source libraries. vcpkg integrates with CMake and MSBuild and supports thousands of packages across Windows, Linux, and macOS. + +## Installation Method + +Clones the official [microsoft/vcpkg](https://github.com/microsoft/vcpkg) repository to `/usr/local/share/vcpkg` and runs the `bootstrap-vcpkg.sh` script. The `vcpkg` binary is symlinked to `/usr/local/bin/vcpkg`. + +## Other Notes + +_No additional notes._ diff --git a/src/vcpkg.io/devcontainer-feature.json b/src/vcpkg.io/devcontainer-feature.json new file mode 100644 index 0000000..62018bd --- /dev/null +++ b/src/vcpkg.io/devcontainer-feature.json @@ -0,0 +1,7 @@ +{ + "name": "vcpkg.io", + "id": "vcpkg.io", + "version": "1.0.0", + "description": "Install vcpkg C/C++ package manager", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/vcpkg.io" +} diff --git a/src/vcpkg.io/install.sh b/src/vcpkg.io/install.sh new file mode 100755 index 0000000..8c26f70 --- /dev/null +++ b/src/vcpkg.io/install.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o noclobber +set -o nounset +set -o allexport +readonly name="vcpkg" +readonly vcpkgRoot="/usr/local/share/vcpkg" +apt_get_update() { + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then + echo "Running apt-get update..." + apt-get update -y + fi +} +apt_get_checkinstall() { + if ! dpkg -s "$@" >/dev/null 2>&1; then + apt_get_update + DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@" + fi +} +apt_get_cleanup() { + apt-get clean + rm -rf /var/lib/apt/lists/* +} +echo_banner() { + local text="$1" + echo -e "\e[1m\e[97m\e[41m$text\e[0m" +} +install() { + apt_get_checkinstall git curl ca-certificates cmake g++ zip unzip pkg-config + apt_get_cleanup + git clone https://github.com/microsoft/vcpkg "$vcpkgRoot" + "$vcpkgRoot/bootstrap-vcpkg.sh" -disableMetrics + ln -s "$vcpkgRoot/vcpkg" /usr/local/bin/vcpkg +} +echo_banner "devcontainer.community" +echo "Installing $name..." +install "$@" +echo "(*) Done!" diff --git a/test/apt-build-essential/test.sh b/test/apt-build-essential/test.sh new file mode 100755 index 0000000..59c75af --- /dev/null +++ b/test/apt-build-essential/test.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "gcc installed" bash -c "gcc --version | grep 'gcc'" +check "g++ installed" bash -c "g++ --version | grep 'g++'" +check "make installed" bash -c "make --version | grep 'make'" + +reportResults diff --git a/test/c-cpp-dev-collection/test.sh b/test/c-cpp-dev-collection/test.sh index 9be8c9d..f7708e0 100755 --- a/test/c-cpp-dev-collection/test.sh +++ b/test/c-cpp-dev-collection/test.sh @@ -12,5 +12,8 @@ check "ccache installed" bash -c "ccache --version | grep 'ccache'" check "cppcheck installed" bash -c "cppcheck --version | grep 'Cppcheck'" check "clang-format installed" bash -c "clang-format --version | grep 'clang-format'" check "clang-tidy installed" bash -c "clang-tidy --version | grep 'LLVM'" +check "distcc installed" bash -c "distcc --version | grep 'distcc'" +check "vcpkg installed" bash -c "vcpkg version | grep 'vcpkg'" +check "gcc installed" bash -c "gcc --version | grep 'gcc'" reportResults diff --git a/test/ccache/test.sh b/test/ccache.dev/test.sh similarity index 100% rename from test/ccache/test.sh rename to test/ccache.dev/test.sh diff --git a/test/cmake/test.sh b/test/cmake.org/test.sh similarity index 100% rename from test/cmake/test.sh rename to test/cmake.org/test.sh diff --git a/test/cppcheck/test.sh b/test/danmar-cppcheck/test.sh similarity index 100% rename from test/cppcheck/test.sh rename to test/danmar-cppcheck/test.sh diff --git a/test/distcc.org/test.sh b/test/distcc.org/test.sh new file mode 100755 index 0000000..b8255d5 --- /dev/null +++ b/test/distcc.org/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "distcc --version | grep 'distcc'" + +reportResults diff --git a/test/ninja/test.sh b/test/ninja-build.org/test.sh similarity index 100% rename from test/ninja/test.sh rename to test/ninja-build.org/test.sh diff --git a/test/gdb/test.sh b/test/sourceware.org-gdb/test.sh similarity index 100% rename from test/gdb/test.sh rename to test/sourceware.org-gdb/test.sh diff --git a/test/valgrind/test.sh b/test/valgrind.org/test.sh similarity index 100% rename from test/valgrind/test.sh rename to test/valgrind.org/test.sh diff --git a/test/vcpkg.io/test.sh b/test/vcpkg.io/test.sh new file mode 100755 index 0000000..b106c55 --- /dev/null +++ b/test/vcpkg.io/test.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "vcpkg version | grep 'vcpkg'" + +reportResults From a8526d8d03da88ec179a42c77d697cdfa784cee1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:57:05 +0000 Subject: [PATCH 4/5] Rename c-cpp-dev-collection to collection-c-cpp Agent-Logs-Url: https://github.com/devcontainer-community/devcontainer-features/sessions/6d4c3756-5ee2-486e-90a8-2dbe79517c18 Co-authored-by: sebst <592313+sebst@users.noreply.github.com> --- README.md | 2 +- src/{c-cpp-dev-collection => collection-c-cpp}/NOTES.md | 2 +- .../devcontainer-feature.json | 6 +++--- src/{c-cpp-dev-collection => collection-c-cpp}/install.sh | 0 test/{c-cpp-dev-collection => collection-c-cpp}/test.sh | 0 5 files changed, 5 insertions(+), 5 deletions(-) rename src/{c-cpp-dev-collection => collection-c-cpp}/NOTES.md (96%) rename src/{c-cpp-dev-collection => collection-c-cpp}/devcontainer-feature.json (88%) rename src/{c-cpp-dev-collection => collection-c-cpp}/install.sh (100%) rename test/{c-cpp-dev-collection => collection-c-cpp}/test.sh (100%) diff --git a/README.md b/README.md index 93d7125..84d19e9 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ | [biomejs.dev](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/biomejs.dev) | `biome` — fast JS/TS formatter and linter | gh release | 1.0.1 | | [btop](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/btop) | `btop` — resource monitor (CPU, memory, network, processes) | gh release | 1.0.3 | | [bun.sh](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/bun.sh) | `bun` — fast JS runtime and package manager | curl | 1.0.0 | -| [c-cpp-dev-collection](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/c-cpp-dev-collection) | C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy, distcc, vcpkg, build-essential | meta | 1.0.0 | | [ccache.dev](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/ccache.dev) | `ccache` — compiler cache for faster C/C++ recompilation | apt | 1.0.0 | | [charmbracelet/gum](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/charmbracelet-gum) | `gum` — building blocks for shell scripts | gh release | 1.0.4 | | [chezmoi.io](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/chezmoi.io) | `chezmoi` — dotfiles manager across machines | gh release | 1.0.2 | @@ -29,6 +28,7 @@ | [clang-tidy](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/clang-tidy) | `clang-tidy` — C++ linter and static analyzer from LLVM | apt | 1.0.0 | | [cloudflare.com/warp-cli](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cloudflare.com-warp-cli) | `warp-cli` — Cloudflare WARP VPN client | curl | 1.0.1 | | [cmake.org](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/cmake.org) | `cmake` — cross-platform build system generator | apt | 1.0.0 | +| [collection-c-cpp](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/collection-c-cpp) | C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy, distcc, vcpkg, build-essential | meta | 1.0.0 | | [critique.work](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/critique.work) | `critique` — TUI for reviewing git changes | bun | 1.0.0 | | [danmar/cppcheck](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/danmar-cppcheck) | `cppcheck` — static analysis tool for C/C++ code | apt | 1.0.0 | | [delta](https://github.com/devcontainer-community/devcontainer-features/tree/main/src/delta) | `delta` — syntax-highlighting pager for git diffs | gh release | 1.0.1 | diff --git a/src/c-cpp-dev-collection/NOTES.md b/src/collection-c-cpp/NOTES.md similarity index 96% rename from src/c-cpp-dev-collection/NOTES.md rename to src/collection-c-cpp/NOTES.md index 964d15e..cbcff86 100644 --- a/src/c-cpp-dev-collection/NOTES.md +++ b/src/collection-c-cpp/NOTES.md @@ -1,4 +1,4 @@ -# c-cpp-dev-collection +# collection-c-cpp ## Project diff --git a/src/c-cpp-dev-collection/devcontainer-feature.json b/src/collection-c-cpp/devcontainer-feature.json similarity index 88% rename from src/c-cpp-dev-collection/devcontainer-feature.json rename to src/collection-c-cpp/devcontainer-feature.json index 533c370..48305ed 100644 --- a/src/c-cpp-dev-collection/devcontainer-feature.json +++ b/src/collection-c-cpp/devcontainer-feature.json @@ -1,9 +1,9 @@ { - "name": "c-cpp-dev-collection", - "id": "c-cpp-dev-collection", + "name": "collection-c-cpp", + "id": "collection-c-cpp", "version": "1.0.0", "description": "C/C++ dev collection — cmake, ninja, gdb, valgrind, ccache, cppcheck, clang-format, clang-tidy, distcc, vcpkg, build-essential", - "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/c-cpp-dev-collection", + "documentationURL": "https://github.com/devcontainer-community/devcontainer-features/tree/main/src/collection-c-cpp", "dependsOn": { "ghcr.io/devcontainer-community/features/cmake.org:1": {}, "ghcr.io/devcontainer-community/features/ninja-build.org:1": {}, diff --git a/src/c-cpp-dev-collection/install.sh b/src/collection-c-cpp/install.sh similarity index 100% rename from src/c-cpp-dev-collection/install.sh rename to src/collection-c-cpp/install.sh diff --git a/test/c-cpp-dev-collection/test.sh b/test/collection-c-cpp/test.sh similarity index 100% rename from test/c-cpp-dev-collection/test.sh rename to test/collection-c-cpp/test.sh From a27e011d6d98d0c3296ca5d2a118c10090832981 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 26 Mar 2026 17:03:24 +0000 Subject: [PATCH 5/5] Fix apt-build-essential test: use case-insensitive grep for make version check Agent-Logs-Url: https://github.com/devcontainer-community/devcontainer-features/sessions/3cc00b11-4009-4e23-8007-8d89519324a0 Co-authored-by: sebst <592313+sebst@users.noreply.github.com> --- test/apt-build-essential/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/apt-build-essential/test.sh b/test/apt-build-essential/test.sh index 59c75af..9255621 100755 --- a/test/apt-build-essential/test.sh +++ b/test/apt-build-essential/test.sh @@ -6,6 +6,6 @@ source dev-container-features-test-lib check "gcc installed" bash -c "gcc --version | grep 'gcc'" check "g++ installed" bash -c "g++ --version | grep 'g++'" -check "make installed" bash -c "make --version | grep 'make'" +check "make installed" bash -c "make --version | grep -i 'make'" reportResults