From b7105edd72450e3cd0e7b8d2e2370aaa381deee2 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 29 Apr 2026 12:10:29 -0400 Subject: [PATCH] ci: Add scripts to install PVS-Studio in Linux jobs --- .gitlab/.gitignore | 1 + .gitlab/ci/pvs-studio-env.sh | 13 +++++++++++++ .gitlab/ci/pvs-studio.sh | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 .gitlab/ci/pvs-studio-env.sh create mode 100755 .gitlab/ci/pvs-studio.sh diff --git a/.gitlab/.gitignore b/.gitlab/.gitignore index 4d33c62182..c0e73ebcde 100644 --- a/.gitlab/.gitignore +++ b/.gitlab/.gitignore @@ -20,6 +20,7 @@ /open-watcom* /orangec /pellesc +/pvs-studio /python* /qt* /sccache* diff --git a/.gitlab/ci/pvs-studio-env.sh b/.gitlab/ci/pvs-studio-env.sh new file mode 100644 index 0000000000..c179b30333 --- /dev/null +++ b/.gitlab/ci/pvs-studio-env.sh @@ -0,0 +1,13 @@ +.gitlab/ci/pvs-studio.sh +export PATH=$PWD/.gitlab/pvs-studio/bin:$PATH +pvs-studio --version + +if test -f "$CMAKE_CI_PVS_STUDIO_LICENSE_USER" -a -f "$CMAKE_CI_PVS_STUDIO_LICENSE_KEY"; then + pvs-studio-analyzer credentials "$(<"$CMAKE_CI_PVS_STUDIO_LICENSE_USER")" "$(<"$CMAKE_CI_PVS_STUDIO_LICENSE_KEY")" +else + echo "The CMAKE_CI_PVS_STUDIO_LICENSE_USER and CMAKE_CI_PVS_STUDIO_LICENSE_KEY files were not both provided!" + exit 1 +fi +rm -f "$CMAKE_CI_PVS_STUDIO_LICENSE_USER" "$CMAKE_CI_PVS_STUDIO_LICENSE_KEY" +unset CMAKE_CI_PVS_STUDIO_LICENSE_KEY +unset CMAKE_CI_PVS_STUDIO_LICENSE_USER diff --git a/.gitlab/ci/pvs-studio.sh b/.gitlab/ci/pvs-studio.sh new file mode 100755 index 0000000000..b0eddf35ad --- /dev/null +++ b/.gitlab/ci/pvs-studio.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e + +readonly version="7.42.105112.761" + +case "$(uname -s)-$(uname -m)" in + Linux-x86_64) + # https://files.pvs-studio.com/pvs-studio-7.42.105112.761-x86_64.tgz + shatool="sha256sum" + sha256sum="0ced11d17855cc172a860f8cc19a89f10adb6ab7185992fb57474118e9bdabd7" + filename="pvs-studio-$version-x86_64" + ;; + *) + echo "Unrecognized platform $(uname -s)-$(uname -m)" + exit 1 + ;; +esac +readonly shatool +readonly sha256sum + +cd .gitlab + +# This URL is only visible inside of Kitware's network. See above filename table. +baseurl="https://cmake.org/files/dependencies/internal" + +tarball="$filename.tgz" +echo "$sha256sum $tarball" > pvs-studio.sha256sum +curl -OL "$baseurl/$tarball" +$shatool --check pvs-studio.sha256sum +tar xzf "$tarball" +rm "$tarball" pvs-studio.sha256sum +mv "$filename" "pvs-studio"