From 01baf4ef7fdd0909e6e661ed09787dae2ec79062 Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 12 Dec 2024 19:57:24 +0100 Subject: [PATCH 1/3] added tests for make and CMake install targets to CI --- .github/workflows/CI-unixish.yml | 21 ++++++++++++++++----- .github/workflows/CI-windows.yml | 16 +++++++++++----- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/.github/workflows/CI-unixish.yml b/.github/workflows/CI-unixish.yml index f8b07f2e594..70c354a53bd 100644 --- a/.github/workflows/CI-unixish.yml +++ b/.github/workflows/CI-unixish.yml @@ -144,16 +144,18 @@ jobs: # pcre was removed from runner images in November 2022 brew install coreutils qt@6 pcre - - name: CMake build on ubuntu (with GUI) + - name: Run CMake on ubuntu (with GUI) if: contains(matrix.os, 'ubuntu') run: | - cmake -S . -B cmake.output -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DUSE_QT6=${{ matrix.use_qt6 }} -DWITH_QCHART=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - cmake --build cmake.output -- -j$(nproc) + cmake -S . -B cmake.output -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DUSE_QT6=${{ matrix.use_qt6 }} -DWITH_QCHART=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_INSTALL_PREFIX=cppcheck-cmake-install - - name: CMake build on macos (with GUI) + - name: Run CMake on macos (with GUI) if: contains(matrix.os, 'macos') run: | - cmake -S . -B cmake.output -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DUSE_QT6=On -DWITH_QCHART=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DQt6_DIR=$(brew --prefix qt@6)/lib/cmake/Qt6 + cmake -S . -B cmake.output -G "Unix Makefiles" -DHAVE_RULES=On -DBUILD_TESTS=On -DBUILD_GUI=On -DUSE_QT6=On -DWITH_QCHART=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_INSTALL_PREFIX=cppcheck-cmake-install -DQt6_DIR=$(brew --prefix qt@6)/lib/cmake/Qt6 + + - name: Run CMake build + run: | cmake --build cmake.output -- -j$(nproc) - name: Run CMake test @@ -165,6 +167,10 @@ jobs: pushd cmake.output ctest --output-on-failure -j$(nproc) + - name: Run CMake install + run: | + cmake --build cmake.output --target install + build_uchar: strategy: @@ -382,6 +388,11 @@ jobs: run: | make -j$(nproc) checkCWEEntries validateXML + - name: Test install + run: | + # this is only to test the "install" target - since we did not build with FILESDIR it would not work as intended + make DESTDIR=cppcheck-make-install FILESDIR=/share/Cppcheck install + - name: Test Signalhandler run: | cmake -S . -B cmake.output.signal -G "Unix Makefiles" -DBUILD_TESTS=On diff --git a/.github/workflows/CI-windows.yml b/.github/workflows/CI-windows.yml index c5916231a2e..0cf5dd1898d 100644 --- a/.github/workflows/CI-windows.yml +++ b/.github/workflows/CI-windows.yml @@ -49,20 +49,22 @@ jobs: modules: 'qtcharts' cache: true - - name: Build GUI release (Qt 5) + - name: Run CMake for GUI release (Qt 5) if: startsWith(matrix.qt_ver, '5') run: | ; TODO: enable rules? ; specify Release build so matchcompiler is used - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_COMPILE_WARNING_AS_ERROR=On -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_ONLINE_HELP=On || exit /b !errorlevel! - cmake --build build --target cppcheck-gui --config Release || exit /b !errorlevel! + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_COMPILE_WARNING_AS_ERROR=On -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_ONLINE_HELP=On -DCMAKE_INSTALL_PREFIX=cppcheck-cmake-install || exit /b !errorlevel! - - name: Build GUI release (Qt 6) + - name: Run CMake for GUI release (Qt 6) if: startsWith(matrix.qt_ver, '6') run: | ; TODO: enable rules? ; specify Release build so matchcompiler is used - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_COMPILE_WARNING_AS_ERROR=On -DBUILD_GUI=On -DUSE_QT6=On -DWITH_QCHART=On -DBUILD_ONLINE_HELP=On || exit /b !errorlevel! + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_COMPILE_WARNING_AS_ERROR=On -DBUILD_GUI=On -DUSE_QT6=On -DWITH_QCHART=On -DBUILD_ONLINE_HELP=On -DCMAKE_INSTALL_PREFIX=cppcheck-cmake-install || exit /b !errorlevel! + + - name: Run CMake build + run: | cmake --build build --target cppcheck-gui --config Release || exit /b !errorlevel! - name: Deploy GUI @@ -73,6 +75,10 @@ jobs: # TODO: run GUI tests + - name: Run CMake install + run: | + cmake --build build --target install + build: strategy: matrix: From 279718bf36d98ed875a3b56f9568dffd7391e7e9 Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 12 Dec 2024 19:57:46 +0100 Subject: [PATCH 2/3] refs #8659 - fixed CMake installation --- cli/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 22f17dda390..dc13dba1403 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -76,7 +76,7 @@ if (BUILD_CLI) COMPONENT applications) install(PROGRAMS ${CMAKE_SOURCE_DIR}/htmlreport/cppcheck-htmlreport - RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} + DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT applications) install(FILES ${addons_py} From d6384c7837c9fc7d3c970371db69bc1cc6bf9092 Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 12 Dec 2024 20:01:23 +0100 Subject: [PATCH 3/3] fully removed obsolete `.travis.yml` now install tests have been implemented --- .travis.yml | 43 ------------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 46b471c0aff..00000000000 --- a/.travis.yml +++ /dev/null @@ -1,43 +0,0 @@ -language: cpp -dist: xenial - -compiler: - - gcc - - clang - -env: - global: - - ORIGINAL_CXXFLAGS="-pedantic -Wall -Wextra -Wcast-qual -Wno-deprecated-declarations -Wfloat-equal -Wmissing-declarations -Wmissing-format-attribute -Wno-long-long -Wpacked -Wredundant-decls -Wundef -Wno-shadow -Wno-missing-field-initializers -Wno-missing-braces -Wno-sign-compare -Wno-multichar -D_GLIBCXX_DEBUG -g" -# unfortunately we need this to stay within 50min timelimit given by travis. - - CXXFLAGS="${ORIGINAL_CXXFLAGS} -O2 -march=native -Wstrict-aliasing=2 -Werror=strict-aliasing" - - CPPCHECK=${TRAVIS_BUILD_DIR}/cppcheck - matrix: - - CXXFLAGS="${CXXFLAGS} -DCHECK_INTERNAL" - - CXXFLAGS="${CXXFLAGS} -DCHECK_INTERNAL" MAKEFLAGS="HAVE_RULES=yes" MATCHCOMPILER=yes VERIFY=1 - -before_install: -# install needed deps - - travis_retry sudo apt-get update -qq - - travis_retry sudo apt-get install -qq libxml2-utils libpcre3 gdb unzip wx-common xmlstarlet liblua5.3-dev libcurl3 libcairo2-dev libsigc++-2.0-dev tidy libopencv-dev - -matrix: -# do notify immediately about it when a job of a build fails. - fast_finish: true -# defined extra jobs that run besides what is configured in the build matrix - include: - -# check a lot of stuff that only needs to be checked in a single configuration - - name: "misc" - compiler: clang - script: - - make -j$(nproc) -s -# check if DESTDIR works TODO: actually execute this - - mkdir install_test - - echo $CXXFLAGS - - make -s DESTDIR=install_test FILESDIR=/usr/share/cppcheck install -# rm everything - - git clean -dfx -# check what happens if we want to install it to some other dir, - - echo $CXXFLAGS - - make -s MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck -j$(nproc) - - sudo make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck install