diff --git a/.github/actions/build-deps/action.yml b/.github/actions/build-deps/action.yml index 5d2b1b7850..a3595a4ba3 100644 --- a/.github/actions/build-deps/action.yml +++ b/.github/actions/build-deps/action.yml @@ -37,7 +37,7 @@ runs: BUILD_OPTION: ${{ inputs.force_build == 'true' && '*' || 'missing' }} BUILD_TYPE: ${{ inputs.build_type }} LOG_VERBOSITY: ${{ inputs.log_verbosity }} - CMAKE_SANITIZERS: ${{ inputs.sanitizers }} + SANITIZERS: ${{ inputs.sanitizers }} run: | echo 'Installing dependencies.' mkdir -p "${BUILD_DIR}" diff --git a/.github/scripts/strategy-matrix/generate.py b/.github/scripts/strategy-matrix/generate.py index da1bd360e3..fa72f083b5 100755 --- a/.github/scripts/strategy-matrix/generate.py +++ b/.github/scripts/strategy-matrix/generate.py @@ -125,12 +125,6 @@ def generate_strategy_matrix(all: bool, config: Config) -> list: if build_type == 'Release': cmake_args = f'{cmake_args} -Dassert=ON' - if os['distro_version'] == 'bookworm': - if sanitizers == 'Address': - cmake_args += ' -fsanitize=address,undefined,float-divide-by-zero,unsigned-integer-overflow' - elif sanitizers == 'Thread': - cmake_args += ' -fsanitize=thread,undefined,float-divide-by-zero,unsigned-integer-overflow' - # We skip all RHEL on arm64 due to a build failure that needs further # investigation. if os['distro_name'] == 'rhel' and architecture['platform'] == 'linux/arm64': @@ -163,17 +157,39 @@ def generate_strategy_matrix(all: bool, config: Config) -> list: # Add the configuration to the list, with the most unique fields first, # so that they are easier to identify in the GitHub Actions UI, as long - # names get truncated. - configurations.append({ - 'config_name': config_name, - 'cmake_args': cmake_args, - 'cmake_target': cmake_target, - 'build_only': build_only, - 'build_type': build_type, - 'os': os, - 'architecture': architecture, - 'sanitizers': sanitizers - }) + # names get truncated. Add Address and Thread (both coupled with UB) sanitizers when the distro is bookworm. + if os['distro_version'] == 'bookworm': + configurations.append({ + 'config_name': config_name, + 'cmake_args': cmake_args, + 'cmake_target': cmake_target, + 'build_only': build_only, + 'build_type': build_type, + 'os': os, + 'architecture': architecture, + 'sanitizers': "Address" + }) + configurations.append({ + 'config_name': config_name, + 'cmake_args': cmake_args, + 'cmake_target': cmake_target, + 'build_only': build_only, + 'build_type': build_type, + 'os': os, + 'architecture': architecture, + 'sanitizers': "Thread" + }) + else: + configurations.append({ + 'config_name': config_name, + 'cmake_args': cmake_args, + 'cmake_target': cmake_target, + 'build_only': build_only, + 'build_type': build_type, + 'os': os, + 'architecture': architecture, + 'sanitizers': "None" + }) return configurations diff --git a/.github/scripts/strategy-matrix/linux.json b/.github/scripts/strategy-matrix/linux.json index d9e7d439f3..85a78c96dc 100644 --- a/.github/scripts/strategy-matrix/linux.json +++ b/.github/scripts/strategy-matrix/linux.json @@ -180,6 +180,5 @@ } ], "build_type": ["Debug", "Release"], - "cmake_args": ["-Dunity=OFF", "-Dunity=ON"], - "sanitizers": ["None", "Address", "Thread"] + "cmake_args": ["-Dunity=OFF", "-Dunity=ON"] } diff --git a/.github/scripts/strategy-matrix/macos.json b/.github/scripts/strategy-matrix/macos.json index 46ce66bd0e..14b6089620 100644 --- a/.github/scripts/strategy-matrix/macos.json +++ b/.github/scripts/strategy-matrix/macos.json @@ -18,6 +18,5 @@ "cmake_args": [ "-Dunity=OFF -DCMAKE_POLICY_VERSION_MINIMUM=3.5", "-Dunity=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5" - ], - "sanitizers": ["None", "Address", "Thread"] + ] } diff --git a/.github/scripts/strategy-matrix/windows.json b/.github/scripts/strategy-matrix/windows.json index 7176f4fc35..8637b31012 100644 --- a/.github/scripts/strategy-matrix/windows.json +++ b/.github/scripts/strategy-matrix/windows.json @@ -15,6 +15,5 @@ } ], "build_type": ["Debug", "Release"], - "cmake_args": ["-Dunity=OFF", "-Dunity=ON"], - "sanitizers": ["None", "Address", "Thread"] + "cmake_args": ["-Dunity=OFF", "-Dunity=ON"] } diff --git a/conan/profiles/ci b/conan/profiles/ci index 16171984bb..71f0b9723c 100644 --- a/conan/profiles/ci +++ b/conan/profiles/ci @@ -1,11 +1 @@ -include(./default) - -[settings] -{% set sanitizers = os.getenv("CMAKE_SANITIZERS") %} - -[conf] -{% if sanitizers == "Address" %} -tools.build:cxxflags+=['-fsanitize=address,undefined,float-divide-by-zero,unsigned-integer-overflow'] -{% elif sanitizers == "Thread" %} -tools.build:cxxflags+=['-fsanitize=thread,undefined,float-divide-by-zero,unsigned-integer-overflow'] -{% endif %} + include(./incsanitizers) \ No newline at end of file diff --git a/conan/profiles/incsanitizers b/conan/profiles/incsanitizers new file mode 100644 index 0000000000..6a8f29dd5d --- /dev/null +++ b/conan/profiles/incsanitizers @@ -0,0 +1,11 @@ +include(./default) + +[settings] +{% set sanitizers = os.getenv("SANITIZERS") %} + +[conf] +{% if sanitizers == "Address" %} +tools.build:cxxflags+=['-fsanitize=address,undefined,float-divide-by-zero,unsigned-integer-overflow'] +{% elif sanitizers == "Thread" %} +tools.build:cxxflags+=['-fsanitize=thread,undefined,float-divide-by-zero,unsigned-integer-overflow'] +{% endif %}