From 4b6175980c94c92b0f361f21ceb0c994a9296a6a Mon Sep 17 00:00:00 2001 From: Vicente Adolfo Bolea Sanchez Date: Tue, 27 Jul 2021 19:15:27 -0400 Subject: [PATCH] CI: download/install cmake in each build Signed-off-by: Vicente Adolfo Bolea Sanchez --- .gitlab-ci.yml | 22 +++++++++---- .gitlab/ci/centos7.yml | 1 + .gitlab/ci/config/cmake.ps1 | 19 ++++++++++++ .gitlab/ci/config/cmake.sh | 56 ++++++++++++++++++++++++++++++++++ .gitlab/ci/ubuntu1604.yml | 3 ++ .gitlab/ci/windows10.yml | 12 +++++--- CMake/VTKmCheckCopyright.cmake | 2 ++ LICENSE.txt | 1 + 8 files changed, 105 insertions(+), 11 deletions(-) create mode 100755 .gitlab/ci/config/cmake.ps1 create mode 100755 .gitlab/ci/config/cmake.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 256975d03..9514f5b29 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -122,11 +122,21 @@ stages: - build - test +.use_minimum_supported_cmake: + variables: + CMAKE_VERSION: "3.13.5" + +.install_cmake: &install_cmake | + export PATH=$PWD/.gitlab/cmake/bin:$PATH + .gitlab/ci/config/cmake.sh "$CMAKE_VERSION" + cmake --version + .cmake_build_linux: &cmake_build_linux stage: build timeout: 2 hours interruptible: true before_script: + - *install_cmake - .gitlab/ci/config/sccache.sh - export PATH=$PWD/.gitlab:$PATH - SCCACHE_IDLE_TIMEOUT=0 sccache --start-server @@ -171,12 +181,10 @@ stages: stage: test timeout: 50 minutes interruptible: true + before_script: + - *install_cmake script: - #Need to use our custom ctest-latest symlink - #This will allow us to use 3.17+ which has support - #for running failed tests multiple times so failures - #due to system load are not reported - - "ctest-latest -VV -S .gitlab/ci/ctest_test.cmake" + - "ctest -VV -S .gitlab/ci/ctest_test.cmake" artifacts: expire_in: 24 hours when: always @@ -199,8 +207,10 @@ stages: stage: test timeout: 2 hours interruptible: true + before_script: + - *install_cmake script: - - "ctest-latest -VV -S .gitlab/ci/ctest_memcheck.cmake" + - "ctest -VV -S .gitlab/ci/ctest_memcheck.cmake" artifacts: expire_in: 24 hours when: always diff --git a/.gitlab/ci/centos7.yml b/.gitlab/ci/centos7.yml index f53ad9b3a..5dbe118f6 100644 --- a/.gitlab/ci/centos7.yml +++ b/.gitlab/ci/centos7.yml @@ -13,6 +13,7 @@ build:centos7_gcc73: - .centos7 - .cmake_build_linux - .only-default + - .use_minimum_supported_cmake variables: CMAKE_BUILD_TYPE: RelWithDebInfo CMAKE_GENERATOR: "Unix Makefiles" diff --git a/.gitlab/ci/config/cmake.ps1 b/.gitlab/ci/config/cmake.ps1 new file mode 100755 index 000000000..f74821022 --- /dev/null +++ b/.gitlab/ci/config/cmake.ps1 @@ -0,0 +1,19 @@ +$erroractionpreference = "stop" + +$version = "3.21.1" +$sha256sum = "9fba6df0b89be0dc0377f2e77ca272b3f8c38691fe237699de275ea0c2254242" +$filename = "cmake-$version-windows-x86_64" +$tarball = "$filename.zip" + +$outdir = $pwd.Path +$outdir = "$outdir\.gitlab" +$ProgressPreference = 'SilentlyContinue' +Invoke-WebRequest -Uri "https://github.com/Kitware/CMake/releases/download/v$version/$tarball" -OutFile "$outdir\$tarball" +$hash = Get-FileHash "$outdir\$tarball" -Algorithm SHA256 +if ($hash.Hash -ne $sha256sum) { + exit 1 +} + +Add-Type -AssemblyName System.IO.Compression.FileSystem +[System.IO.Compression.ZipFile]::ExtractToDirectory("$outdir\$tarball", "$outdir") +Move-Item -Path "$outdir\$filename" -Destination "$outdir\cmake" diff --git a/.gitlab/ci/config/cmake.sh b/.gitlab/ci/config/cmake.sh new file mode 100755 index 000000000..8519868fb --- /dev/null +++ b/.gitlab/ci/config/cmake.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +# shellcheck disable=SC2079 + +set -x + +version="${1:-3.21.1}" + +# We require CMake >= 3.13 in the CI to support CUDA builds +readonly -A linuxParamsByVersion=( +['3.13.5']='e2fd0080a6f0fc1ec84647acdcd8e0b4019770f48d83509e6a5b0b6ea27e5864 Linux' +['3.21.1']='bf496ce869d0aa8c1f57e4d1a2e50c8f2fb12a6cd7ccb37ad743bb88f6b76a1e linux' +) + +if [ -z "${linuxParamsByVersion[$version]}" ] +then + echo "Given version ($version) is unsupported" + exit 1 +fi + +case "$( uname -s )" in + Linux) + shatool="sha256sum" + sha256sum=$(cut -f 1 <<<"${linuxParamsByVersion[$version]}") + platform=$(cut -f 2 <<<"${linuxParamsByVersion[$version]}") + arch="x86_64" + ;; + Darwin) + shatool="shasum -a 256" + sha256sum="20dbede1d80c1ac80be2966172f8838c3d899951ac4467372f806b386d42ad3c" + platform="macos" + arch="universal" + ;; + *) + echo "Unrecognized platform $( uname -s )" + exit 1 + ;; +esac +readonly shatool +readonly sha256sum +readonly platform +readonly arch + +readonly filename="cmake-$version-$platform-$arch" +readonly tarball="$filename.tar.gz" + +cd .gitlab || exit + +echo "$sha256sum $tarball" > cmake.sha256sum +curl -OL "https://github.com/Kitware/CMake/releases/download/v$version/$tarball" +$shatool --check cmake.sha256sum +tar xf "$tarball" +mv "$filename" cmake + +if [ "$( uname -s )" = "Darwin" ]; then + ln -s CMake.app/Contents/bin cmake/bin +fi diff --git a/.gitlab/ci/ubuntu1604.yml b/.gitlab/ci/ubuntu1604.yml index 15af71059..40a479f57 100644 --- a/.gitlab/ci/ubuntu1604.yml +++ b/.gitlab/ci/ubuntu1604.yml @@ -13,6 +13,7 @@ build:ubuntu1604_gcc5: - .ubuntu1604_cuda - .cmake_build_linux - .only-default + - .use_minimum_supported_cmake variables: CC: "gcc-5" CXX: "g++-5" @@ -50,6 +51,7 @@ build:ubuntu1604_gcc5_2: - .ubuntu1604_cuda - .cmake_build_linux - .only-master + - .use_minimum_supported_cmake variables: CC: "gcc-5" CXX: "g++-5" @@ -87,6 +89,7 @@ build:ubuntu1604_clang5: - .ubuntu1604 - .cmake_build_linux - .only-default + - .use_minimum_supported_cmake variables: CC: "clang-5.0" CXX: "clang++-5.0" diff --git a/.gitlab/ci/windows10.yml b/.gitlab/ci/windows10.yml index 142312bd9..77beebf55 100644 --- a/.gitlab/ci/windows10.yml +++ b/.gitlab/ci/windows10.yml @@ -21,7 +21,10 @@ timeout: 2 hours interruptible: true before_script: + - Invoke-Expression -Command .gitlab/ci/config/cmake.ps1 - Invoke-Expression -Command .gitlab/ci/config/vcvarsall.ps1 + - $pwdpath = $pwd.Path + - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$pwdpath\.gitlab\cmake\bin;$env:PATH" - "cmake --version" - "cmake -V -P .gitlab/ci/config/gitlab_ci_setup.cmake" - "ctest -VV -S .gitlab/ci/ctest_configure.cmake" @@ -64,13 +67,12 @@ timeout: 50 minutes interruptible: true before_script: + - Invoke-Expression -Command .gitlab/ci/config/cmake.ps1 - Invoke-Expression -Command .gitlab/ci/config/vcvarsall.ps1 + - $pwdpath = $pwd.Path + - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$pwdpath\.gitlab\cmake\bin;$env:PATH" script: - #Need to use our custom ctest-latest symlink - #This will allow us to use 3.17+ which has support - #for running failed tests multiple times so failures - #due to system load are not reported - - "ctest-latest -VV -S .gitlab/ci/ctest_test.cmake" + - "ctest -VV -S .gitlab/ci/ctest_test.cmake" # Build on windows10 with Visual Studio # Will have CUDA 10.2 once build issues are resolved diff --git a/CMake/VTKmCheckCopyright.cmake b/CMake/VTKmCheckCopyright.cmake index 6ef9d6c6c..c8e8782a2 100644 --- a/CMake/VTKmCheckCopyright.cmake +++ b/CMake/VTKmCheckCopyright.cmake @@ -15,6 +15,8 @@ ## cmake -DVTKm_SOURCE_DIR= -P /CMake/VTKMCheckCopyright.cmake ## +cmake_minimum_required(VERSION 3.12) + set(FILES_TO_CHECK *.txt *.cmake diff --git a/LICENSE.txt b/LICENSE.txt index 7a88e22b0..a56d44efc 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -56,3 +56,4 @@ vtkm/cont/tbb/internal/kxsort.h vtkm/thirdparty vtkm/internal/brigand.hpp version.txt +.gitlab/cmake