Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CMake/CTestCustom.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,30 @@ set(CTEST_CUSTOM_WARNING_EXCEPTION
# ignore some third party warnings
".*Modules/ThirdParty/.*warning:.*Wzero-as-null-pointer-constant"
".*Modules/ThirdParty/Eigen3/.*warning:.*"
# MSVC emits "warning C####:" rather than "warning:"; cover that form too
# so Eigen-internal MSVC warnings (e.g. C4750 from
# Eigenvalues/Tridiagonalization.h, "function with _alloca() inlined into
# a loop") do not fail the dashboard.
".*Modules.ThirdParty.Eigen3.*warning C[0-9]+:.*"
# GCC IPA-CP cloning produces -Wmaybe-uninitialized false positives in
# Core/products/SelfadjointMatrixVector.h at -O3 + C++20 on Ubuntu 24.04
# (and matching ARM toolchains); the multi-line "note: by argument N of
# type ... declared here" continuation also lives in Eigen3 paths.
# The 'warning:' wildcard above already covers the primary line; this
# extra pattern silences GCC's path-less continuation lines that the
# reporter associates with the same Eigen file.
".*Modules/ThirdParty/Eigen3/.*note:.*"
# Apple clang on macOS does not recognise GCC's -Wmaybe-uninitialized
# warning group, so every use of ITK_GCC_SUPPRESS_Wmaybe_uninitialized
# in itkMacro.h emits a four-line diagnostic burst (warning + three
# macro-expansion notes per site). At ~50 use-sites that's ~200
# warnings on a single Darwin Python build, which exceeds the dashboard
# ceiling. Suppressing the four lines individually keeps any genuine
# -Wunknown-warning-option diagnostic from a non-Wmaybe context still
# visible.
"warning: unknown warning group '-Wmaybe-uninitialized'"
"note: expanded from macro 'ITK_GCC_SUPPRESS_Wmaybe_uninitialized'"
"note: expanded from macro 'ITK_PRAGMA'"

# CircleCI distcc warnings
".*WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED.*"
Expand Down
227 changes: 9 additions & 218 deletions Testing/ContinuousIntegration/AzurePipelinesLinux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ variables:
CCACHE_NOHASHDIR: 'true'
CCACHE_SLOPPINESS: pch_defines,time_macros
jobs:
- job: Linux
- job: LinuxLegacyRemovedCxx20
timeoutInMinutes: 0
cancelTimeoutInMinutes: 300
pool:
vmImage: ubuntu-22.04
vmImage: ubuntu-24.04
steps:
- checkout: self
clean: true
Expand Down Expand Up @@ -80,9 +80,9 @@ jobs:

- task: Cache@2
inputs:
key: '"ccache-v4" | "$(Agent.OS)" | "Linux" | "$(Build.SourceVersion)"'
key: '"ccache-v4" | "$(Agent.OS)" | "LinuxLegacyRemovedCxx20" | "$(Build.SourceVersion)"'
restoreKeys: |
"ccache-v4" | "$(Agent.OS)" | "Linux"
"ccache-v4" | "$(Agent.OS)" | "LinuxLegacyRemovedCxx20"
path: $(CCACHE_DIR)
displayName: 'Restore ccache'

Expand All @@ -97,116 +97,13 @@ jobs:
cat > dashboard.cmake << EOF
set(CTEST_BUILD_CONFIGURATION "MinSizeRel")
set(CTEST_CMAKE_GENERATOR "Ninja")
set(dashboard_cache "
BUILD_SHARED_LIBS:BOOL=OFF
BUILD_EXAMPLES:BOOL=OFF
ITK_WRAP_PYTHON:BOOL=OFF
CMAKE_C_COMPILER_LAUNCHER:STRING=ccache
CMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
ITK_COMPUTER_MEMORY_SIZE:STRING=4.5
")
set(CTEST_TEST_ARGS EXCLUDE_LABEL BigIO) # Disabled to conserve disk space
include(\$ENV{AGENT_BUILDDIRECTORY}/ITK-dashboard/azure_dashboard.cmake)
EOF
cat dashboard.cmake
workingDirectory: $(Agent.BuildDirectory)/ITK-dashboard
displayName: 'Configure CTest script'

- bash: |
set -x

c++ --version
cmake --version

ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2
displayName: 'Build and test'
env:
CTEST_OUTPUT_ON_FAILURE: 1
CCACHE_MAXSIZE: 2.4G

- bash: ccache --show-stats
condition: always()
displayName: 'ccache stats'

- bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build
condition: succeededOrFailed()
displayName: 'Report build warnings and errors'

- script: |
ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml
condition: succeededOrFailed()
displayName: 'Format CTest output in JUnit format'

- task: PublishTestResults@2
inputs:
testResultsFiles: "$(Agent.BuildDirectory)/JUnitTestResults.xml"
testRunTitle: 'CTest $(Agent.OS)'
condition: succeededOrFailed()
displayName: 'Publish test results'

- job: LinuxLegacyRemoved
timeoutInMinutes: 0
cancelTimeoutInMinutes: 300
pool:
vmImage: ubuntu-22.04
steps:
- checkout: self
clean: true
fetchDepth: 5
- bash: |
set -x
if [ -n "$(System.PullRequest.SourceCommitId)" ]; then
git checkout $(System.PullRequest.SourceCommitId)
fi
displayName: 'Checkout pull request HEAD'

- bash: |
set -x
sudo pip3 install ninja
sudo apt-get update
sudo apt-get install -y python3-venv ccache locales
sudo locale-gen de_DE.UTF-8
sudo python3 -m pip install lxml scikit-ci-addons
displayName: 'Install dependencies'

- bash: |
set -x
git clone -b dashboard --single-branch https://github.com/InsightSoftwareConsortium/ITK.git ITK-dashboard
workingDirectory: $(Agent.BuildDirectory)
displayName: 'Download dashboard script'

- task: Cache@2
inputs:
key: '"externaldata" | "v1" | **/*.cid'
restoreKeys: |
"externaldata" | "v1"
path: $(ExternalData_OBJECT_STORES)
displayName: 'Restore ExternalData object store'

- task: Cache@2
inputs:
key: '"ccache-v4" | "$(Agent.OS)" | "LinuxLegacyRemoved" | "$(Build.SourceVersion)"'
restoreKeys: |
"ccache-v4" | "$(Agent.OS)" | "LinuxLegacyRemoved"
path: $(CCACHE_DIR)
displayName: 'Restore ccache'

- bash: |
set -x
ccache --zero-stats
ccache --evict-older-than 7d
ccache --show-config
displayName: 'ccache config and maintenance'

- bash: |
cat > dashboard.cmake << EOF
set(CTEST_BUILD_CONFIGURATION "MinSizeRel")
set(CTEST_CMAKE_GENERATOR "Ninja")
set(BUILD_NAME_SUFFIX "LegacyRemoved")
set(BUILD_NAME_SUFFIX "LegacyRemovedCxx20")
set(dashboard_cache "
ITK_LEGACY_REMOVE:BOOL=ON
CMAKE_CXX_STANDARD:STRING=20
CMAKE_CXX_STANDARD_REQUIRED:BOOL=ON
BUILD_SHARED_LIBS:BOOL=OFF
BUILD_EXAMPLES:BOOL=OFF
BUILD_EXAMPLES:BOOL=ON
ITK_WRAP_PYTHON:BOOL=OFF
CMAKE_C_COMPILER_LAUNCHER:STRING=ccache
CMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
Expand Down Expand Up @@ -247,112 +144,6 @@ jobs:
- task: PublishTestResults@2
inputs:
testResultsFiles: "$(Agent.BuildDirectory)/JUnitTestResults.xml"
testRunTitle: 'CTest $(Agent.OS) LegacyRemoved'
testRunTitle: 'CTest $(Agent.OS) LegacyRemovedCxx20'
condition: succeededOrFailed()
displayName: 'Publish test results'

- job: LinuxCxx20
timeoutInMinutes: 0
cancelTimeoutInMinutes: 300
pool:
vmImage: ubuntu-24.04
steps:
- checkout: self
clean: true
fetchDepth: 5
- bash: |
set -x
if [ -n "$(System.PullRequest.SourceCommitId)" ]; then
git checkout $(System.PullRequest.SourceCommitId)
fi
displayName: "Checkout pull request HEAD"
- task: UsePythonVersion@0
inputs:
versionSpec: "3.10"
architecture: "x64"
- bash: |
set -x
sudo pip3 install ninja
sudo apt-get update
sudo apt-get install -y python3-venv ccache locales
sudo locale-gen de_DE.UTF-8
sudo python3 -m pip install lxml scikit-ci-addons
displayName: "Install dependencies"
- bash: |
set -x
git clone -b dashboard --single-branch https://github.com/InsightSoftwareConsortium/ITK.git ITK-dashboard
workingDirectory: $(Agent.BuildDirectory)
displayName: "Download dashboard script"

- task: Cache@2
inputs:
key: '"externaldata" | "v1" | **/*.cid'
restoreKeys: |
"externaldata" | "v1"
path: $(ExternalData_OBJECT_STORES)
displayName: 'Restore ExternalData object store'

- task: Cache@2
inputs:
key: '"ccache-v4" | "$(Agent.OS)" | "LinuxCxx20" | "$(Build.SourceVersion)"'
restoreKeys: |
"ccache-v4" | "$(Agent.OS)" | "LinuxCxx20"
path: $(CCACHE_DIR)
displayName: 'Restore ccache'

- bash: |
set -x
ccache --zero-stats
ccache --evict-older-than 7d
ccache --show-config
displayName: 'ccache config and maintenance'

- bash: |
cat > dashboard.cmake << EOF
set(CTEST_BUILD_CONFIGURATION "MinSizeRel")
set(CTEST_CMAKE_GENERATOR "Ninja")
set(BUILD_NAME_SUFFIX "Cxx20")
set(dashboard_cache "
CMAKE_CXX_STANDARD:STRING=20
CMAKE_CXX_STANDARD_REQUIRED:BOOL=ON
BUILD_SHARED_LIBS:BOOL=OFF
BUILD_EXAMPLES:BOOL=OFF
ITK_WRAP_PYTHON:BOOL=OFF
CMAKE_C_COMPILER_LAUNCHER:STRING=ccache
CMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
ITK_COMPUTER_MEMORY_SIZE:STRING=4.5
")
set(CTEST_TEST_ARGS EXCLUDE_LABEL BigIO) # Disabled to conserve disk space
include(\$ENV{AGENT_BUILDDIRECTORY}/ITK-dashboard/azure_dashboard.cmake)
EOF
cat dashboard.cmake
workingDirectory: $(Agent.BuildDirectory)/ITK-dashboard
displayName: "Configure CTest script"
- bash: |
set -x
c++ --version
cmake --version
ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2
displayName: "Build and test"
env:
CTEST_OUTPUT_ON_FAILURE: 1
CCACHE_MAXSIZE: 2.4G

- bash: ccache --show-stats
condition: always()
displayName: 'ccache stats'

- bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build
condition: succeededOrFailed()
displayName: 'Report build warnings and errors'

- script: |
ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml
condition: succeededOrFailed()
displayName: "Format CTest output in JUnit format"
- task: PublishTestResults@2
inputs:
testResultsFiles: "$(Agent.BuildDirectory)/JUnitTestResults.xml"
testRunTitle: "CTest $(Agent.OS) Cxx20"
condition: succeededOrFailed()
displayName: "Publish test results"
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ jobs:
python_executable=`which python3`
python_root_dir=$(dirname $(dirname ${python_executable}))
cat > dashboard.cmake << EOF
set(CTEST_BUILD_CONFIGURATION "MinSizeRel")
set(CTEST_BUILD_CONFIGURATION "Release")
set(CTEST_CMAKE_GENERATOR "Ninja")
set(BUILD_NAME_SUFFIX "-Python")
set(dashboard_cache "
Expand Down
Loading
Loading