mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
gitlab-ci: add clang asan job
This commit is contained in:
@@ -498,6 +498,31 @@ upload:linux-aarch64-package:
|
||||
variables:
|
||||
RSYNC_DESTINATION: dev
|
||||
|
||||
## Sanitizer builds
|
||||
|
||||
build:fedora34-asan:
|
||||
extends:
|
||||
- .fedora34_asan
|
||||
- .cmake_build_linux
|
||||
- .cmake_build_artifacts
|
||||
- .linux_builder_tags_qt
|
||||
- .run_manually
|
||||
variables:
|
||||
CMAKE_CI_JOB_NIGHTLY: "true"
|
||||
|
||||
test:fedora34-asan:
|
||||
extends:
|
||||
- .fedora34_asan
|
||||
- .cmake_memcheck_linux
|
||||
- .linux_builder_tags_qt
|
||||
- .run_automatically
|
||||
dependencies:
|
||||
- build:fedora34-asan
|
||||
needs:
|
||||
- build:fedora34-asan
|
||||
variables:
|
||||
CMAKE_CI_JOB_NIGHTLY: "true"
|
||||
|
||||
# macOS builds
|
||||
|
||||
build:macos-x86_64-ninja:
|
||||
|
4
.gitlab/ci/configure_fedora34_asan.cmake
Normal file
4
.gitlab/ci/configure_fedora34_asan.cmake
Normal file
@@ -0,0 +1,4 @@
|
||||
set(CMAKE_C_FLAGS "-fsanitize=address" CACHE STRING "")
|
||||
set(CMAKE_CXX_FLAGS "-fsanitize=address" CACHE STRING "")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora34_common.cmake")
|
@@ -13,6 +13,13 @@ if (CTEST_CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
"^ExternalProjectUpdateSetup$")
|
||||
endif ()
|
||||
|
||||
if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "_asan")
|
||||
list(APPEND test_exclusions
|
||||
CTestTest2 # crashes on purpose
|
||||
BootstrapTest # no need to cover this for asan
|
||||
)
|
||||
endif()
|
||||
|
||||
string(REPLACE ";" "|" test_exclusions "${test_exclusions}")
|
||||
if (test_exclusions)
|
||||
set(test_exclusions "(${test_exclusions})")
|
||||
|
45
.gitlab/ci/ctest_memcheck.cmake
Normal file
45
.gitlab/ci/ctest_memcheck.cmake
Normal file
@@ -0,0 +1,45 @@
|
||||
cmake_minimum_required(VERSION 3.8)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/gitlab_ci.cmake")
|
||||
|
||||
# Read the files from the build directory.
|
||||
ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
|
||||
|
||||
# Pick up from where the configure left off.
|
||||
ctest_start(APPEND)
|
||||
|
||||
include(ProcessorCount)
|
||||
ProcessorCount(nproc)
|
||||
if (NOT "$ENV{CTEST_MAX_PARALLELISM}" STREQUAL "")
|
||||
if (nproc GREATER "$ENV{CTEST_MAX_PARALLELISM}")
|
||||
set(nproc "$ENV{CTEST_MAX_PARALLELISM}")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
set(CTEST_MEMORYCHECK_TYPE "$ENV{CTEST_MEMORYCHECK_TYPE}")
|
||||
set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS "$ENV{CTEST_MEMORYCHECK_SANITIZER_OPTIONS}")
|
||||
|
||||
set(lsan_suppressions "${CMAKE_CURRENT_LIST_DIR}/ctest_memcheck_$ENV{CMAKE_CONFIGURATION}.lsan.supp")
|
||||
if (EXISTS "${lsan_suppressions}")
|
||||
set(ENV{LSAN_OPTIONS} "suppressions='${lsan_suppressions}'")
|
||||
endif ()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/ctest_exclusions.cmake")
|
||||
ctest_memcheck(
|
||||
PARALLEL_LEVEL "${nproc}"
|
||||
TEST_LOAD "${nproc}"
|
||||
RETURN_VALUE test_result
|
||||
EXCLUDE "${test_exclusions}"
|
||||
DEFECT_COUNT defects)
|
||||
ctest_submit(PARTS Test)
|
||||
ctest_submit(PARTS Memcheck)
|
||||
|
||||
if (test_result)
|
||||
message(FATAL_ERROR
|
||||
"Failed to test")
|
||||
endif ()
|
||||
|
||||
if (defects)
|
||||
message(FATAL_ERROR
|
||||
"Found ${defects} memcheck defects")
|
||||
endif ()
|
1
.gitlab/ci/ctest_memcheck_fedora34_asan.lsan.supp
Normal file
1
.gitlab/ci/ctest_memcheck_fedora34_asan.lsan.supp
Normal file
@@ -0,0 +1 @@
|
||||
# Add 'leak:<pattern>' lines here to suppress known leaks.
|
2
.gitlab/ci/env_fedora34_asan.sh
Normal file
2
.gitlab/ci/env_fedora34_asan.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
export CC=/usr/bin/clang
|
||||
export CXX=/usr/bin/clang++
|
@@ -158,6 +158,27 @@
|
||||
CMAKE_CONFIGURATION: debian10_makefiles_clang
|
||||
CMAKE_GENERATOR: "Unix Makefiles"
|
||||
|
||||
### Sanitizers
|
||||
|
||||
.fedora_memcheck:
|
||||
variables:
|
||||
CMAKE_BUILD_TYPE: RelWithDebInfo
|
||||
|
||||
.fedora_asan_addon:
|
||||
extends: .fedora_memcheck
|
||||
|
||||
variables:
|
||||
CTEST_MEMORYCHECK_TYPE: AddressSanitizer
|
||||
CTEST_MEMORYCHECK_SANITIZER_OPTIONS: ""
|
||||
|
||||
.fedora34_asan:
|
||||
extends:
|
||||
- .fedora34
|
||||
- .fedora_asan_addon
|
||||
|
||||
variables:
|
||||
CMAKE_CONFIGURATION: fedora34_asan
|
||||
|
||||
### Intel Compiler
|
||||
|
||||
.intelcompiler:
|
||||
@@ -306,6 +327,15 @@
|
||||
|
||||
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
|
||||
|
||||
|
Reference in New Issue
Block a user