Files
CMake/.gitlab/os-linux.yml
Brad King 30b1080c69 Utilities/Release: Remove unused documentation build settings
Since commit 37e015d4a6 (Utilities/Sphinx: Refactor Sphinx reference
recording, 2023-03-08, v3.27.0-rc1~342^2~1) our documentation requires
Python 3.7 or higher.  This is not available in the base images we use
to build Linux release binaries.  These days our release packaging CI
pipeline builds the documentation in a separate job anyway.
2023-08-16 12:25:22 -04:00

626 lines
15 KiB
YAML

# Linux-specific builder configurations and build commands
## Base images
### Release
.linux_prep_source:
image: "fedora:38"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
.linux_release_x86_64:
image: "kitware/cmake:build-linux-x86_64-deps-2020-04-02@sha256:77e9ab183f34680990db9da5945473e288f0d6556bce79ecc1589670d656e157"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
LAUNCHER: "scl enable devtoolset-6 rh-python36 --"
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_centos6_x86_64:
dependencies:
- b:centos6-x86_64
needs:
- b:centos6-x86_64
.needs_centos7_aarch64:
dependencies:
- b:centos7-aarch64
needs:
- b:centos7-aarch64
### Debian
.debian10:
image: "kitware/cmake:ci-debian10-x86_64-2023-03-29"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: x86_64
.debian10_iwyu:
extends: .debian10
variables:
CMAKE_CONFIGURATION: debian10_iwyu
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_NO_INSTALL: 1
.debian10_aarch64:
image: "kitware/cmake:ci-debian10-aarch64-2023-03-29"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: aarch64
### Fedora
.fedora38:
image: "kitware/cmake:ci-fedora38-x86_64-2023-05-22"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes"
CMAKE_ARCH: x86_64
#### Lint builds
.fedora38_tidy:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_tidy
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_NO_INSTALL: 1
.fedora38_clang_analyzer:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_clang_analyzer
CMAKE_CI_BUILD_TYPE: Debug
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_NO_INSTALL: 1
.fedora38_sphinx:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_sphinx
CTEST_NO_WARNINGS_ALLOWED: 1
CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx"
CMAKE_CI_NO_INSTALL: 1
.fedora38_sphinx_package:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_sphinx_package
CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx"
#### Build and test
.debian10_ninja:
extends: .debian10
variables:
CMAKE_CONFIGURATION: debian10_ninja
CTEST_NO_WARNINGS_ALLOWED: 1
.debian10_aarch64_ninja:
extends: .debian10_aarch64
variables:
CMAKE_CONFIGURATION: debian10_aarch64_ninja
CTEST_NO_WARNINGS_ALLOWED: 1
.debian10_makefiles_inplace:
extends: .debian10
variables:
CMAKE_CONFIGURATION: debian10_makefiles_inplace
CMAKE_GENERATOR: "Unix Makefiles"
CMAKE_CI_BOOTSTRAP: 1
CMAKE_CI_INPLACE: 1
CMAKE_CI_NO_INSTALL: 1
CTEST_NO_WARNINGS_ALLOWED: 1
.debian10_extdeps:
extends: .debian10
variables:
CMAKE_CONFIGURATION: debian10_extdeps
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.debian10_aarch64_extdeps:
extends: .debian10_aarch64
variables:
CMAKE_CONFIGURATION: debian10_aarch64_extdeps
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.fedora38_extdeps:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_extdeps
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.fedora38_ninja:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_ninja
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.fedora38_ninja_multi:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_ninja_multi
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Ninja Multi-Config"
.fedora38_makefiles:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_makefiles
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
### Clang Compiler
.debian10_makefiles_clang:
extends: .debian10
variables:
CMAKE_CONFIGURATION: debian10_makefiles_clang
CMAKE_GENERATOR: "Unix Makefiles"
.debian10_ninja_clang:
extends: .debian10
variables:
CMAKE_CONFIGURATION: debian10_ninja_clang
.fedora38_makefiles_clang:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_makefiles_clang
CMAKE_GENERATOR: "Unix Makefiles"
.fedora38_ninja_clang:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_ninja_clang
.fedora38_ninja_multi_clang:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_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: ""
.fedora38_asan:
extends:
- .fedora38
- .fedora_asan_addon
variables:
CMAKE_CONFIGURATION: fedora38_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
### HIP builds
.hip5.5:
image: "kitware/cmake:ci-hip5.5-x86_64-2023-06-01"
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"
### C++ modules
.gcc_cxx_modules_x86_64:
image: "kitware/cmake:ci-gcc_cxx_modules-x86_64-2022-06-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"
## 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
- .gitlab/ci/cmake.sh
- export PATH=$PWD/.gitlab/cmake/bin:$PATH
- .gitlab/ci/ninja.sh
- export PATH=$PWD/.gitlab:$PATH
- cmake --version
- ninja --version
.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 -c core.autocrlf=true -c core.eol=crlf 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: .fedora38
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.
- .gitlab/ci/sccache.sh
- export PATH=$PWD/.gitlab:$PATH
# 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_centos6_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_centos6_x86_64
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
### Documentation
.cmake_org_help:
stage: build
extends:
- .fedora38
- .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