From 9d1f52b313bea1a707039180f72749daae5bfeb1 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Sat, 19 Oct 2024 14:56:41 +0000 Subject: [PATCH 1/5] feat: add cpm package manager to amp-devcontainer-cpp --- .devcontainer/cpp/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.devcontainer/cpp/Dockerfile b/.devcontainer/cpp/Dockerfile index 829a5c64..f53f6b1b 100644 --- a/.devcontainer/cpp/Dockerfile +++ b/.devcontainer/cpp/Dockerfile @@ -3,6 +3,7 @@ FROM ubuntu:24.04@sha256:ab64a8382e935382638764d8719362bb50ee418d944c1f3d26e0c99 ARG BATS_VERSION=1.11.0 ARG CCACHE_VERSION=4.10.1 ARG CLANG_VERSION=17 +ARG CPM_VERSION=0.40.2 ARG DOCKER_VERSION=27.3.1 ARG MULL_VERSION=0.22.0 ARG INCLUDE_WHAT_YOU_USE_VERSION=0.21 @@ -36,6 +37,9 @@ ENV CMAKE_GENERATOR="Ninja" ENV CMAKE_EXPORT_COMPILE_COMMANDS="On" ENV CCACHE_DIR=/root/.ccache +# Install CPM.cmake to the CMake module path +RUN wget -qP /usr/local/lib/python*/dist-packages/cmake/data/share/cmake-*/Modules/ https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_VERSION}/CPM.cmake + # Install clang toolchain COPY .devcontainer/cpp/apt-requirements-clang.json /tmp/apt-requirements-clang.json # hadolint ignore=SC1091 From 6634aa30c4003482211e432a818da230d3713401 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Sun, 20 Oct 2024 08:32:32 +0000 Subject: [PATCH 2/5] test: add test for CPM package manager --- .devcontainer/cpp/test/CMakeLists.txt | 1 + .devcontainer/cpp/test/CMakePresets.json | 12 ++++++++++++ .../cpp/test/package-managers/CMakeLists.txt | 1 + .../cpp/test/package-managers/cpm/CMakeLists.txt | 8 ++++++++ .devcontainer/cpp/test/package-managers/cpm/main.cpp | 7 +++++++ .devcontainer/cpp/test/testsuite.bats | 5 +++++ 6 files changed, 34 insertions(+) create mode 100644 .devcontainer/cpp/test/package-managers/CMakeLists.txt create mode 100644 .devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt create mode 100644 .devcontainer/cpp/test/package-managers/cpm/main.cpp diff --git a/.devcontainer/cpp/test/CMakeLists.txt b/.devcontainer/cpp/test/CMakeLists.txt index b565a590..8d7f84c4 100644 --- a/.devcontainer/cpp/test/CMakeLists.txt +++ b/.devcontainer/cpp/test/CMakeLists.txt @@ -9,5 +9,6 @@ add_subdirectory(clang-tools) add_subdirectory(fuzzing) add_subdirectory(gcc) add_subdirectory(gcc-arm-none-eabi) +add_subdirectory(package-managers) add_subdirectory(sanitizers) add_subdirectory(test) diff --git a/.devcontainer/cpp/test/CMakePresets.json b/.devcontainer/cpp/test/CMakePresets.json index 400bb40c..31e2f5cc 100644 --- a/.devcontainer/cpp/test/CMakePresets.json +++ b/.devcontainer/cpp/test/CMakePresets.json @@ -36,6 +36,13 @@ "ENABLE_COVERAGE_TEST": "On" } }, + { + "name": "cpm", + "inherits": "defaults", + "cacheVariables": { + "ENABLE_CPM_TEST": "On" + } + }, { "name": "gcc", "inherits": "defaults" @@ -81,6 +88,11 @@ "configurePreset": "coverage", "targets": ["test-coverage"] }, + { + "name": "cpm", + "configurePreset": "cpm", + "targets": ["cpm-test"] + }, { "name": "fuzzing", "configurePreset": "clang", diff --git a/.devcontainer/cpp/test/package-managers/CMakeLists.txt b/.devcontainer/cpp/test/package-managers/CMakeLists.txt new file mode 100644 index 00000000..4bf6afbe --- /dev/null +++ b/.devcontainer/cpp/test/package-managers/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(cpm) diff --git a/.devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt b/.devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt new file mode 100644 index 00000000..7070d6c9 --- /dev/null +++ b/.devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt @@ -0,0 +1,8 @@ +if (ENABLE_CPM_TEST) + include(CPM) + + CPMAddPackage("gh:fmtlib/fmt#11.0.2") + + add_executable(cpm-test EXCLUDE_FROM_ALL main.cpp) + target_link_libraries(cpm-test PRIVATE fmt::fmt) +endif() diff --git a/.devcontainer/cpp/test/package-managers/cpm/main.cpp b/.devcontainer/cpp/test/package-managers/cpm/main.cpp new file mode 100644 index 00000000..80620a0c --- /dev/null +++ b/.devcontainer/cpp/test/package-managers/cpm/main.cpp @@ -0,0 +1,7 @@ +#include + +int main() +{ + fmt::print("Hello, world!\n"); + return 0; +} diff --git a/.devcontainer/cpp/test/testsuite.bats b/.devcontainer/cpp/test/testsuite.bats index 8747db53..9081f7e3 100644 --- a/.devcontainer/cpp/test/testsuite.bats +++ b/.devcontainer/cpp/test/testsuite.bats @@ -170,6 +170,11 @@ teardown() { build_and_run_with_sanitizers clang } +@test "using CPM as package manager should resolve external dependencies" { + cmake --preset cpm + cmake --build --preset cpm +} + function configure_and_build_with_ccache() { local PRESET=${1:?} From c35a3395fdea89c6787227d362080340a5a56aef Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Sun, 20 Oct 2024 08:40:21 +0000 Subject: [PATCH 3/5] docs: add update hint to cron issue --- .github/workflows/issue-creation-tool-versions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/issue-creation-tool-versions.yml b/.github/workflows/issue-creation-tool-versions.yml index 8fd45b16..0fdbe012 100644 --- a/.github/workflows/issue-creation-tool-versions.yml +++ b/.github/workflows/issue-creation-tool-versions.yml @@ -55,6 +55,7 @@ jobs: - [ ] The [ARM GNU](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads) toolchain is up to date and matches with the GCC version - [ ] The [Clang toolchain](https://apt.llvm.org/) is up to date + - [ ] The [CPM](https://github.com/cpm-cmake/CPM.cmake) package manager is up to date - [ ] The [Docker cli](https://download.docker.com/linux/static/stable/) is up to date - [ ] [bats-core](https://github.com/bats-core/bats-core), [bats-support](https://github.com/bats-core/bats-support) and [bats-assert](https://github.com/bats-core/bats-assert) are up to date - [ ] [Mull](https://github.com/mull-project/mull) is up to date and compatible with the currently installed Clang version From f1f83faae986fa77bff42bb9810caad492746bfa Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Mon, 21 Oct 2024 09:27:41 +0200 Subject: [PATCH 4/5] Update .devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt --- .devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt b/.devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt index 7070d6c9..00921bf3 100644 --- a/.devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt +++ b/.devcontainer/cpp/test/package-managers/cpm/CMakeLists.txt @@ -3,6 +3,6 @@ if (ENABLE_CPM_TEST) CPMAddPackage("gh:fmtlib/fmt#11.0.2") - add_executable(cpm-test EXCLUDE_FROM_ALL main.cpp) - target_link_libraries(cpm-test PRIVATE fmt::fmt) + add_executable(test-cpm EXCLUDE_FROM_ALL main.cpp) + target_link_libraries(test-cpm PRIVATE fmt::fmt) endif() From 3b2ee8281b9ba7ae6e21f07087d35af36f24923a Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Mon, 21 Oct 2024 09:32:16 +0200 Subject: [PATCH 5/5] Update .devcontainer/cpp/test/CMakePresets.json --- .devcontainer/cpp/test/CMakePresets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/cpp/test/CMakePresets.json b/.devcontainer/cpp/test/CMakePresets.json index 31e2f5cc..ed8edf11 100644 --- a/.devcontainer/cpp/test/CMakePresets.json +++ b/.devcontainer/cpp/test/CMakePresets.json @@ -91,7 +91,7 @@ { "name": "cpm", "configurePreset": "cpm", - "targets": ["cpm-test"] + "targets": ["test-cpm"] }, { "name": "fuzzing",