[libcxx-commits] [libcxx] [llvm] [libc++][CI] Reenables clang-tidy. (PR #90077)
Mark de Wever via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Apr 26 09:27:20 PDT 2024
https://github.com/mordante updated https://github.com/llvm/llvm-project/pull/90077
>From 5ab23cbe4869142c5f51e87b82b27e9d6a674904 Mon Sep 17 00:00:00 2001
From: Mark de Wever <koraq at xs4all.nl>
Date: Thu, 25 Apr 2024 18:12:23 +0200
Subject: [PATCH 1/2] [libc++][CI] Reenables clang-tidy.
This is currently a test patch; locally clang-tidy seems to be used in
the Docker image.
---
.github/workflows/libcxx-build-and-test.yaml | 156 ------------------
libcxx/test/CMakeLists.txt | 4 +
.../tools/clang_tidy_checks/CMakeLists.txt | 2 -
libcxx/utils/libcxx/test/params.py | 4 +
4 files changed, 8 insertions(+), 158 deletions(-)
diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index 44a3d79c72c0ac..f03c9f506712c5 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -55,16 +55,10 @@ jobs:
fail-fast: false
matrix:
config: [
- 'generic-cxx03',
'generic-cxx26',
- 'generic-modules'
]
cc: [ 'clang-19' ]
cxx: [ 'clang++-19' ]
- include:
- - config: 'generic-gcc'
- cc: 'gcc-13'
- cxx: 'g++-13'
steps:
- uses: actions/checkout at v4
- name: ${{ matrix.config }}.${{ matrix.cxx }}
@@ -82,153 +76,3 @@ jobs:
**/CMakeError.log
**/CMakeOutput.log
**/crash_diagnostics/*
- stage2:
- if: github.repository_owner == 'llvm'
- runs-on: libcxx-runners-8-set
- needs: [ stage1 ]
- continue-on-error: false
- strategy:
- fail-fast: false
- matrix:
- config: [
- 'generic-cxx11',
- 'generic-cxx14',
- 'generic-cxx17',
- 'generic-cxx20',
- 'generic-cxx23'
- ]
- cc: [ 'clang-19' ]
- cxx: [ 'clang++-19' ]
- include:
- - config: 'generic-gcc-cxx11'
- cc: 'gcc-13'
- cxx: 'g++-13'
- - config: 'generic-cxx23'
- cc: 'clang-17'
- cxx: 'clang++-17'
- - config: 'generic-cxx26'
- cc: 'clang-18'
- cxx: 'clang++-18'
- steps:
- - uses: actions/checkout at v4
- - name: ${{ matrix.config }}
- run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
- env:
- CC: ${{ matrix.cc }}
- CXX: ${{ matrix.cxx }}
- - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
- if: always() # Upload artifacts even if the build or test suite fails
- with:
- name: ${{ matrix.config }}-${{ matrix.cxx }}-results
- path: |
- **/test-results.xml
- **/*.abilist
- **/CMakeError.log
- **/CMakeOutput.log
- **/crash_diagnostics/*
- stage3:
- if: github.repository_owner == 'llvm'
- needs: [ stage1, stage2 ]
- continue-on-error: false
- strategy:
- fail-fast: false
- max-parallel: 8
- matrix:
- config: [
- 'generic-abi-unstable',
- 'generic-hardening-mode-debug',
- 'generic-hardening-mode-extensive',
- 'generic-hardening-mode-fast',
- 'generic-hardening-mode-fast-with-abi-breaks',
- 'generic-merged',
- 'generic-modules-lsv',
- 'generic-no-exceptions',
- 'generic-no-experimental',
- 'generic-no-filesystem',
- 'generic-no-localization',
- 'generic-no-random_device',
- 'generic-no-threads',
- 'generic-no-tzdb',
- 'generic-no-unicode',
- 'generic-no-wide-characters',
- 'generic-no-rtti',
- 'generic-optimized-speed',
- 'generic-static',
- # TODO Find a better place for the benchmark and bootstrapping builds to live. They're either very expensive
- # or don't provide much value since the benchmark run results are too noise on the bots.
- 'benchmarks',
- 'bootstrapping-build'
- ]
- machine: [ 'libcxx-runners-8-set' ]
- include:
- - config: 'generic-cxx26'
- machine: libcxx-runners-8-set
- - config: 'generic-asan'
- machine: libcxx-runners-8-set
- - config: 'generic-tsan'
- machine: libcxx-runners-8-set
- - config: 'generic-ubsan'
- machine: libcxx-runners-8-set
- # Use a larger machine for MSAN to avoid timeout and memory allocation issues.
- - config: 'generic-msan'
- machine: libcxx-runners-8-set
- runs-on: ${{ matrix.machine }}
- steps:
- - uses: actions/checkout at v4
- - name: ${{ matrix.config }}
- run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
- env:
- CC: clang-19
- CXX: clang++-19
- - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
- if: always()
- with:
- name: ${{ matrix.config }}-results
- path: |
- **/test-results.xml
- **/*.abilist
- **/CMakeError.log
- **/CMakeOutput.log
- **/crash_diagnostics/*
- windows:
- runs-on: windows-2022
- needs: [ stage1 ]
- strategy:
- fail-fast: false
- matrix:
- include:
- - { config: clang-cl-dll, mingw: false }
- - { config: clang-cl-static, mingw: false }
- - { config: clang-cl-no-vcruntime, mingw: false }
- - { config: clang-cl-debug, mingw: false }
- - { config: clang-cl-static-crt, mingw: false }
- - { config: mingw-dll, mingw: true }
- - { config: mingw-static, mingw: true }
- - { config: mingw-dll-i686, mingw: true }
- steps:
- - uses: actions/checkout at v4
- - name: Install dependencies
- run: |
- choco install -y ninja wget
- pip install psutil
- - name: Install a current LLVM
- if: ${{ matrix.mingw != true }}
- run: |
- choco install -y llvm --version=17.0.6
- - name: Install llvm-mingw
- if: ${{ matrix.mingw == true }}
- run: |
- curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20231128/llvm-mingw-20231128-ucrt-x86_64.zip
- powershell Expand-Archive llvm-mingw*.zip -DestinationPath .
- del llvm-mingw*.zip
- mv llvm-mingw* c:\llvm-mingw
- echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
- - name: Add Git Bash to the path
- run: |
- echo "c:\Program Files\Git\usr\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
- - name: Set up the MSVC dev environment
- if: ${{ matrix.mingw != true }}
- uses: ilammy/msvc-dev-cmd at v1
- - name: Build and test
- run: |
- bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
diff --git a/libcxx/test/CMakeLists.txt b/libcxx/test/CMakeLists.txt
index e0d3a0dbc40031..25d5b6c783fbec 100644
--- a/libcxx/test/CMakeLists.txt
+++ b/libcxx/test/CMakeLists.txt
@@ -1,5 +1,8 @@
include(HandleLitArguments)
add_subdirectory(tools)
+if(TARGET cxx-tidy)
+ list(APPEND LIBCXX_TEST_DEPS cxx-tidy)
+endif()
# By default, libcxx and libcxxabi share a library directory.
if (NOT LIBCXX_CXX_ABI_LIBRARY_PATH)
@@ -73,6 +76,7 @@ if (LIBCXX_INCLUDE_TESTS)
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
MAIN_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py")
+ MESSAGE("XXX ${LIBCXX_TEST_DEPS}")
add_custom_target(cxx-test-depends
DEPENDS cxx ${LIBCXX_TEST_DEPS}
COMMENT "Builds dependencies required to run the test suite.")
diff --git a/libcxx/test/tools/clang_tidy_checks/CMakeLists.txt b/libcxx/test/tools/clang_tidy_checks/CMakeLists.txt
index 28eed614458336..734569b2f5af4b 100644
--- a/libcxx/test/tools/clang_tidy_checks/CMakeLists.txt
+++ b/libcxx/test/tools/clang_tidy_checks/CMakeLists.txt
@@ -88,5 +88,3 @@ set_target_properties(cxx-tidy PROPERTIES
set_target_properties(cxx-tidy PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_SHARED_MODULE_SUFFIX_CXX .plugin) # Use a portable suffix to simplify how we can find it from Lit
-
-list(APPEND LIBCXX_TEST_DEPS cxx-tidy)
diff --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py
index c2d294e49f4884..83a84d6f50cd8d 100644
--- a/libcxx/utils/libcxx/test/params.py
+++ b/libcxx/utils/libcxx/test/params.py
@@ -126,6 +126,7 @@ def getSuitableClangTidy(cfg):
)
!= 0
):
+ print("CLANG-TIDY: no plugin")
return None
version = "{__clang_major__}.{__clang_minor__}.{__clang_patchlevel__}".format(
@@ -135,8 +136,11 @@ def getSuitableClangTidy(cfg):
cfg, version, "clang-tidy-{__clang_major__}".format(**compilerMacros(cfg))
)
+ print(f"CLANG-TIDY: version={version} exe={exe}")
+
if not exe:
exe = testClangTidy(cfg, version, "clang-tidy")
+ print(f"CLANG-TIDY: new exe={exe}")
return exe
>From 50cd73a8314305b25d1b09995818106b389d8580 Mon Sep 17 00:00:00 2001
From: Mark de Wever <koraq at xs4all.nl>
Date: Fri, 26 Apr 2024 18:24:12 +0200
Subject: [PATCH 2/2] Updates the patch and remove debug informatiom.
---
.github/workflows/libcxx-build-and-test.yaml | 156 +++++++++++++++++++
libcxx/test/CMakeLists.txt | 4 +-
libcxx/utils/libcxx/test/params.py | 4 -
3 files changed, 159 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index f03c9f506712c5..44a3d79c72c0ac 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -55,10 +55,16 @@ jobs:
fail-fast: false
matrix:
config: [
+ 'generic-cxx03',
'generic-cxx26',
+ 'generic-modules'
]
cc: [ 'clang-19' ]
cxx: [ 'clang++-19' ]
+ include:
+ - config: 'generic-gcc'
+ cc: 'gcc-13'
+ cxx: 'g++-13'
steps:
- uses: actions/checkout at v4
- name: ${{ matrix.config }}.${{ matrix.cxx }}
@@ -76,3 +82,153 @@ jobs:
**/CMakeError.log
**/CMakeOutput.log
**/crash_diagnostics/*
+ stage2:
+ if: github.repository_owner == 'llvm'
+ runs-on: libcxx-runners-8-set
+ needs: [ stage1 ]
+ continue-on-error: false
+ strategy:
+ fail-fast: false
+ matrix:
+ config: [
+ 'generic-cxx11',
+ 'generic-cxx14',
+ 'generic-cxx17',
+ 'generic-cxx20',
+ 'generic-cxx23'
+ ]
+ cc: [ 'clang-19' ]
+ cxx: [ 'clang++-19' ]
+ include:
+ - config: 'generic-gcc-cxx11'
+ cc: 'gcc-13'
+ cxx: 'g++-13'
+ - config: 'generic-cxx23'
+ cc: 'clang-17'
+ cxx: 'clang++-17'
+ - config: 'generic-cxx26'
+ cc: 'clang-18'
+ cxx: 'clang++-18'
+ steps:
+ - uses: actions/checkout at v4
+ - name: ${{ matrix.config }}
+ run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+ env:
+ CC: ${{ matrix.cc }}
+ CXX: ${{ matrix.cxx }}
+ - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
+ if: always() # Upload artifacts even if the build or test suite fails
+ with:
+ name: ${{ matrix.config }}-${{ matrix.cxx }}-results
+ path: |
+ **/test-results.xml
+ **/*.abilist
+ **/CMakeError.log
+ **/CMakeOutput.log
+ **/crash_diagnostics/*
+ stage3:
+ if: github.repository_owner == 'llvm'
+ needs: [ stage1, stage2 ]
+ continue-on-error: false
+ strategy:
+ fail-fast: false
+ max-parallel: 8
+ matrix:
+ config: [
+ 'generic-abi-unstable',
+ 'generic-hardening-mode-debug',
+ 'generic-hardening-mode-extensive',
+ 'generic-hardening-mode-fast',
+ 'generic-hardening-mode-fast-with-abi-breaks',
+ 'generic-merged',
+ 'generic-modules-lsv',
+ 'generic-no-exceptions',
+ 'generic-no-experimental',
+ 'generic-no-filesystem',
+ 'generic-no-localization',
+ 'generic-no-random_device',
+ 'generic-no-threads',
+ 'generic-no-tzdb',
+ 'generic-no-unicode',
+ 'generic-no-wide-characters',
+ 'generic-no-rtti',
+ 'generic-optimized-speed',
+ 'generic-static',
+ # TODO Find a better place for the benchmark and bootstrapping builds to live. They're either very expensive
+ # or don't provide much value since the benchmark run results are too noise on the bots.
+ 'benchmarks',
+ 'bootstrapping-build'
+ ]
+ machine: [ 'libcxx-runners-8-set' ]
+ include:
+ - config: 'generic-cxx26'
+ machine: libcxx-runners-8-set
+ - config: 'generic-asan'
+ machine: libcxx-runners-8-set
+ - config: 'generic-tsan'
+ machine: libcxx-runners-8-set
+ - config: 'generic-ubsan'
+ machine: libcxx-runners-8-set
+ # Use a larger machine for MSAN to avoid timeout and memory allocation issues.
+ - config: 'generic-msan'
+ machine: libcxx-runners-8-set
+ runs-on: ${{ matrix.machine }}
+ steps:
+ - uses: actions/checkout at v4
+ - name: ${{ matrix.config }}
+ run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+ env:
+ CC: clang-19
+ CXX: clang++-19
+ - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
+ if: always()
+ with:
+ name: ${{ matrix.config }}-results
+ path: |
+ **/test-results.xml
+ **/*.abilist
+ **/CMakeError.log
+ **/CMakeOutput.log
+ **/crash_diagnostics/*
+ windows:
+ runs-on: windows-2022
+ needs: [ stage1 ]
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - { config: clang-cl-dll, mingw: false }
+ - { config: clang-cl-static, mingw: false }
+ - { config: clang-cl-no-vcruntime, mingw: false }
+ - { config: clang-cl-debug, mingw: false }
+ - { config: clang-cl-static-crt, mingw: false }
+ - { config: mingw-dll, mingw: true }
+ - { config: mingw-static, mingw: true }
+ - { config: mingw-dll-i686, mingw: true }
+ steps:
+ - uses: actions/checkout at v4
+ - name: Install dependencies
+ run: |
+ choco install -y ninja wget
+ pip install psutil
+ - name: Install a current LLVM
+ if: ${{ matrix.mingw != true }}
+ run: |
+ choco install -y llvm --version=17.0.6
+ - name: Install llvm-mingw
+ if: ${{ matrix.mingw == true }}
+ run: |
+ curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20231128/llvm-mingw-20231128-ucrt-x86_64.zip
+ powershell Expand-Archive llvm-mingw*.zip -DestinationPath .
+ del llvm-mingw*.zip
+ mv llvm-mingw* c:\llvm-mingw
+ echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
+ - name: Add Git Bash to the path
+ run: |
+ echo "c:\Program Files\Git\usr\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
+ - name: Set up the MSVC dev environment
+ if: ${{ matrix.mingw != true }}
+ uses: ilammy/msvc-dev-cmd at v1
+ - name: Build and test
+ run: |
+ bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
diff --git a/libcxx/test/CMakeLists.txt b/libcxx/test/CMakeLists.txt
index 25d5b6c783fbec..fd57aa9fe8b375 100644
--- a/libcxx/test/CMakeLists.txt
+++ b/libcxx/test/CMakeLists.txt
@@ -1,5 +1,8 @@
include(HandleLitArguments)
add_subdirectory(tools)
+# When the tools add clang-tidy support, the dependencies need to be updated.
+# This cannot be done in the tools CMakeLists.txt since that does not update
+# the status in this (a parent) directory.
if(TARGET cxx-tidy)
list(APPEND LIBCXX_TEST_DEPS cxx-tidy)
endif()
@@ -76,7 +79,6 @@ if (LIBCXX_INCLUDE_TESTS)
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
MAIN_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py")
- MESSAGE("XXX ${LIBCXX_TEST_DEPS}")
add_custom_target(cxx-test-depends
DEPENDS cxx ${LIBCXX_TEST_DEPS}
COMMENT "Builds dependencies required to run the test suite.")
diff --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py
index 83a84d6f50cd8d..c2d294e49f4884 100644
--- a/libcxx/utils/libcxx/test/params.py
+++ b/libcxx/utils/libcxx/test/params.py
@@ -126,7 +126,6 @@ def getSuitableClangTidy(cfg):
)
!= 0
):
- print("CLANG-TIDY: no plugin")
return None
version = "{__clang_major__}.{__clang_minor__}.{__clang_patchlevel__}".format(
@@ -136,11 +135,8 @@ def getSuitableClangTidy(cfg):
cfg, version, "clang-tidy-{__clang_major__}".format(**compilerMacros(cfg))
)
- print(f"CLANG-TIDY: version={version} exe={exe}")
-
if not exe:
exe = testClangTidy(cfg, version, "clang-tidy")
- print(f"CLANG-TIDY: new exe={exe}")
return exe
More information about the libcxx-commits
mailing list