Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PS-9188 [trunk]: Add clang-18 to Azure Pipelines #5286

Merged
merged 4 commits into from
Apr 18, 2024
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
57 changes: 36 additions & 21 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
CCACHE_MAXSIZE: 2G
OS_NAME: $(Agent.OS)
PARENT_BRANCH: trunk
INVERTED: OFF
BUILD_PARAMS_TYPE: normal

strategy:
matrix:
Expand All @@ -90,54 +90,69 @@ jobs:
BuildType: Debug

# clang-10 and newer compilers
clang-17 RelWithDebInfo [Ubuntu 22.04 Jammy]:
clang-18 RelWithDebInfo [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
UBUNTU_CODE_NAME: jammy
Compiler: clang
CompilerVer: 17
CompilerVer: 18
BuildType: RelWithDebInfo

${{ if or(ne(variables['Build.Reason'], 'PullRequest'), contains(variables['Build.SourceBranchName'], 'fullci')) }}:
clang-17 RelWithDebInfo INVERTED=ON [Ubuntu 22.04 Jammy]:
clang-18 RelWithDebInfo INVERTED [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
UBUNTU_CODE_NAME: jammy
Compiler: clang
CompilerVer: 17
CompilerVer: 18
BuildType: RelWithDebInfo
INVERTED: ON
BUILD_PARAMS_TYPE: inverted

${{ if or(ne(variables['Build.Reason'], 'PullRequest'), contains(variables['Build.SourceBranchName'], 'fullci')) }}:
clang-17 Debug [Ubuntu 22.04 Jammy]:
clang-18 Debug [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
UBUNTU_CODE_NAME: jammy
Compiler: clang
CompilerVer: 17
CompilerVer: 18
BuildType: Debug

clang-17 Debug INVERTED=ON [Ubuntu 22.04 Jammy]:
clang-18 Debug INVERTED [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
UBUNTU_CODE_NAME: jammy
Compiler: clang
CompilerVer: 17
CompilerVer: 18
BuildType: Debug
INVERTED: ON
BUILD_PARAMS_TYPE: inverted

${{ if or(ne(variables['Build.Reason'], 'PullRequest'), contains(variables['Build.SourceBranchName'], 'fullci')) }}:
clang-16 RelWithDebInfo [Ubuntu 22.04 Jammy]:
clang-17 RelWithDebInfo [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
UBUNTU_CODE_NAME: jammy
Compiler: clang
CompilerVer: 16
CompilerVer: 17
BuildType: RelWithDebInfo

${{ if or(ne(variables['Build.Reason'], 'PullRequest'), contains(variables['Build.SourceBranchName'], 'fullci')) }}:
clang-16 Debug [Ubuntu 22.04 Jammy]:
clang-17 Debug [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
UBUNTU_CODE_NAME: jammy
Compiler: clang
CompilerVer: 16
CompilerVer: 17
BuildType: Debug

${{ if or(ne(variables['Build.Reason'], 'PullRequest'), contains(variables['Build.SourceBranchName'], 'fullci')) }}:
clang-16 RelWithDebInfo [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
UBUNTU_CODE_NAME: jammy
Compiler: clang
CompilerVer: 16
BuildType: RelWithDebInfo

clang-16 Debug [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
UBUNTU_CODE_NAME: jammy
Compiler: clang
CompilerVer: 16
BuildType: Debug

${{ if or(ne(variables['Build.Reason'], 'PullRequest'), contains(variables['Build.SourceBranchName'], 'fullci')) }}:
clang-15 RelWithDebInfo [Ubuntu 22.04 Jammy]:
imageName: 'ubuntu-22.04'
Expand Down Expand Up @@ -295,7 +310,7 @@ jobs:
SELECTED_CXX=clang++
fi

echo SELECTED_CC=$SELECTED_CC SELECTED_CXX=$SELECTED_CXX BuildType=$(BuildType) INVERTED=$(INVERTED) imageName=$(imageName) OS_NAME=$OS_NAME
echo SELECTED_CC=$SELECTED_CC SELECTED_CXX=$SELECTED_CXX BuildType=$(BuildType) BUILD_PARAMS_TYPE=$(BUILD_PARAMS_TYPE) imageName=$(imageName) OS_NAME=$OS_NAME
echo --- Configure required LLVM and Ubuntu Toolchain repositories
if [[ "$OS_NAME" == "Linux" ]] && [[ "$SELECTED_CC" == "clang"* ]]; then
PACKAGES="llvm-$(CompilerVer)-dev $PACKAGES"
Expand All @@ -310,7 +325,7 @@ jobs:

sudo -E apt-get -yq --no-install-suggests --no-install-recommends --allow-unauthenticated install $PACKAGES cmake cmake-curses-gui ccache bison libudev-dev libaio-dev libmecab-dev libnuma-dev libssl-dev libedit-dev libpam-dev libcurl4-openssl-dev libldap2-dev libkrb5-dev libsasl2-dev libsasl2-modules-gssapi-mit || exit 1;
`# SYSTEM_LIBRARIES = CURL EDITLINE ICU LIBEVENT LZ4 PROTOBUF SSL ZSTD FIDO (Ubuntu 21.04+)`
if [[ "$(INVERTED)" != "ON" ]]; then
if [[ "$(BUILD_PARAMS_TYPE)" != "inverted" ]]; then
sudo -E apt-get -yq --no-install-suggests --no-install-recommends --allow-unauthenticated install libicu-dev libevent-dev liblz4-dev zlib1g-dev protobuf-compiler libprotobuf-dev libprotoc-dev libzstd-dev libfido2-dev || exit 1;
else
sudo -E apt-get -yq --no-install-suggests --no-install-recommends --allow-unauthenticated install libgflags-dev || exit 1;
Expand Down Expand Up @@ -340,8 +355,8 @@ jobs:
- task: Cache@2
continueOnError: true
inputs:
key: '"ccache"| "$(PARENT_BRANCH)" | "$(imageName)-$(Compiler)-$(REAL_COMPILER_VER)-$(BuildType)" | "INVERTED=$(INVERTED)" | "$(Build.SourceVersion)"'
restoreKeys: '"ccache" | "$(PARENT_BRANCH)" | "$(imageName)-$(Compiler)-$(REAL_COMPILER_VER)-$(BuildType)" | "INVERTED=$(INVERTED)"'
key: '"ccache"| "$(PARENT_BRANCH)" | "$(imageName)-$(Compiler)-$(REAL_COMPILER_VER)-$(BuildType)" | "BUILD_PARAMS_TYPE=$(BUILD_PARAMS_TYPE)" | "$(Build.SourceVersion)"'
restoreKeys: '"ccache" | "$(PARENT_BRANCH)" | "$(imageName)-$(Compiler)-$(REAL_COMPILER_VER)-$(BuildType)" | "BUILD_PARAMS_TYPE=$(BUILD_PARAMS_TYPE)"'
path: $(CCACHE_DIR)
displayName: '*** Download/upload ccached files'

Expand Down Expand Up @@ -377,7 +392,7 @@ jobs:
displayName: '*** System and compiler info'

- script: |
echo SELECTED_CC=$SELECTED_CC SELECTED_CXX=$SELECTED_CXX REAL_COMPILER_VER=$REAL_COMPILER_VER BuildType=$(BuildType) INVERTED=$(INVERTED) imageName=$(imageName) OS_NAME=$OS_NAME
echo SELECTED_CC=$SELECTED_CC SELECTED_CXX=$SELECTED_CXX REAL_COMPILER_VER=$REAL_COMPILER_VER BuildType=$(BuildType) BUILD_PARAMS_TYPE=$(BUILD_PARAMS_TYPE) imageName=$(imageName) OS_NAME=$OS_NAME
echo --- Set cmake parameters
COMPILE_OPT+=(
-DCMAKE_C_FLAGS_DEBUG=-g1
Expand Down Expand Up @@ -415,7 +430,7 @@ jobs:
CMAKE_OPT+="
-DMYSQL_MAINTAINER_MODE=ON
"
if [[ "$(INVERTED)" != "ON" ]]; then
if [[ "$(BUILD_PARAMS_TYPE)" != "inverted" ]]; then
CMAKE_OPT+="
-DWITH_MECAB=system
-DWITH_NUMA=ON
Expand Down
5 changes: 5 additions & 0 deletions cmake/maintainer.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,11 @@ IF(MY_COMPILER_IS_CLANG)
STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-shorten-64-to-32")
ENDIF()

# Suppress warnings for clang-18 or newer
IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18)
STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-deprecated-declarations")
ENDIF()

STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wextra-semi")
STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wheader-hygiene")
STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wnon-virtual-dtor")
Expand Down
5 changes: 5 additions & 0 deletions sql/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -991,6 +991,11 @@ ADD_DEPENDENCIES(sql_gis GenError)
TARGET_LINK_LIBRARIES(sql_gis sql_dd sql_main)
SET_TARGET_PROPERTIES(sql_gis PROPERTIES LINK_INTERFACE_MULTIPLICITY 3)

# Suppress warnings for clang-18 or newer
IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18)
TARGET_COMPILE_OPTIONS(sql_gis PRIVATE -Wno-enum-constexpr-conversion)
ENDIF()

# This typically saves a few hundred megabytes of disk space.
IF(COMPRESS_DEBUG_SECTIONS)
MY_CHECK_CXX_COMPILER_FLAG("-gz" HAVE_COMPRESS_GZ_OPTION)
Expand Down
Loading