This is an automated email from the ASF dual-hosted git repository. joemcdonnell pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit b8b377d78e580dbec2e6c332a0d0fd05ea21ba05 Author: Joe McDonnell <[email protected]> AuthorDate: Wed Feb 11 22:51:51 2026 -0800 IMPALA-14508/IMPALA-14513/IMPALA-14717: Bump toolchain to pick up new CMake / OpenLDAP / Curl This uses a new toolchain to fix a few different JIRAs: 1. This bumps the version of CMake to 3.31.11 - CMake changed its policy around PackageName_ROOT variables to allow the all-caps (PACKAGENAME_ROOT) and we adopt the new policy. - CMake deprecated its current FindBoost module, and this switches to this BoostConfig.cmake file. This removes a bunch of legacy options around this. 2. This bumps the version of OpenLDAP to 2.5.20 (which required OpenSSL 1.1.1) 3. This bumps the verison of Curl to 8.17.0 (which requires fixing the error message in one test) 4. This changes the CMake code to require OpenSSL 1.1.1. Testing: - Ran core job Change-Id: Icc3a6d965a04a761cd443e27214dec811ec9863f Reviewed-on: http://gerrit.cloudera.org:8080/23968 Reviewed-by: Joe McDonnell <[email protected]> Reviewed-by: Michael Smith <[email protected]> Tested-by: Joe McDonnell <[email protected]> --- CMakeLists.txt | 53 +++++++++------------- be/CMakeLists.txt | 2 +- bin/impala-config.sh | 14 +++--- cmake_modules/FindHDFS.cmake | 5 +- cmake_modules/FindThriftCpp.cmake | 4 +- cmake_modules/kudu_cmake_fns.txt | 2 +- .../apache/impala/customcluster/JwtHttpTest.java | 2 +- 7 files changed, 36 insertions(+), 46 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 75ec07d25..a4803ef35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,13 @@ cmake_minimum_required(VERSION 3.22) +# CMP0144 controls how CMake find_package() interacts with X_ROOT +# variables. The NEW policy respects both Package_ROOT (case-sensitive) +# and PACKAGE_ROOT (all-caps). Since we tend to use all-caps names +# (e.g. BOOST_ROOT), this is a better setting for us (OLD is only the +# case-sensitive). Explicitly setting this avoids several verbose warnings. +cmake_policy(SET CMP0144 NEW) + # This is a Kudu-specific flag that disables Kudu targets that are test-only. set(NO_TESTS 1) @@ -153,36 +160,6 @@ set_dep_root(CALLONCEHACK) set_dep_root(CLOUDFLAREZLIB) set_dep_root(OPENTELEMETRY_CPP) -# The boost-cmake project hasn't been maintained for years. Let's make sure we -# don't accidentally use it if it can be found. -set(Boost_NO_BOOST_CMAKE ON) - -# Make Boost follow the preference of shared libraries vs static libraries. -if(BUILD_SHARED_LIBS) - set(Boost_USE_STATIC_LIBS OFF) -else() - set(Boost_USE_STATIC_LIBS ON) -endif() -# Always use the static Boost runtime -set(Boost_USE_STATIC_RUNTIME ON) - -# Newer versions of boost (including the version in toolchain) don't build separate -# multithreaded versions (they always are). Make sure to pick those up. -# TODO: understand the consequence of leaving this ON (the default value). -set(Boost_USE_MULTITHREADED OFF) - -# The casing and underscoring expected for these properties varies between -# versions of CMake. Multiple inconsistent versions may be present here -# intentionally to provide what a wide range of versions expects. -set(Boost_NO_SYSTEM_PATHS true) -set(BOOST_LIBRARYDIR ${BOOST_ROOT}/lib) -set(BOOST_INCLUDEDIR ${BOOST_ROOT}/include) -set(Boost_INCLUDE_DIR ${BOOST_INCLUDEDIR}) - -if (CMAKE_DEBUG) - set(Boost_DEBUG TRUE) -endif() - # Adds a third-party library with name ${NAME}. If BUILD_SHARED_LIBS is true, the new # library refers to ${SHARED_LIB}; otherwise it refers to ${STATIC_LIB}. If only one # library (static or shared) is provided, it is used regardless of BUILD_SHARED_LIBS. The @@ -214,8 +191,20 @@ function(IMPALA_ADD_THIRDPARTY_LIB NAME HEADER STATIC_LIB SHARED_LIB) endif() endfunction() +# Make Boost follow the preference of shared libraries vs static libraries. +if(BUILD_SHARED_LIBS) + set(Boost_USE_STATIC_LIBS OFF) +else() + set(Boost_USE_STATIC_LIBS ON) +endif() + +if (CMAKE_DEBUG) + set(Boost_DEBUG TRUE) +endif() -find_package(Boost REQUIRED COMPONENTS thread regex filesystem system date_time random locale serialization) +find_package(Boost CONFIG REQUIRED + COMPONENTS thread regex filesystem system date_time random locale serialization + NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH) # Mark Boost as a system header to avoid compile warnings. include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) message(STATUS "Boost include dir: " ${Boost_INCLUDE_DIRS}) @@ -223,7 +212,7 @@ message(STATUS "Boost libraries: ${Boost_LIBRARIES}") # Use OpenSSL from the system, because that is the closest match to the version that this # build will use when it is deployed. -find_package(OpenSSL 1.0.2 REQUIRED) +find_package(OpenSSL 1.1.1 REQUIRED) # OpenSSL, being a security dependency, is always dynamically linked. IMPALA_ADD_THIRDPARTY_LIB(openssl_ssl ${OPENSSL_INCLUDE_DIR} "" ${OPENSSL_SSL_LIBRARY}) diff --git a/be/CMakeLists.txt b/be/CMakeLists.txt index 69da6f511..32442d431 100644 --- a/be/CMakeLists.txt +++ b/be/CMakeLists.txt @@ -457,7 +457,7 @@ set(CLANG_INCLUDE_FLAGS "-I${AVRO_INCLUDE_DIR}" "-I${ORC_INCLUDE_DIR}" # Include Boost as a system directory to suppress warnings from headers. - "-isystem${BOOST_INCLUDEDIR}" + "-isystem${Boost_INCLUDE_DIRS}" "-I${KUDU_CLIENT_INCLUDE_DIR}" # Required so that jni.h can be found during Clang compilation "-I${JAVA_INCLUDE_PATH}" diff --git a/bin/impala-config.sh b/bin/impala-config.sh index 0c9808f0c..7306e1bc2 100755 --- a/bin/impala-config.sh +++ b/bin/impala-config.sh @@ -81,13 +81,13 @@ export USE_AVRO_CPP=${USE_AVRO_CPP:=false} # moving to a different build of the toolchain, e.g. when a version is bumped or a # compile option is changed. The build id can be found in the output of the toolchain # build jobs, it is constructed from the build number and toolchain git hash prefix. -export IMPALA_TOOLCHAIN_BUILD_ID_AARCH64=159-1fade8203e -export IMPALA_TOOLCHAIN_BUILD_ID_X86_64=612-1fade8203e +export IMPALA_TOOLCHAIN_BUILD_ID_AARCH64=169-65bcf0ca99 +export IMPALA_TOOLCHAIN_BUILD_ID_X86_64=630-65bcf0ca99 export IMPALA_TOOLCHAIN_REPO=\ ${IMPALA_TOOLCHAIN_REPO:-https://github.com/cloudera/native-toolchain.git} export IMPALA_TOOLCHAIN_BRANCH=${IMPALA_TOOLCHAIN_BRANCH:-master} export IMPALA_TOOLCHAIN_COMMIT_HASH=\ -${IMPALA_TOOLCHAIN_COMMIT_HASH-1fade8203e3df234dc5bab35cd32ff1f40d1db17} +${IMPALA_TOOLCHAIN_COMMIT_HASH-65bcf0ca99082360dffe1484425ec9a77e1212ca} # Compare the build ref in build IDs by removing everything up-to-and-including the # first hyphen. if [ "${IMPALA_TOOLCHAIN_BUILD_ID_AARCH64#*-}" \ @@ -115,7 +115,7 @@ else export IMPALA_AVRO_VERSION=1.7.4-p5 fi unset IMPALA_AVRO_URL -export IMPALA_BINUTILS_VERSION=2.42 +export IMPALA_BINUTILS_VERSION=2.42-p24 unset IMPALA_BINUTILS_URL export IMPALA_BOOST_VERSION=1.74.0-p1 unset IMPALA_BOOST_URL @@ -125,11 +125,11 @@ export IMPALA_BZIP2_VERSION=1.0.8-p2 unset IMPALA_BZIP2_URL export IMPALA_CCTZ_VERSION=2.2 unset IMPALA_CCTZ_URL -export IMPALA_CMAKE_VERSION=3.22.2 +export IMPALA_CMAKE_VERSION=3.31.11 unset IMPALA_CMAKE_URL export IMPALA_CRCUTIL_VERSION=2903870057d2f1f109b245650be29e856dc8b646 unset IMPALA_CRCUTIL_URL -export IMPALA_CURL_VERSION=8.14.1 +export IMPALA_CURL_VERSION=8.17.0 unset IMPALA_CURL_URL export IMPALA_CYRUS_SASL_VERSION=2.1.23 unset IMPALA_CYRUS_SASL_URL @@ -177,7 +177,7 @@ export IMPALA_LZ4_VERSION=1.9.3 unset IMPALA_LZ4_URL export IMPALA_ZSTD_VERSION=1.5.2 unset IMPALA_ZSTD_URL -export IMPALA_OPENLDAP_VERSION=2.4.47 +export IMPALA_OPENLDAP_VERSION=2.5.20 unset IMPALA_OPENLDAP_URL export IMPALA_ORC_VERSION=1.7.9-p11 unset IMPALA_ORC_URL diff --git a/cmake_modules/FindHDFS.cmake b/cmake_modules/FindHDFS.cmake index 640c1b832..f451c7383 100644 --- a/cmake_modules/FindHDFS.cmake +++ b/cmake_modules/FindHDFS.cmake @@ -25,8 +25,9 @@ # HDFS_FOUND, If false, do not try to use ant # hdfsstatic -exec_program(hadoop ARGS version OUTPUT_VARIABLE Hadoop_VERSION - RETURN_VALUE Hadoop_RETURN) +execute_process(COMMAND hadoop version + OUTPUT_VARIABLE Hadoop_VERSION + RESULT_VARIABLE Hadoop_RETURN) # Only look in HADOOP_INCLUDE_DIR find_path(HDFS_INCLUDE_DIR hdfs.h PATHS diff --git a/cmake_modules/FindThriftCpp.cmake b/cmake_modules/FindThriftCpp.cmake index 964a8ff12..57e8f9714 100644 --- a/cmake_modules/FindThriftCpp.cmake +++ b/cmake_modules/FindThriftCpp.cmake @@ -66,8 +66,8 @@ find_program(THRIFT_CPP_COMPILER thrift if (THRIFT_CPP_LIB) set(THRIFT_CPP_LIBS ${THRIFT_CPP_LIB}) set(THRIFT_CPP_STATIC_LIB ${THRIFT_CPP_STATIC_LIB_PATH}/libthrift.a) - exec_program(${THRIFT_CPP_COMPILER} - ARGS -version OUTPUT_VARIABLE THRIFT_CPP_VERSION RETURN_VALUE THRIFT_CPP_RETURN) + execute_process(COMMAND ${THRIFT_CPP_COMPILER} -version + OUTPUT_VARIABLE THRIFT_CPP_VERSION RESULT_VARIABLE THRIFT_CPP_RETURN) if (NOT THRIFT_CPP_FIND_QUIETLY) message(STATUS "Thrift version: ${THRIFT_CPP_VERSION}") endif () diff --git a/cmake_modules/kudu_cmake_fns.txt b/cmake_modules/kudu_cmake_fns.txt index 2c5250bd3..d39ad5957 100644 --- a/cmake_modules/kudu_cmake_fns.txt +++ b/cmake_modules/kudu_cmake_fns.txt @@ -20,7 +20,7 @@ # also defines a shim method (ADD_KUDU_TEST) to simplify importing Kudu's utility # libraries. -cmake_minimum_required(VERSION 3.2.3) +cmake_minimum_required(VERSION 3.11.2) include(CMakeParseArguments) # add_library() wrapper provided for compatibility with Kudu. In the original version, diff --git a/fe/src/test/java/org/apache/impala/customcluster/JwtHttpTest.java b/fe/src/test/java/org/apache/impala/customcluster/JwtHttpTest.java index 0ddb9e7fe..083851306 100644 --- a/fe/src/test/java/org/apache/impala/customcluster/JwtHttpTest.java +++ b/fe/src/test/java/org/apache/impala/customcluster/JwtHttpTest.java @@ -452,7 +452,7 @@ public class JwtHttpTest { String expectedErrString = String.format("Impalad services did not start correctly, " + "exiting. Error: Error downloading JWKS from '%s': Network error: curl " + "error: SSL peer certificate or SSH remote key was not OK: SSL certificate " - + "problem: unable to get local issuer certificate", jwksHttpUrl); + + "OpenSSL verify result: unable to get local issuer certificate", jwksHttpUrl); // cluster start will fail because the TLS cert returned by the // JWKS server is not trusted
