diff --git a/.devcontainer/ubuntu-24.04/Dockerfile b/.devcontainer/ubuntu-24.04/Dockerfile new file mode 100644 index 000000000..9883f5a25 --- /dev/null +++ b/.devcontainer/ubuntu-24.04/Dockerfile @@ -0,0 +1,21 @@ +FROM ubuntu:24.04 + +ARG CMAKE_VERSION="3.26.4" + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get -y install \ + build-essential \ + curl \ + gdb \ + less \ + ninja-build \ + git + +RUN curl -L -o cmake.tgz https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(arch).tar.gz && \ + tar -xf cmake.tgz -C /opt && \ + mv /opt/cmake-${CMAKE_VERSION}-linux-$(arch) /opt/cmake-${CMAKE_VERSION} + +ENV PATH=$PATH:/opt/cmake-${CMAKE_VERSION}/bin + +CMD ["/bin/bash"] diff --git a/.devcontainer/ubuntu-24.04/devcontainer.json b/.devcontainer/ubuntu-24.04/devcontainer.json new file mode 100644 index 000000000..3bc8ee459 --- /dev/null +++ b/.devcontainer/ubuntu-24.04/devcontainer.json @@ -0,0 +1,13 @@ +{ + "name": "Ubuntu-24.04", + "build": { "dockerfile": "Dockerfile" }, + + "customizations": { + "vscode": { + "extensions": [ + "ms-vscode.cpptools", + "ms-vscode.cpptools-extension-pack" + ] + } + } + } diff --git a/.github/.cppcheck_suppressions b/.github/.cppcheck_suppressions index cfb00bf2a..e84a51457 100644 --- a/.github/.cppcheck_suppressions +++ b/.github/.cppcheck_suppressions @@ -1,6 +1,11 @@ # we are not calling these methods directly # false positive unusedFunction:libs/xmltree/src/XMLTree.cpp:47 +unusedFunction:libs/xmlschemachecker/src/XmlErrorHandler.cpp:17 +unusedFunction:libs/xmlschemachecker/src/XmlErrorHandler.cpp:22 unusedFunction:libs/xmlschemachecker/src/XmlErrorHandler.cpp:27 unusedFunction:libs/xmlschemachecker/src/XmlErrorHandler.cpp:32 +unusedFunction:libs/ymltree/src/YmlTreeParserInterface.h:56 +unusedFunction:tools/ctrace/src/decode/OpenCsdPacketCollector.cpp:141 +unusedFunction:tools/ctrace/src/decode/OpenCsdPacketCollector.cpp:177 unusedFunction:tools/projmgr/src/ProjMgrRpcServer.cpp diff --git a/.github/matrix_includes_buildmgr.json b/.github/matrix_includes_buildmgr.json index 5f550492c..3ea27ab2e 100644 --- a/.github/matrix_includes_buildmgr.json +++ b/.github/matrix_includes_buildmgr.json @@ -10,7 +10,7 @@ "runOn": "publicRepo" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "amd64", "binary_extension":".lin-amd64", @@ -20,7 +20,7 @@ "runOn": "always" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "arm64", "binary_extension":".lin-arm64", diff --git a/.github/matrix_includes_ctrace.json b/.github/matrix_includes_ctrace.json index 21e94f811..38b83e13e 100644 --- a/.github/matrix_includes_ctrace.json +++ b/.github/matrix_includes_ctrace.json @@ -7,14 +7,14 @@ "runOn": "publicRepo" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "amd64", "binary": "ctrace", "runOn": "always" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "arm64", "binary": "ctrace", diff --git a/.github/matrix_includes_packchk.json b/.github/matrix_includes_packchk.json index 8fb3d7bf0..5417d7259 100644 --- a/.github/matrix_includes_packchk.json +++ b/.github/matrix_includes_packchk.json @@ -7,14 +7,14 @@ "binary": "packchk" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "amd64", "runOn": "always", "binary": "packchk" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "arm64", "runOn": "always", diff --git a/.github/matrix_includes_packgen.json b/.github/matrix_includes_packgen.json index 25dec9fe2..baa6a125f 100644 --- a/.github/matrix_includes_packgen.json +++ b/.github/matrix_includes_packgen.json @@ -7,14 +7,14 @@ "runOn": "publicRepo" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "amd64", "binary": "packgen", "runOn": "always" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "arm64", "binary": "packgen", diff --git a/.github/matrix_includes_projmgr.json b/.github/matrix_includes_projmgr.json index d6147a9af..e79e5bef7 100644 --- a/.github/matrix_includes_projmgr.json +++ b/.github/matrix_includes_projmgr.json @@ -9,7 +9,7 @@ "goswig": false }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "amd64", "binary": "csolution", @@ -18,7 +18,7 @@ "goswig": true }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "arm64", "binary": "csolution", diff --git a/.github/matrix_includes_svdconv.json b/.github/matrix_includes_svdconv.json index 3c105a522..97da5632a 100644 --- a/.github/matrix_includes_svdconv.json +++ b/.github/matrix_includes_svdconv.json @@ -7,14 +7,14 @@ "binary": "svdconv" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "amd64", "runOn": "always", "binary": "svdconv" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "arm64", "runOn": "always", diff --git a/.github/matrix_includes_test_libs.json b/.github/matrix_includes_test_libs.json index 7467fa177..64357b9f5 100644 --- a/.github/matrix_includes_test_libs.json +++ b/.github/matrix_includes_test_libs.json @@ -6,13 +6,13 @@ "runOn": "publicRepo" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "amd64", "runOn": "always" }, { - "runs_on":"ubuntu-22.04", + "runs_on":"ubuntu-24.04", "target":"linux", "arch": "arm64", "runOn": "always" diff --git a/.github/workflows/buildmgr.yml b/.github/workflows/buildmgr.yml index f83ed0302..079af3a5d 100644 --- a/.github/workflows/buildmgr.yml +++ b/.github/workflows/buildmgr.yml @@ -122,7 +122,7 @@ jobs: (github.event_name == 'push') || (github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/buildmgr/')) || ((github.event.schedule != '') && (!github.event.repository.private)) - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 permissions: contents: write @@ -223,7 +223,7 @@ jobs: create_installer: needs: [ setup, build, docs ] # Debian package generation in ubuntu 22.04 produces incompatible metadata - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 permissions: contents: write @@ -501,7 +501,7 @@ jobs: GCC_TOOLCHAIN_ROOT: ${{ github.workspace }}/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin GCC_TOOLCHAIN_10_3_1: ${{ github.workspace }}/${{ matrix.toolchain_root }} AC6_TOOLCHAIN_6_18_0: ${{ github.workspace }}/${{ matrix.toolchain_root }} - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 steps: @@ -666,7 +666,7 @@ jobs: sanity-check-docker: needs: create_installer timeout-minutes: 25 - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 container: image: ${{ matrix.image }} env: @@ -713,7 +713,7 @@ jobs: name: "Publish Tests Results" if: ${{ always() }} needs: [ test ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Harden Runner if: ${{ !github.event.repository.private }} diff --git a/.github/workflows/cpp-linter.yml b/.github/workflows/cpp-linter.yml index da41d7973..31e52958b 100644 --- a/.github/workflows/cpp-linter.yml +++ b/.github/workflows/cpp-linter.yml @@ -29,7 +29,7 @@ jobs: lint: name: cppcheck - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Harden Runner @@ -52,7 +52,7 @@ jobs: --library=.github/cppcheck_googletest.cfg --suppressions-list=.github/.cppcheck_suppressions \ --force -i./external --language=c++ --max-ctu-depth=20 \ --platform=unix64 --std=c++17 --verbose --std=c++17 \ - -i./tools/buildmgr/test -i./tools/packchk/test \ + -i./tools/buildmgr -i./tools/packchk/test \ -i./tools/ctrace/test \ -i./tools/packgen/test -i./tools/projmgr/test \ -i./tools/svdconv/test -i./test \ diff --git a/.github/workflows/ctrace.yml b/.github/workflows/ctrace.yml index 7fa5aee9f..91c31a283 100644 --- a/.github/workflows/ctrace.yml +++ b/.github/workflows/ctrace.yml @@ -109,7 +109,7 @@ jobs: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/ctrace/') needs: [ build, test, coverage ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 permissions: contents: write @@ -242,7 +242,7 @@ jobs: lcov_base: https://github.com/linux-test-project/lcov/releases/download/v1.15 lcov_installer: lcov-1.15.tar.gz lcov_sha256: c1cda2fa33bec9aa2c2c73c87226cfe97de0831887176b45ee523c5e30f8053a - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 steps: - name: Harden Runner @@ -348,7 +348,7 @@ jobs: # A dependent reporting job is otherwise skipped after a test failure. if: ${{ always() }} needs: [ test ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Harden Runner if: ${{ !github.event.repository.private }} diff --git a/.github/workflows/global.yaml b/.github/workflows/global.yaml index bf3405e9a..5954f9b08 100644 --- a/.github/workflows/global.yaml +++ b/.github/workflows/global.yaml @@ -9,7 +9,7 @@ permissions: jobs: copyright: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Harden Runner if: ${{ !github.event.repository.private }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 4c04b307e..f5aaca465 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -56,7 +56,7 @@ jobs: coverage: if: github.repository == 'Open-CMSIS-Pack/devtools' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ buildmgr, ctrace, packchk, packgen, projmgr, svdconv, test_libs ] steps: @@ -100,7 +100,7 @@ jobs: publish-test-results: if: always() && github.repository == 'Open-CMSIS-Pack/devtools' name: Publish Test Results - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [ buildmgr, ctrace, packchk, packgen, projmgr, svdconv, test_libs ] permissions: checks: write diff --git a/.github/workflows/packchk.yml b/.github/workflows/packchk.yml index ccdae54e4..5c8328681 100644 --- a/.github/workflows/packchk.yml +++ b/.github/workflows/packchk.yml @@ -227,7 +227,7 @@ jobs: env: lcov_base: https://github.com/linux-test-project/lcov/releases/download/v1.15/ lcov_installer: lcov-1.15.tar.gz - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 steps: - name: Harden Runner @@ -338,7 +338,7 @@ jobs: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/packchk/') needs: [ build, test, coverage ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 permissions: contents: write @@ -373,7 +373,7 @@ jobs: name: "Publish Tests Results" if: ${{ always() }} needs: [ test ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Harden Runner if: ${{ !github.event.repository.private }} diff --git a/.github/workflows/packgen.yml b/.github/workflows/packgen.yml index 6854f7898..9b7d86be3 100644 --- a/.github/workflows/packgen.yml +++ b/.github/workflows/packgen.yml @@ -120,7 +120,7 @@ jobs: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/packgen/') needs: [ build, unittest ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 permissions: contents: write @@ -232,7 +232,7 @@ jobs: env: lcov_base: https://github.com/linux-test-project/lcov/releases/download/v1.15/ lcov_installer: lcov-1.15.tar.gz - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 steps: - name: Harden Runner @@ -324,7 +324,7 @@ jobs: name: "Publish Tests Results" if: ${{ always() }} needs: [ unittest ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Harden Runner if: ${{ !github.event.repository.private }} diff --git a/.github/workflows/projmgr.yml b/.github/workflows/projmgr.yml index 1d7f18f2f..3469448cd 100644 --- a/.github/workflows/projmgr.yml +++ b/.github/workflows/projmgr.yml @@ -209,7 +209,7 @@ jobs: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/projmgr/') needs: [ build, build-swig, unittest, coverage ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 permissions: contents: write @@ -403,7 +403,7 @@ jobs: env: lcov_base: https://github.com/linux-test-project/lcov/releases/download/v1.15/ lcov_installer: lcov-1.15.tar.gz - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 steps: - name: Harden Runner @@ -495,7 +495,7 @@ jobs: name: "Publish Tests Results" if: ${{ always() }} needs: [ unittest ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Harden Runner if: ${{ !github.event.repository.private }} diff --git a/.github/workflows/shared_matrix_prep.yml b/.github/workflows/shared_matrix_prep.yml index 8b8343a4c..05b885d14 100644 --- a/.github/workflows/shared_matrix_prep.yml +++ b/.github/workflows/shared_matrix_prep.yml @@ -23,7 +23,7 @@ permissions: jobs: matrix_prep: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 if: ${{ inputs.run_if }} outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} diff --git a/.github/workflows/shared_setup_env.yml b/.github/workflows/shared_setup_env.yml index 857cd9d49..14ad336ff 100644 --- a/.github/workflows/shared_setup_env.yml +++ b/.github/workflows/shared_setup_env.yml @@ -18,7 +18,7 @@ on: jobs: config: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 if: ${{ inputs.run_if }} outputs: nightly: ${{ steps.config.outputs.nightly }} diff --git a/.github/workflows/svdconv.yml b/.github/workflows/svdconv.yml index d661e19f8..c5ef7cb82 100644 --- a/.github/workflows/svdconv.yml +++ b/.github/workflows/svdconv.yml @@ -217,7 +217,7 @@ jobs: env: lcov_base: https://github.com/linux-test-project/lcov/releases/download/v1.15/ lcov_installer: lcov-1.15.tar.gz - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 steps: - name: Harden Runner @@ -336,7 +336,7 @@ jobs: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/svdconv/') needs: [ build, test, coverage ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 timeout-minutes: 25 permissions: contents: write @@ -371,7 +371,7 @@ jobs: name: "Publish Tests Results" if: ${{ always() }} needs: [ test ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Harden Runner if: ${{ !github.event.repository.private }} diff --git a/.github/workflows/test_libs.yml b/.github/workflows/test_libs.yml index f5208fd69..6ba1e3920 100644 --- a/.github/workflows/test_libs.yml +++ b/.github/workflows/test_libs.yml @@ -99,7 +99,7 @@ jobs: name: "Publish Tests Results" if: ${{ always() }} needs: [ test_libs ] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Event File uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/.github/workflows/unit_test_results.yml b/.github/workflows/unit_test_results.yml index 2ff184bbc..50ef33886 100644 --- a/.github/workflows/unit_test_results.yml +++ b/.github/workflows/unit_test_results.yml @@ -11,7 +11,7 @@ on: jobs: publish-test-results: name: Publish Test Results for ${{ github.event.workflow_run.name }} - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 if: github.event.workflow_run.conclusion != 'skipped' steps: - name: Harden Runner diff --git a/libs/rtefsutils/src/RteFsUtils.cpp b/libs/rtefsutils/src/RteFsUtils.cpp index 0a49d982e..926fef083 100644 --- a/libs/rtefsutils/src/RteFsUtils.cpp +++ b/libs/rtefsutils/src/RteFsUtils.cpp @@ -837,10 +837,10 @@ string RteFsUtils::GetAbsPathFromLocalUrl(const string& url) { string filepath = url; // File URI scheme allows the literal 'localhost' to be omitted entirely // or may contain an empty hostname - static const string&& fileScheme = "file:/"; + static const string fileScheme = "file:/"; if (filepath.find(fileScheme) == 0) { filepath.erase(0, fileScheme.length()); - static const string&& localhost = "/localhost/"; + static const string localhost = "/localhost/"; if (filepath.find(localhost) == 0) { filepath.erase(0, localhost.length()); } else if (filepath.find("//") == 0) { diff --git a/libs/rtemodel/src/RtePackage.cpp b/libs/rtemodel/src/RtePackage.cpp index 276caf916..1f8b53bec 100644 --- a/libs/rtemodel/src/RtePackage.cpp +++ b/libs/rtemodel/src/RtePackage.cpp @@ -242,7 +242,7 @@ std::string RtePackage::PackIdFromPath(const std::string& path) string commonID; string version; unsigned i = 0; - for (string s : segments) { + for (const auto& s : segments) { if (i == 0) { commonID = s; } else if (i == 1) { diff --git a/libs/rtemodel/src/RteTarget.cpp b/libs/rtemodel/src/RteTarget.cpp index c44aee9bc..0dd4c9482 100644 --- a/libs/rtemodel/src/RteTarget.cpp +++ b/libs/rtemodel/src/RteTarget.cpp @@ -1944,7 +1944,7 @@ bool RteTarget::GenerateRteHeaders() { string content; const set& strings = GetGlobalPreIncludeStrings(); - for (auto s : strings) { + for (const auto& s : strings) { content += s + RteUtils::LF_STRING; } diff --git a/tools/packgen/src/PackGen.cpp b/tools/packgen/src/PackGen.cpp index 1efcb1c61..31d7117e6 100644 --- a/tools/packgen/src/PackGen.cpp +++ b/tools/packgen/src/PackGen.cpp @@ -631,7 +631,10 @@ bool PackGen::ParseReply(void) { YAML::Node dependencies = target["dependencies"]; for (const auto& item : dependencies) { string dep = item["id"].as(); - dep = dep.substr(0, dep.find("::")); + const size_t delimiter = dep.find("::"); + if (delimiter != string::npos) { + dep.resize(delimiter); + } m_target[name][build.name].dependency.insert(dep); }