blob: 03778c2305e4bbe58f9f0a55765aa5944d0fccb8 [file] [log] [blame]
# Linux-specific builder configurations and build commands
## Base images
### Release
.linux_prep_source:
image: "fedora:39"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
.linux_release_x86_64:
image: "kitware/cmake:build-linux-x86_64-deps-2023-08-16@sha256:aa0ebdbd90a51cc83d31f393c5c48ec4599a28f7ccdc288558522c6265b24fae"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
LAUNCHER: "scl enable devtoolset-7 --"
CMAKE_ARCH: x86_64
.linux_release_aarch64:
image: "kitware/cmake:build-linux-aarch64-deps-2020-12-21@sha256:0bd7dfe4e45593b04e39cd21e44011034610cfd376900558c5ef959bb1af15af"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
LAUNCHER: "scl enable devtoolset-7 --"
CMAKE_ARCH: aarch64
.linux_package:
variables:
BOOTSTRAP_ARGS: '-- "-DCMake_DOC_ARTIFACT_PREFIX=$CI_PROJECT_DIR/build/install-doc"'
.needs_centos7_x86_64:
dependencies:
- b:centos7-x86_64
needs:
- b:centos7-x86_64
.needs_centos7_aarch64:
dependencies:
- b:centos7-aarch64
needs:
- b:centos7-aarch64
### Debian
.debian12:
image: "kitware/cmake:ci-debian12-x86_64-2024-03-04"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: x86_64
.debian12_iwyu:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_iwyu
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_NO_INSTALL: 1
.debian12_aarch64:
image: "kitware/cmake:ci-debian12-aarch64-2023-07-27"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: aarch64
### Fedora
.fedora39:
image: "kitware/cmake:ci-fedora39-x86_64-2024-04-10"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes"
CMAKE_ARCH: x86_64
#### Lint builds
.fedora39_tidy:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_tidy
CMAKE_CI_NO_INSTALL: 1
.fedora39_clang_analyzer:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_clang_analyzer
CMAKE_CI_BUILD_TYPE: Debug
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_NO_INSTALL: 1
.fedora39_sphinx:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_sphinx
CTEST_NO_WARNINGS_ALLOWED: 1
CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx"
CMAKE_CI_NO_INSTALL: 1
.fedora39_sphinx_package:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_sphinx_package
CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx"
#### Build and test
.debian12_ninja:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_ninja
CTEST_NO_WARNINGS_ALLOWED: 1
.debian12_aarch64_ninja:
extends: .debian12_aarch64
variables:
CMAKE_CONFIGURATION: debian12_aarch64_ninja
CTEST_NO_WARNINGS_ALLOWED: 1
.debian12_makefiles_inplace:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_makefiles_inplace
CMAKE_GENERATOR: "Unix Makefiles"
CMAKE_CI_BOOTSTRAP: 1
CMAKE_CI_INPLACE: 1
CMAKE_CI_NO_INSTALL: 1
CTEST_NO_WARNINGS_ALLOWED: 1
.debian12_ninja_multi_symlinked:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_ninja_multi_symlinked
CMAKE_GENERATOR: "Ninja Multi-Config"
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
.debian12_extdeps:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_extdeps
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.debian12_aarch64_extdeps:
extends: .debian12_aarch64
variables:
CMAKE_CONFIGURATION: debian12_aarch64_extdeps
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.fedora39_extdeps:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_extdeps
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.fedora39_ninja:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_ninja
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.fedora39_ninja_multi:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_ninja_multi
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Ninja Multi-Config"
.fedora39_makefiles:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_makefiles
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
.fedora39_makefiles_symlinked:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_makefiles_symlinked
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
### Clang Compiler
.debian12_makefiles_clang:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_makefiles_clang
CMAKE_GENERATOR: "Unix Makefiles"
.debian12_ninja_clang:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_ninja_clang
.fedora39_makefiles_clang:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_makefiles_clang
CMAKE_GENERATOR: "Unix Makefiles"
.fedora39_ninja_clang:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_ninja_clang
.fedora39_ninja_multi_clang:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_ninja_multi_clang
CMAKE_GENERATOR: "Ninja Multi-Config"
### Sanitizers
.fedora_memcheck:
variables:
CMAKE_CI_BUILD_TYPE: RelWithDebInfo
.fedora_asan_addon:
extends: .fedora_memcheck
variables:
CTEST_MEMORYCHECK_TYPE: AddressSanitizer
CTEST_MEMORYCHECK_SANITIZER_OPTIONS: ""
.fedora39_asan:
extends:
- .fedora39
- .fedora_asan_addon
variables:
CMAKE_CONFIGURATION: fedora39_asan
### Intel Compiler
.intelcompiler:
image: "kitware/intelcompiler:$CMAKE_CI_INTELCOMPILER_IMAGE_TAG"
environment:
name: intel-compiler
variables:
CMAKE_ARCH: x86_64
.intelclassic_makefiles:
extends: .intelcompiler
variables:
CMAKE_CONFIGURATION: intelclassic_makefiles
CMAKE_GENERATOR: "Unix Makefiles"
.inteloneapi_makefiles:
extends: .intelcompiler
variables:
CMAKE_CONFIGURATION: inteloneapi_makefiles
CMAKE_GENERATOR: "Unix Makefiles"
### NVHPC Compiler
.nvhpc:
image: "kitware/cmake:ci-nvhpc22.11-x86_64-2022-12-06"
variables:
CMAKE_ARCH: x86_64
.nvhpc_ninja:
extends: .nvhpc
variables:
CMAKE_CONFIGURATION: nvhpc_ninja
### CUDA builds
.cuda:
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CTEST_LABELS: "CUDA"
CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1
.cuda9.2:
extends: .cuda
image: "kitware/cmake:ci-cuda9.2-x86_64-2021-10-01"
variables:
CMAKE_ARCH: x86_64
.cuda9.2_nvidia:
extends: .cuda9.2
variables:
CMAKE_CONFIGURATION: cuda9.2_nvidia
CMAKE_GENERATOR: "Ninja Multi-Config"
.cuda10.2:
extends: .cuda
image: "kitware/cmake:ci-cuda10.2-x86_64-2021-06-16"
variables:
CMAKE_ARCH: x86_64
.cuda10.2_nvidia:
extends: .cuda10.2
variables:
CMAKE_CONFIGURATION: cuda10.2_nvidia
CTEST_NO_WARNINGS_ALLOWED: 1
.cuda10.2_clang:
extends: .cuda10.2
variables:
CMAKE_CONFIGURATION: cuda10.2_clang
CTEST_NO_WARNINGS_ALLOWED: 1
.cuda11.6:
extends: .cuda
image: "kitware/cmake:ci-cuda11.6-x86_64-2022-02-28"
variables:
CMAKE_ARCH: x86_64
.cuda11.6_nvidia:
extends: .cuda11.6
variables:
CMAKE_CONFIGURATION: cuda11.6_nvidia
CTEST_NO_WARNINGS_ALLOWED: 1
.cuda11.6_clang:
extends: .cuda11.6
variables:
CMAKE_CONFIGURATION: cuda11.6_clang
CTEST_NO_WARNINGS_ALLOWED: 1
.cuda11.8_minimal:
extends: .cuda
image: "kitware/cmake:ci-cuda11.8-minimal-x86_64-2022-12-06"
variables:
CMAKE_ARCH: x86_64
.cuda11.8_minimal_nvidia:
extends: .cuda11.8_minimal
variables:
CMAKE_CONFIGURATION: cuda11.8_minimal_nvidia
CTEST_NO_WARNINGS_ALLOWED: 1
.cuda11.8_splayed_nvidia:
extends: .cuda11.8_minimal
variables:
CMAKE_CONFIGURATION: cuda11.8_splayed_nvidia
CTEST_NO_WARNINGS_ALLOWED: 1
.cuda12.2:
extends: .cuda
image: "kitware/cmake:ci-cuda12.2-x86_64-2024-04-05"
variables:
CMAKE_ARCH: x86_64
.cuda12.2_nvidia:
extends: .cuda12.2
variables:
CMAKE_CONFIGURATION: cuda12.2_nvidia
CTEST_NO_WARNINGS_ALLOWED: 1
.cuda12.2_clang:
extends: .cuda12.2
variables:
CMAKE_CONFIGURATION: cuda12.2_clang
CTEST_NO_WARNINGS_ALLOWED: 1
### HIP builds
.hip5.5:
image: "kitware/cmake:ci-hip5.5-x86_64-2023-09-18"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: x86_64
CTEST_LABELS: "HIP"
.hip5.5_radeon:
extends: .hip5.5
variables:
CMAKE_CONFIGURATION: hip5.5_radeon
CMAKE_GENERATOR: "Ninja Multi-Config"
.debian12_hip_radeon:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_hip_radeon
CTEST_LABELS: "HIP"
.fedora39_hip_radeon:
extends: .fedora39
variables:
CMAKE_CONFIGURATION: fedora39_hip_radeon
CTEST_LABELS: "HIP"
.hip5.5_nvidia:
extends: .hip5.5
variables:
CMAKE_CONFIGURATION: hip5.5_nvidia
CTEST_LABELS: "HIP"
### C++ modules
.gcc_cxx_modules_x86_64:
image: "kitware/cmake:ci-gcc_cxx_modules-x86_64-2023-09-21"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: x86_64
CC: "/opt/gcc-p1689/bin/gcc"
CXX: "/opt/gcc-p1689/bin/g++"
.gcc_cxx_modules_ninja:
extends: .gcc_cxx_modules_x86_64
variables:
CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja
.gcc_cxx_modules_ninja_multi:
extends: .gcc_cxx_modules_x86_64
variables:
CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja_multi
CMAKE_GENERATOR: "Ninja Multi-Config"
### Debian 10 legacy packages
.debian10:
image: "kitware/cmake:ci-debian10-x86_64-2023-07-31"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: x86_64
.debian10_legacy:
extends: .debian10
variables:
CMAKE_CONFIGURATION: debian10_legacy
CTEST_LABELS: "Python2"
## Tags
.linux_x86_64_tags:
tags:
- cmake
- build
- docker
- linux-x86_64
.linux_x86_64_tags_x11:
tags:
- cmake
- docker
- linux-x86_64
- x11
.linux_x86_64_tags_cuda:
tags:
- cmake
- cuda-rt
- docker
- linux-x86_64
.linux_x86_64_v3_tags_cuda:
tags:
- cmake
- cuda-rt
- docker
- linux-x86_64-v3
.linux_x86_64_tags_radeon:
tags:
- cmake
- radeon
- docker
- linux-x86_64
.linux_aarch64_tags:
tags:
- cmake
- build
- docker
- linux-aarch64
## Linux-specific scripts
.before_script_linux: &before_script_linux
- source .gitlab/ci/env.sh
- source .gitlab/ci/cmake-env.sh
- source .gitlab/ci/ninja-env.sh
.cmake_prep_source_linux:
stage: prep
script:
- *before_script_linux
- dnf install --setopt=install_weak_deps=False -y git-core
- v="$(.gitlab/ci/cmake_version.sh)"
- mkdir -p build/
- git archive --format=tgz --prefix="cmake-$v/" -o "build/cmake-$v.tar.gz" HEAD
- git archive --format=zip --prefix="cmake-$v/" -o "build/cmake-$v.zip" HEAD
interruptible: true
.cmake_prep_doc_linux:
stage: prep
script:
- *before_script_linux
- "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
- "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
interruptible: true
.cmake_codespell_linux:
stage: build
extends: .fedora39
script:
- .gitlab/ci/codespell.sh
interruptible: true
.cmake_build_linux:
stage: build
script:
- *before_script_linux
- .gitlab/ci/sccache.sh
- sccache --start-server
- sccache --show-stats
- .gitlab/ci/pre_build.sh
- "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
- "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
- .gitlab/ci/post_build.sh
- sccache --show-stats
interruptible: true
.cmake_test_linux:
stage: test
script:
- *before_script_linux
- "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake"
interruptible: true
.cmake_memcheck_linux:
stage: test
script:
- *before_script_linux
- "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_memcheck.cmake"
interruptible: true
.cmake_build_linux_release:
stage: build
script:
- source .gitlab/ci/env.sh
# Bootstrap.
- mkdir -p build/
- cp Utilities/Release/linux/$CMAKE_ARCH/cache.txt build/CMakeCache.txt
# Make sccache available.
- source .gitlab/ci/sccache-env.sh
# Append sccache settings to the cache.
- echo "CMAKE_C_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
- echo "CMAKE_CXX_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
# CI settings.
- echo "CMake_TEST_INSTALL:BOOL=OFF" >> build/CMakeCache.txt
- echo "CMAKE_INSTALL_PREFIX:PATH=$PWD/build/install" >> build/CMakeCache.txt
- echo "CMAKE_SKIP_INSTALL_ALL_DEPENDENCY:BOOL=ON" >> build/CMakeCache.txt
# Appease Git. The Git in this container is old (1.7) and doesn't
# understand some things. But, it doesn't need to, so make it blind.
- mkdir -p .git/info
- echo "* -crlf" >> .git/info/attributes
- git reset --hard
# Bootstrap
- cd build/
- '$LAUNCHER ../bootstrap --parallel=$(nproc) --docdir=doc/cmake $BOOTSTRAP_ARGS'
# FIXME: When CTest can drive an external CMake for the build as well,
# use the scripts here.
- "$LAUNCHER make -j$(nproc)"
# NOTE: This regex matches that used in the release build.
- "$LAUNCHER bin/ctest --output-on-failure -j$(nproc) -R '^(CMake\\.|CMakeLib\\.|RunCMake\\.ctest_memcheck)'"
# Make a package.
- bin/cpack -G TGZ
- bin/cpack -G STGZ
- sccache --show-stats
interruptible: true
.cmake_build_linux_standalone:
stage: build
script:
- *before_script_linux
- .gitlab/ci/sccache.sh
- sccache --start-server
- sccache --show-stats
- "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake"
- sccache --show-stats
interruptible: true
.cmake_test_linux_release:
stage: test-ext
script:
- *before_script_linux
# Make the CMake package available.
- mkdir -p build/install
- tar -C build/install --strip-components=1 -xzf build/cmake-*-linux-$CMAKE_ARCH.tar.gz
- .gitlab/ci/sccache.sh
- sccache --start-server
- sccache --show-stats
- "$LAUNCHER build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake"
- sccache --show-stats
interruptible: true
.cmake_test_linux_external:
stage: test-ext
script:
- *before_script_linux
- .gitlab/ci/sccache.sh
- sccache --start-server
- sccache --show-stats
- "$LAUNCHER build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake"
- sccache --show-stats
interruptible: true
.cmake_test_linux_intelclassic_makefiles:
extends:
- .intelclassic_makefiles
- .cmake_test_linux_release
- .linux_x86_64_tags
- .run_manually
- .needs_centos7_x86_64
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
.cmake_test_linux_inteloneapi_makefiles:
extends:
- .inteloneapi_makefiles
- .cmake_test_linux_release
- .linux_x86_64_tags
- .run_manually
- .needs_centos7_x86_64
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
### Documentation
.cmake_org_help:
stage: build
extends:
- .fedora39
- .linux_x86_64_tags
- .cmake_org_help_artifacts
script:
- *before_script_linux
- mkdir -p build/
- cd build/
- cmake ../Utilities/Sphinx -GNinja
-DSPHINX_HTML=ON
-DSPHINX_QTHELP=$CMAKE_CI_SPHINX_QTHELP
-DCMake_SPHINX_CMAKE_ORG=ON
-DCMake_SPHINX_CMAKE_ORG_OUTDATED=$CMAKE_CI_SPHINX_OUTDATED
-DCMake_VERSION_NO_GIT=$CMAKE_CI_VERSION_NO_GIT
- ninja
# FIXME(#25175): non-main index entries are scored too high.
- sed -i '/search for explicit entries in index directives/,/^$/d' html/_static/searchtools.js