This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
The following commit(s) were added to refs/heads/master by this push: new e0cf2677a0 [dependency][enhancement] support build libhdfs in arm cpus (#10018) e0cf2677a0 is described below commit e0cf2677a02db31f386ccf72a760b22e825af315 Author: Zhengguo Yang <yangz...@gmail.com> AuthorDate: Fri Jun 10 19:40:41 2022 +0800 [dependency][enhancement] support build libhdfs in arm cpus (#10018) Supports native hdfs functionality on arm cpu This pr mainly upgrades libdfs3 and supports running on arm,and make libhdfs3 with kerberos as default --- be/CMakeLists.txt | 84 ++++++------------- be/src/exec/CMakeLists.txt | 18 ---- be/src/io/CMakeLists.txt | 22 ++--- be/src/io/broker_reader.cpp | 2 +- be/src/io/broker_reader.h | 2 +- be/src/io/broker_writer.cpp | 2 +- be/src/io/broker_writer.h | 2 +- be/src/io/buffered_reader.cpp | 2 +- be/src/io/buffered_reader.h | 2 +- be/src/io/file_factory.cpp | 18 ++-- be/src/io/file_factory.h | 4 +- be/src/io/hdfs_file_reader.cpp | 2 +- be/src/io/hdfs_file_reader.h | 2 +- be/src/io/hdfs_reader_writer.cpp | 16 +--- be/src/io/hdfs_reader_writer.h | 4 +- be/src/io/hdfs_writer.cpp | 2 +- be/src/io/hdfs_writer.h | 2 +- be/src/io/local_file_reader.cpp | 2 +- be/src/io/local_file_reader.h | 2 +- be/src/io/local_file_writer.cpp | 2 +- be/src/io/local_file_writer.h | 2 +- be/src/io/s3_reader.cpp | 2 +- be/src/io/s3_reader.h | 2 +- be/src/io/s3_writer.cpp | 2 +- be/src/io/s3_writer.h | 2 +- build.sh | 5 -- dist/LICENSE-dist.txt | 1 + run-be-ut.sh | 1 - thirdparty/CHANGELOG.md | 5 ++ thirdparty/build-thirdparty.sh | 33 ++------ thirdparty/download-thirdparty.sh | 13 +-- thirdparty/patches/libhdfs3-master.patch | 138 ------------------------------- thirdparty/vars.sh | 26 ++---- 33 files changed, 92 insertions(+), 332 deletions(-) diff --git a/be/CMakeLists.txt b/be/CMakeLists.txt index 480a3c6e46..999801ea26 100644 --- a/be/CMakeLists.txt +++ b/be/CMakeLists.txt @@ -85,7 +85,6 @@ set(BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") set(ENV{DORIS_HOME} "${BASE_DIR}/../") set(BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}") set(THIRDPARTY_DIR "$ENV{DORIS_THIRDPARTY}/installed/") -set(HDFS3_KRB5_INSTALL_DIR "$ENV{DORIS_THIRDPARTY}/installed/libhdfs_with_kerberos/") set(GENSRC_DIR "${BASE_DIR}/../gensrc/build/") set(SRC_DIR "${BASE_DIR}/src/") set(TEST_DIR "${CMAKE_SOURCE_DIR}/test/") @@ -98,7 +97,6 @@ else() endif() message(STATUS "make test: ${MAKE_TEST}") option(WITH_MYSQL "Support access MySQL" ON) -option(WITH_KERBEROS "Enable or disable Kereberos support" ${WITH_KERBEROS}) # Check gcc if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") @@ -330,43 +328,32 @@ set_target_properties(minizip PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib add_library(idn STATIC IMPORTED) set_target_properties(idn PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libidn.a) -if (WITH_KERBEROS) - # kerberos lib for libhdfs3 - add_library(gsasl STATIC IMPORTED) - set_target_properties(gsasl PROPERTIES IMPORTED_LOCATION ${HDFS3_KRB5_INSTALL_DIR}/lib/libgsasl.a) +add_library(xml2 STATIC IMPORTED) +set_target_properties(xml2 PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libxml2.a) - add_library(krb5support STATIC IMPORTED) - set_target_properties(krb5support PROPERTIES IMPORTED_LOCATION ${HDFS3_KRB5_INSTALL_DIR}/lib/libkrb5support.a) - - add_library(krb5 STATIC IMPORTED) - set_target_properties(krb5 PROPERTIES IMPORTED_LOCATION ${HDFS3_KRB5_INSTALL_DIR}/lib/libkrb5.a) +add_library(lzma STATIC IMPORTED) +set_target_properties(lzma PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/liblzma.a) - add_library(com_err STATIC IMPORTED) - set_target_properties(com_err PROPERTIES IMPORTED_LOCATION ${HDFS3_KRB5_INSTALL_DIR}/lib/libcom_err.a) +add_library(gsasl STATIC IMPORTED) +set_target_properties(gsasl PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libgsasl.a) - add_library(k5crypto STATIC IMPORTED) - set_target_properties(k5crypto PROPERTIES IMPORTED_LOCATION ${HDFS3_KRB5_INSTALL_DIR}/lib/libk5crypto.a) +add_library(krb5support STATIC IMPORTED) +set_target_properties(krb5support PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libkrb5support.a) - add_library(gssapi_krb5 STATIC IMPORTED) - set_target_properties(gssapi_krb5 PROPERTIES IMPORTED_LOCATION ${HDFS3_KRB5_INSTALL_DIR}/lib/libgssapi_krb5.a) +add_library(krb5 STATIC IMPORTED) +set_target_properties(krb5 PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libkrb5.a) - add_library(hdfs3 STATIC IMPORTED) - set_target_properties(hdfs3 PROPERTIES IMPORTED_LOCATION ${HDFS3_KRB5_INSTALL_DIR}/lib/libhdfs3.a) -else() - add_library(gsasl STATIC IMPORTED) - set_target_properties(gsasl PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libgsasl.a) +add_library(com_err STATIC IMPORTED) +set_target_properties(com_err PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libcom_err.a) - add_library(hdfs3 STATIC IMPORTED) - set_target_properties(hdfs3 PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libhdfs3.a) -endif() +add_library(k5crypto STATIC IMPORTED) +set_target_properties(k5crypto PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libk5crypto.a) -if (ARCH_AMD64) - add_library(xml2 STATIC IMPORTED) - set_target_properties(xml2 PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libxml2.a) +add_library(gssapi_krb5 STATIC IMPORTED) +set_target_properties(gssapi_krb5 PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libgssapi_krb5.a) - add_library(lzma STATIC IMPORTED) - set_target_properties(lzma PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/liblzma.a) -endif() +add_library(hdfs3 STATIC IMPORTED) +set_target_properties(hdfs3 PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libhdfs3.a) find_program(THRIFT_COMPILER thrift ${CMAKE_SOURCE_DIR}/bin) @@ -570,6 +557,7 @@ set(DORIS_LINK_LIBS Exec Exprs Gutil + IO Olap Rowset OlapFs @@ -632,6 +620,9 @@ set(COMMON_THIRDPARTY # put this after lz4 to avoid using lz4 lib in librdkafka librdkafka_cpp librdkafka + hdfs3 + xml2 + lzma ) if (${MAKE_TEST} STREQUAL "ON") @@ -641,29 +632,13 @@ if (${MAKE_TEST} STREQUAL "ON") ) endif() -# thirdparties dependescies that can only run on X86 platform -set(X86_DEPENDENCIES +set(DORIS_DEPENDENCIES + ${DORIS_DEPENDENCIES} + ${WL_START_GROUP} ${COMMON_THIRDPARTY} - hdfs3 - xml2 - lzma + ${KRB5_LIBS} ) -if(ARCH_AARCH64) - # Set thirdparty libraries - set(DORIS_DEPENDENCIES - ${DORIS_DEPENDENCIES} - ${WL_START_GROUP} - ${COMMON_THIRDPARTY} - ) -else() - set(DORIS_DEPENDENCIES - ${DORIS_DEPENDENCIES} - ${WL_START_GROUP} - ${X86_DEPENDENCIES} - ) -endif() - if(WITH_LZO) set(DORIS_DEPENDENCIES ${DORIS_DEPENDENCIES} lzo @@ -676,12 +651,6 @@ if (WITH_MYSQL) ) endif() -if (WITH_KERBEROS) - set(DORIS_DEPENDENCIES ${DORIS_DEPENDENCIES} - ${KRB5_LIBS} - ) -endif() - set(DORIS_DEPENDENCIES ${DORIS_DEPENDENCIES} ${WL_END_GROUP}) message(STATUS "DORIS_DEPENDENCIES is ${DORIS_DEPENDENCIES}") @@ -755,6 +724,7 @@ add_subdirectory(${SRC_DIR}/exec) add_subdirectory(${SRC_DIR}/exprs) add_subdirectory(${SRC_DIR}/gen_cpp) add_subdirectory(${SRC_DIR}/geo) +add_subdirectory(${SRC_DIR}/io) add_subdirectory(${SRC_DIR}/gutil) add_subdirectory(${SRC_DIR}/http) add_subdirectory(${SRC_DIR}/olap) diff --git a/be/src/exec/CMakeLists.txt b/be/src/exec/CMakeLists.txt index 5708eb0465..cc94f5fe9a 100644 --- a/be/src/exec/CMakeLists.txt +++ b/be/src/exec/CMakeLists.txt @@ -28,7 +28,6 @@ set(EXEC_FILES analytic_eval_node.cpp blocking_join_node.cpp broker_scan_node.cpp - ../io/buffered_reader.cpp base_scanner.cpp broker_scanner.cpp cross_join_node.cpp @@ -98,24 +97,7 @@ set(EXEC_FILES json_scanner.cpp assert_num_rows_node.cpp - ../io/local_file_reader.cpp - ../io/local_file_writer.cpp - ../io/broker_reader.cpp - ../io/broker_writer.cpp - ../io/s3_reader.cpp - ../io/s3_writer.cpp - ../io/hdfs_reader_writer.cpp - ../io/file_factory.cpp ) - -if (ARCH_AMD64) - set(EXEC_FILES - ${EXEC_FILES} - ../io/hdfs_file_reader.cpp - ../io/hdfs_writer.cpp - ) -endif() - if (WITH_MYSQL) set(EXEC_FILES ${EXEC_FILES} diff --git a/be/src/io/CMakeLists.txt b/be/src/io/CMakeLists.txt index 1be0e05176..286a9471db 100644 --- a/be/src/io/CMakeLists.txt +++ b/be/src/io/CMakeLists.txt @@ -21,26 +21,20 @@ set(LIBRARY_OUTPUT_PATH "${BUILD_DIR}/src/io") # where to put generated binaries set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/src/io") -set(EXEC_FILES +set(IO_FILES + broker_reader.cpp + broker_writer.cpp buffered_reader.cpp + file_factory.cpp + hdfs_file_reader.cpp + hdfs_reader_writer.cpp + hdfs_writer.cpp local_file_reader.cpp local_file_writer.cpp - broker_reader.cpp - broker_writer.cpp s3_reader.cpp s3_writer.cpp - hdfs_reader_writer.cpp - file_factory.cpp ) -if (ARCH_AMD64) - set(EXEC_FILES - ${EXEC_FILES} - hdfs_file_reader.cpp - hdfs_writer.cpp - ) -endif() - add_library(IO STATIC - ${EXEC_FILES} + ${IO_FILES} ) diff --git a/be/src/io/broker_reader.cpp b/be/src/io/broker_reader.cpp index 1745a7bbc2..173a1c8de4 100644 --- a/be/src/io/broker_reader.cpp +++ b/be/src/io/broker_reader.cpp @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -#include "broker_reader.h" +#include "io/broker_reader.h" #include <sstream> diff --git a/be/src/io/broker_reader.h b/be/src/io/broker_reader.h index 94f86ca8df..1c48fc4381 100644 --- a/be/src/io/broker_reader.h +++ b/be/src/io/broker_reader.h @@ -23,9 +23,9 @@ #include <string> #include "common/status.h" -#include "file_reader.h" #include "gen_cpp/PaloBrokerService_types.h" #include "gen_cpp/Types_types.h" +#include "io/file_reader.h" namespace doris { diff --git a/be/src/io/broker_writer.cpp b/be/src/io/broker_writer.cpp index 3975abe664..419e962b68 100644 --- a/be/src/io/broker_writer.cpp +++ b/be/src/io/broker_writer.cpp @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -#include "broker_writer.h" +#include "io/broker_writer.h" #include <sstream> diff --git a/be/src/io/broker_writer.h b/be/src/io/broker_writer.h index c4b8bac17c..1155fd4e9e 100644 --- a/be/src/io/broker_writer.h +++ b/be/src/io/broker_writer.h @@ -23,9 +23,9 @@ #include <string> #include "common/status.h" -#include "file_writer.h" #include "gen_cpp/PaloBrokerService_types.h" #include "gen_cpp/Types_types.h" +#include "io/file_writer.h" namespace doris { diff --git a/be/src/io/buffered_reader.cpp b/be/src/io/buffered_reader.cpp index 5a80c4f842..5125facddc 100644 --- a/be/src/io/buffered_reader.cpp +++ b/be/src/io/buffered_reader.cpp @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -#include "buffered_reader.h" +#include "io/buffered_reader.h" #include <algorithm> #include <sstream> diff --git a/be/src/io/buffered_reader.h b/be/src/io/buffered_reader.h index 8ffd5cd0ab..c853606bd5 100644 --- a/be/src/io/buffered_reader.h +++ b/be/src/io/buffered_reader.h @@ -22,7 +22,7 @@ #include <memory> #include "common/status.h" -#include "file_reader.h" +#include "io/file_reader.h" #include "olap/olap_define.h" #include "util/runtime_profile.h" diff --git a/be/src/io/file_factory.cpp b/be/src/io/file_factory.cpp index f8c86a9146..9937eaa6d5 100644 --- a/be/src/io/file_factory.cpp +++ b/be/src/io/file_factory.cpp @@ -15,18 +15,18 @@ // specific language governing permissions and limitations // under the License. -#include "file_factory.h" +#include "io/file_factory.h" -#include "broker_reader.h" -#include "broker_writer.h" -#include "buffered_reader.h" -#include "hdfs_reader_writer.h" -#include "local_file_reader.h" -#include "local_file_writer.h" +#include "io/broker_reader.h" +#include "io/broker_writer.h" +#include "io/buffered_reader.h" +#include "io/hdfs_reader_writer.h" +#include "io/local_file_reader.h" +#include "io/local_file_writer.h" +#include "io/s3_reader.h" +#include "io/s3_writer.h" #include "runtime/exec_env.h" #include "runtime/stream_load/load_stream_mgr.h" -#include "s3_reader.h" -#include "s3_writer.h" doris::Status doris::FileFactory::create_file_writer( TFileType::type type, doris::ExecEnv* env, diff --git a/be/src/io/file_factory.h b/be/src/io/file_factory.h index 36c2871599..c1350d6682 100644 --- a/be/src/io/file_factory.h +++ b/be/src/io/file_factory.h @@ -16,10 +16,10 @@ // under the License. #pragma once -#include "file_reader.h" -#include "file_writer.h" #include "gen_cpp/PlanNodes_types.h" #include "gen_cpp/Types_types.h" +#include "io/file_reader.h" +#include "io/file_writer.h" namespace doris { class ExecEnv; diff --git a/be/src/io/hdfs_file_reader.cpp b/be/src/io/hdfs_file_reader.cpp index 5d4dc2cc5e..bce0b6b0fe 100644 --- a/be/src/io/hdfs_file_reader.cpp +++ b/be/src/io/hdfs_file_reader.cpp @@ -14,7 +14,7 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. -#include "hdfs_file_reader.h" +#include "io/hdfs_file_reader.h" #include <sys/stat.h> #include <unistd.h> diff --git a/be/src/io/hdfs_file_reader.h b/be/src/io/hdfs_file_reader.h index 83c8efb7dc..67fa60a7d3 100644 --- a/be/src/io/hdfs_file_reader.h +++ b/be/src/io/hdfs_file_reader.h @@ -19,8 +19,8 @@ #include <hdfs/hdfs.h> -#include "file_reader.h" #include "gen_cpp/PlanNodes_types.h" +#include "io/file_reader.h" namespace doris { diff --git a/be/src/io/hdfs_reader_writer.cpp b/be/src/io/hdfs_reader_writer.cpp index 9a072512c0..a93ba02747 100644 --- a/be/src/io/hdfs_reader_writer.cpp +++ b/be/src/io/hdfs_reader_writer.cpp @@ -15,34 +15,24 @@ // specific language governing permissions and limitations // under the License. -#include "hdfs_reader_writer.h" +#include "io/hdfs_reader_writer.h" -#if defined(__x86_64__) -#include "hdfs_file_reader.h" -#include "hdfs_writer.h" -#endif +#include "io/hdfs_file_reader.h" +#include "io/hdfs_writer.h" namespace doris { Status HdfsReaderWriter::create_reader(const THdfsParams& hdfs_params, const std::string& path, int64_t start_offset, FileReader** reader) { -#if defined(__x86_64__) *reader = new HdfsFileReader(hdfs_params, path, start_offset); return Status::OK(); -#else - return Status::InternalError("HdfsFileReader do not support on non x86 platform"); -#endif } Status HdfsReaderWriter::create_writer(std::map<std::string, std::string>& properties, const std::string& path, std::unique_ptr<FileWriter>& writer) { -#if defined(__x86_64__) writer.reset(new HDFSWriter(properties, path)); return Status::OK(); -#else - return Status::InternalError("HdfsWriter do not support on non x86 platform"); -#endif } } // namespace doris diff --git a/be/src/io/hdfs_reader_writer.h b/be/src/io/hdfs_reader_writer.h index 160306ffce..9177eaf240 100644 --- a/be/src/io/hdfs_reader_writer.h +++ b/be/src/io/hdfs_reader_writer.h @@ -17,9 +17,9 @@ #pragma once -#include "file_reader.h" -#include "file_writer.h" #include "gen_cpp/PlanNodes_types.h" +#include "io/file_reader.h" +#include "io/file_writer.h" namespace doris { diff --git a/be/src/io/hdfs_writer.cpp b/be/src/io/hdfs_writer.cpp index 16b2516ca8..6727d9a6d9 100644 --- a/be/src/io/hdfs_writer.cpp +++ b/be/src/io/hdfs_writer.cpp @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -#include "hdfs_writer.h" +#include "io/hdfs_writer.h" #include <filesystem> diff --git a/be/src/io/hdfs_writer.h b/be/src/io/hdfs_writer.h index 15d9a1fde8..e26a3eb7ad 100644 --- a/be/src/io/hdfs_writer.h +++ b/be/src/io/hdfs_writer.h @@ -22,7 +22,7 @@ #include <map> #include <string> -#include "file_writer.h" +#include "io/file_writer.h" namespace doris { class HDFSWriter : public FileWriter { diff --git a/be/src/io/local_file_reader.cpp b/be/src/io/local_file_reader.cpp index e8e2d38ea2..514d3483cf 100644 --- a/be/src/io/local_file_reader.cpp +++ b/be/src/io/local_file_reader.cpp @@ -14,7 +14,7 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. -#include "local_file_reader.h" +#include "io/local_file_reader.h" #include <sys/stat.h> #include <unistd.h> diff --git a/be/src/io/local_file_reader.h b/be/src/io/local_file_reader.h index c525804395..0f712814db 100644 --- a/be/src/io/local_file_reader.h +++ b/be/src/io/local_file_reader.h @@ -20,7 +20,7 @@ #define _FILE_OFFSET_BITS 64 #include <stdio.h> -#include "file_reader.h" +#include "io/file_reader.h" namespace doris { diff --git a/be/src/io/local_file_writer.cpp b/be/src/io/local_file_writer.cpp index 3c425a46aa..e73dc96ebe 100644 --- a/be/src/io/local_file_writer.cpp +++ b/be/src/io/local_file_writer.cpp @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -#include "local_file_writer.h" +#include "io/local_file_writer.h" #include "service/backend_options.h" #include "util/error_util.h" diff --git a/be/src/io/local_file_writer.h b/be/src/io/local_file_writer.h index 7d9da485c3..48ba05764b 100644 --- a/be/src/io/local_file_writer.h +++ b/be/src/io/local_file_writer.h @@ -19,7 +19,7 @@ #include <stdio.h> -#include "file_writer.h" +#include "io/file_writer.h" namespace doris { diff --git a/be/src/io/s3_reader.cpp b/be/src/io/s3_reader.cpp index c932e2d886..a1c6b8cd2c 100644 --- a/be/src/io/s3_reader.cpp +++ b/be/src/io/s3_reader.cpp @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -#include "s3_reader.h" +#include "io/s3_reader.h" #include <aws/s3/S3Client.h> #include <aws/s3/model/GetObjectRequest.h> diff --git a/be/src/io/s3_reader.h b/be/src/io/s3_reader.h index a1464324df..e1fcf2675e 100644 --- a/be/src/io/s3_reader.h +++ b/be/src/io/s3_reader.h @@ -20,7 +20,7 @@ #include <map> #include <string> -#include "file_reader.h" +#include "io/file_reader.h" #include "util/s3_uri.h" namespace Aws { diff --git a/be/src/io/s3_writer.cpp b/be/src/io/s3_writer.cpp index df37e7d820..8c0ddd6696 100644 --- a/be/src/io/s3_writer.cpp +++ b/be/src/io/s3_writer.cpp @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -#include "s3_writer.h" +#include "io/s3_writer.h" #include <aws/core/utils/FileSystemUtils.h> #include <aws/s3/S3Client.h> diff --git a/be/src/io/s3_writer.h b/be/src/io/s3_writer.h index ae2756da08..a0ad9954a9 100644 --- a/be/src/io/s3_writer.h +++ b/be/src/io/s3_writer.h @@ -20,7 +20,7 @@ #include <map> #include <string> -#include "file_writer.h" +#include "io/file_writer.h" #include "util/s3_uri.h" namespace Aws { diff --git a/build.sh b/build.sh index 907f5510ff..8ece656d7a 100755 --- a/build.sh +++ b/build.sh @@ -175,9 +175,6 @@ if [[ ${HELP} -eq 1 ]]; then usage exit fi -if [[ -z ${WITH_KERBEROS} ]]; then - WITH_KERBEROS=ON -fi # build thirdparty libraries if necessary if [[ ! -f ${DORIS_THIRDPARTY}/installed/lib/libbacktrace.a ]]; then echo "Thirdparty libraries need to be build ..." @@ -233,7 +230,6 @@ echo "Get params: PARALLEL -- $PARALLEL CLEAN -- $CLEAN WITH_MYSQL -- $WITH_MYSQL - WITH_KERBEROS -- $WITH_KERBEROS WITH_LZO -- $WITH_LZO GLIBC_COMPATIBILITY -- $GLIBC_COMPATIBILITY USE_AVX2 -- $USE_AVX2 @@ -296,7 +292,6 @@ if [ ${BUILD_BE} -eq 1 ] ; then -DMAKE_TEST=OFF \ ${CMAKE_USE_CCACHE} \ -DWITH_MYSQL=${WITH_MYSQL} \ - -DWITH_KERBEROS=${WITH_KERBEROS} \ -DWITH_LZO=${WITH_LZO} \ -DUSE_LIBCPP=${USE_LIBCPP} \ -DBUILD_META_TOOL=${BUILD_META_TOOL} \ diff --git a/dist/LICENSE-dist.txt b/dist/LICENSE-dist.txt index 2d9bfe9016..bb3840be85 100644 --- a/dist/LICENSE-dist.txt +++ b/dist/LICENSE-dist.txt @@ -1524,6 +1524,7 @@ The Apache Software License, Version 2.0 * aws sdk: 1.9.211 * benchmark: 1.5.6 * simdjson: 1.0.2 + * libhdfs3: 2.3.0 * libhdfs3: commit 5fccd36 * opentelemetry-proto: 0.18.0 * opentelemetry-cpp: 1.4.0 diff --git a/run-be-ut.sh b/run-be-ut.sh index d075693454..19d52865f4 100755 --- a/run-be-ut.sh +++ b/run-be-ut.sh @@ -136,7 +136,6 @@ ${CMAKE_CMD} -G "${GENERATOR}" \ -DGLIBC_COMPATIBILITY="${GLIBC_COMPATIBILITY}" \ -DBUILD_META_TOOL=OFF \ -DWITH_MYSQL=OFF \ - -DWITH_KERBEROS=OFF \ -DUSE_DWARF=${USE_DWARF} \ -DUSE_MEM_TRACKER=ON \ ${CMAKE_USE_CCACHE} ../ diff --git a/thirdparty/CHANGELOG.md b/thirdparty/CHANGELOG.md index 578eb7ffc0..c94b73a982 100644 --- a/thirdparty/CHANGELOG.md +++ b/thirdparty/CHANGELOG.md @@ -2,6 +2,11 @@ This file contains version of the third-party dependency libraries in the build-env image. The docker build-env image is apache/incubator-doris, and the tag is `build-env-${version}` +## v20220608 +- Remove: remove libhdfs3 without kerberos support +- Modified: make libhdfs3 with kerberos support as default +- Modified: change libhdfs3 to https://github.com/yangzhg/libhdfs3/releases/tag/v2.3.0 . This version support arm CPUs + ## v20220607 - Added: opentelemetry-cpp 1.4.0, it was introduced for tracing. - Added: opentelemetry-proto 0.18.0, it is depended on by opentelemetry-cpp. diff --git a/thirdparty/build-thirdparty.sh b/thirdparty/build-thirdparty.sh index dfd3f0012b..6f5dc53590 100755 --- a/thirdparty/build-thirdparty.sh +++ b/thirdparty/build-thirdparty.sh @@ -680,6 +680,7 @@ build_arrow() { -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \ -DCMAKE_INSTALL_LIBDIR=lib64 \ -DARROW_BOOST_USE_SHARED=OFF \ + -DBoost_USE_STATIC_RUNTIME=ON \ -DARROW_GFLAGS_USE_SHARED=OFF \ -Dgflags_ROOT=$TP_INSTALL_DIR \ -DGLOG_ROOT=$TP_INSTALL_DIR \ @@ -938,16 +939,7 @@ build_gsasl() { check_if_source_exist $GSASL_SOURCE cd $TP_SOURCE_DIR/$GSASL_SOURCE mkdir -p $BUILD_DIR && cd $BUILD_DIR - ../configure --prefix=$TP_INSTALL_DIR --enable-shared=no --with-pic --with-libidn-prefix=$TP_INSTALL_DIR - make -j $PARALLEL && make install -} - -# build_gsasl2 just for libgsasl1.8.0 -build_gsasl2() { - check_if_source_exist $GSASL2_SOURCE - cd $TP_SOURCE_DIR/$GSASL2_SOURCE - mkdir -p $BUILD_DIR && cd $BUILD_DIR - ../configure --prefix=$HDFS3_KRB5_INSTALL_DIR --with-gssapi-impl=mit --enable-shared=no --with-pic --with-libidn-prefix=$TP_INSTALL_DIR + ../configure --prefix=$TP_INSTALL_DIR --with-gssapi-impl=mit --enable-shared=no --with-pic --with-libidn-prefix=$TP_INSTALL_DIR make -j $PARALLEL && make install } @@ -956,29 +948,20 @@ build_krb5() { check_if_source_exist $KRB5_SOURCE cd $TP_SOURCE_DIR/$KRB5_SOURCE/src mkdir -p $BUILD_DIR && cd $BUILD_DIR - CFLAGS="-fcommon" \ - ../configure --prefix=$HDFS3_KRB5_INSTALL_DIR --disable-shared --enable-static + CFLAGS="-fcommon -fPIC" \ + ../configure --prefix=$TP_INSTALL_DIR --disable-shared --enable-static make -j $PARALLEL && make install } # hdfs3 build_hdfs3() { - check_if_source_exist $HDFS3_SOURCE - cd $TP_SOURCE_DIR/$HDFS3_SOURCE - mkdir -p $BUILD_DIR && cd $BUILD_DIR && rm ./* -rf - # build libhdfs3 without kerberos - ../bootstrap --dependency="$TP_INSTALL_DIR" --prefix=$TP_INSTALL_DIR - make CXXFLAGS="$libhdfs_cxx17" -j $PARALLEL - make install -} - -# hdfs3_with_kerberos -build_hdfs3_with_kerberos() { check_if_source_exist $HDFS3_SOURCE cd $TP_SOURCE_DIR/$HDFS3_SOURCE mkdir -p $BUILD_DIR && cd $BUILD_DIR && rm ./* -rf # build libhdfs3 with kerberos support - ../bootstrap --dependency="$HDFS3_KRB5_INSTALL_DIR:$TP_INSTALL_DIR -DWITH_KERBEROS=true" --prefix=$HDFS3_KRB5_INSTALL_DIR + CPPLAGS="-I${TP_INCLUDE_DIR} -fPIC" \ + LDFLAGS="-L${TP_LIB_DIR}" \ + ../bootstrap --dependency="$TP_INSTALL_DIR" --prefix=$TP_INSTALL_DIR --disable-shared --enable-static make CXXFLAGS="$libhdfs_cxx17" -j $PARALLEL make install } @@ -1080,10 +1063,8 @@ build_lzma build_xml2 build_idn build_gsasl -build_gsasl2 build_krb5 build_hdfs3 -build_hdfs3_with_kerberos build_benchmark build_simdjson build_nlohmann_json diff --git a/thirdparty/download-thirdparty.sh b/thirdparty/download-thirdparty.sh index 30ee5e7e55..60883f2632 100755 --- a/thirdparty/download-thirdparty.sh +++ b/thirdparty/download-thirdparty.sh @@ -273,22 +273,13 @@ echo "Finished patching $S2_SOURCE" # gsasl2 patch to fix link error such as mutilple func defination # when link target with kerberos -cd $TP_SOURCE_DIR/$GSASL2_SOURCE +cd $TP_SOURCE_DIR/$GSASL_SOURCE if [ ! -f $PATCHED_MARK ]; then patch -p1 < $TP_PATCH_DIR/libgsasl-1.8.0.patch touch $PATCHED_MARK fi cd - -echo "Finished patching $GSASL2_SOURCE" - -# hdfs3 patch to fix compile error -cd $TP_SOURCE_DIR/$HDFS3_SOURCE -if [ ! -f $PATCHED_MARK ]; then - patch -p1 < $TP_PATCH_DIR/libhdfs3-master.patch - touch $PATCHED_MARK -fi -cd - -echo "Finished patching $HDFS3_SOURCE" +echo "Finished patching $GSASL_SOURCE" # rocksdb patch to fix compile error if [ $ROCKSDB_SOURCE == "rocksdb-5.14.2" ]; then diff --git a/thirdparty/patches/libhdfs3-master.patch b/thirdparty/patches/libhdfs3-master.patch deleted file mode 100644 index 6c4eb2bfd7..0000000000 --- a/thirdparty/patches/libhdfs3-master.patch +++ /dev/null @@ -1,138 +0,0 @@ -diff -uprN a/src/CMakeLists.txt b/src/CMakeLists.txt ---- a/src/CMakeLists.txt 2021-09-23 22:03:55.000000000 +0800 -+++ b/src/CMakeLists.txt 2022-01-18 00:58:22.411061469 +0800 -@@ -46,7 +46,7 @@ SET(HEADER - common/XmlConfig.h) - - ADD_LIBRARY(libhdfs3-static STATIC ${libhdfs3_SOURCES} ${libhdfs3_PROTO_SOURCES} ${libhdfs3_PROTO_HEADERS}) --ADD_LIBRARY(libhdfs3-shared SHARED ${libhdfs3_SOURCES} ${libhdfs3_PROTO_SOURCES} ${libhdfs3_PROTO_HEADERS}) -+ADD_LIBRARY(libhdfs3-shared STATIC ${libhdfs3_SOURCES} ${libhdfs3_PROTO_SOURCES} ${libhdfs3_PROTO_HEADERS}) - - ADD_CUSTOM_COMMAND( - TARGET libhdfs3-shared libhdfs3-static -diff --git a/src/client/FileSystem.cpp b/src/client/FileSystem.cpp -index 6c347c7..6aec1a3 100644 ---- a/src/client/FileSystem.cpp -+++ b/src/client/FileSystem.cpp -@@ -136,7 +136,7 @@ static std::string ExtractPrincipalFromTicketCache( - static std::string ExtractPrincipalFromToken(const Token & token) { - std::string realUser, owner; - std::string identifier = token.getIdentifier(); -- WritableUtils cin(identifier.data(), identifier.size()); -+ WritableUtils cin(&identifier[0], identifier.size()); - char version; - - try { -diff --git a/src/client/Token.cpp b/src/client/Token.cpp -index 1e23fed..8c88b2f 100644 ---- a/src/client/Token.cpp -+++ b/src/client/Token.cpp -@@ -156,10 +156,10 @@ Token & Token::fromString(const std::string & str) { - WritableUtils in(buffer.data(), buffer.size()); - len = in.ReadInt32(); - identifier.resize(len); -- in.ReadRaw(identifier.data(), len); -+ in.ReadRaw(&identifier[0], len); - len = in.ReadInt32(); - password.resize(len); -- in.ReadRaw(password.data(), len); -+ in.ReadRaw(&password[0], len); - kind = in.ReadText(); - service = in.ReadText(); - return *this; -diff --git a/src/common/ExceptionInternal.h b/src/common/ExceptionInternal.h -index 4ee661e..9d734af 100644 ---- a/src/common/ExceptionInternal.h -+++ b/src/common/ExceptionInternal.h -@@ -175,7 +175,7 @@ void ThrowException(bool nested, const char * f, int l, - int offset = buffer.size(); - buffer.resize(offset + size + 1); - va_start(ap, fmt); -- vsnprintf(buffer.data() + offset, size + 1, fmt, ap); -+ vsnprintf(&buffer[offset], size + 1, fmt, ap); - va_end(ap); - - if (!nested) { -@@ -218,7 +218,7 @@ void ThrowException(bool nested, const char * f, int l, - int offset = buffer.size(); - buffer.resize(offset + size + 1); - va_start(ap, fmt); -- vsnprintf(buffer.data() + offset, size + 1, fmt, ap); -+ vsnprintf(&buffer[offset], size + 1, fmt, ap); - va_end(ap); - - if (!nested) { -diff --git a/src/common/StringUtil.h b/src/common/StringUtil.h -index f9cba5d..3a8e76f 100644 ---- a/src/common/StringUtil.h -+++ b/src/common/StringUtil.h -@@ -41,7 +41,7 @@ static inline std::vector<std::string> StringSplit(const std::string & str, - char * token, *lasts = NULL; - std::string s = str; - std::vector<std::string> retval; -- token = strtok_r(s.data(), sep, &lasts); -+ token = strtok_r(&s[0], sep, &lasts); - - while (token) { - retval.push_back(token); -diff --git a/src/common/WritableUtils.cpp b/src/common/WritableUtils.cpp -index fdadd45..98bbc6a 100644 ---- a/src/common/WritableUtils.cpp -+++ b/src/common/WritableUtils.cpp -@@ -88,7 +88,7 @@ std::string WritableUtils::ReadText() { - std::string retval; - length = ReadInt32(); - retval.resize(length); -- ReadRaw(retval.data(), length); -+ ReadRaw(&retval[0], length); - return retval; - } - -diff --git a/src/rpc/RpcClient.cpp b/src/rpc/RpcClient.cpp -index bb19991..ebb6e28 100644 ---- a/src/rpc/RpcClient.cpp -+++ b/src/rpc/RpcClient.cpp -@@ -54,7 +54,7 @@ RpcClientImpl::RpcClientImpl() : - cleaning(false), running(true), count(0) { - auto id = boost::uuids::random_generator()(); - clientId.resize(boost::uuids::uuid::static_size()); -- memcpy(clientId.data(), id.begin(), boost::uuids::uuid::static_size()); -+ memcpy(&clientId[0], id.begin(), boost::uuids::uuid::static_size()); - #ifdef MOCK - stub = NULL; - #endif -diff --git a/src/rpc/SaslClient.cpp b/src/rpc/SaslClient.cpp -index 9aa9d7b..53893a1 100644 ---- a/src/rpc/SaslClient.cpp -+++ b/src/rpc/SaslClient.cpp -@@ -137,7 +137,7 @@ std::string SaslClient::evaluateChallenge(const std::string & challenge) { - - if (rc == GSASL_NEEDS_MORE || rc == GSASL_OK) { - retval.resize(outputSize); -- memcpy(retval.data(), output, outputSize); -+ memcpy(&retval[0], output, outputSize); - - if (output) { - free(output); -diff -uprN a/src/CMakeLists.txt b/src/CMakeLists.txt ---- a/bootstrap 2022-02-26 16:12:06.065389096 +0800 -+++ b/bootstrap 2022-02-26 16:11:45.989378097 +0800 -@@ -111,11 +111,17 @@ if [[ ! -x ${cmake} ]]; then - die "cannot found cmake" - fi - -+arch=$(uname -i) -+if [[ $arch == arm* ]] || [[ $arch = aarch64 ]]; then -+ CMAKE_EXTRA_FLAGS="-DENABLE_SSE=0" -+fi -+ - # Configure - ${cmake} -DENABLE_DEBUG=${enable_build} -DCMAKE_INSTALL_PREFIX=${prefix_dirs} \ - -DCMAKE_C_COMPILER=${c_compiler} -DCMAKE_CXX_COMPILER=${cxx_compiler} \ - -DCMAKE_PREFIX_PATH=${dependency_dir} -DENABLE_BOOST=${enable_boost} \ - -DENABLE_COVERAGE=${enable_coverage} -DENABLE_LIBCPP=${enable_clang_lib} ${source_dir} \ -+ $CMAKE_EXTRA_FLAGS \ - || die "failed to configure the project" - - echo 'bootstrap success. Run "make" to build.' - diff --git a/thirdparty/vars.sh b/thirdparty/vars.sh index 1d975bf5cc..397c8649f3 100644 --- a/thirdparty/vars.sh +++ b/thirdparty/vars.sh @@ -32,9 +32,6 @@ export TP_SOURCE_DIR=$TP_DIR/src # thirdparties will be installed to here export TP_INSTALL_DIR=$TP_DIR/installed -# libhdfs3-with-kerberos will be installed to here -export HDFS3_KRB5_INSTALL_DIR=$TP_INSTALL_DIR/libhdfs_with_kerberos - # patches for all thirdparties export TP_PATCH_DIR=$TP_DIR/patches @@ -336,16 +333,10 @@ IDN_SOURCE="libidn-1.38" IDN_MD5SUM="718ff3700dd71f830c592ebe97249193" # gsasl -GSASL_DOWNLOAD="https://ftp.gnu.org/gnu/gsasl/libgsasl-1.10.0.tar.gz" -GSASL_NAME="libgsasl-1.10.0.tar.gz" -GSASL_SOURCE="libgsasl-1.10.0" -GSASL_MD5SUM="9c8fc632da4ce108fb7581b33de2a5ce" - -# gsasl 1.8.0 is only used for libhdfs3 with kerberos -GSASL2_DOWNLOAD="https://ftp.gnu.org/gnu/gsasl/libgsasl-1.8.0.tar.gz" -GSASL2_NAME="libgsasl-1.8.0.tar.gz" -GSASL2_SOURCE="libgsasl-1.8.0" -GSASL2_MD5SUM="5dbdf859f6e60e05813370e2b193b92b" +GSASL_DOWNLOAD="https://ftp.gnu.org/gnu/gsasl/libgsasl-1.8.0.tar.gz" +GSASL_NAME="libgsasl-1.8.0.tar.gz" +GSASL_SOURCE="libgsasl-1.8.0" +GSASL_MD5SUM="5dbdf859f6e60e05813370e2b193b92b" # krb5 KRB5_DOWNLOAD="https://kerberos.org/dist/krb5/1.19/krb5-1.19.tar.gz" @@ -354,10 +345,10 @@ KRB5_SOURCE="krb5-1.19" KRB5_MD5SUM="aaf18447a5a014aa3b7e81814923f4c9" # hdfs3 -HDFS3_DOWNLOAD="https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/libhdfs3-master.zip" -HDFS3_NAME="libhdfs3-master.zip" -HDFS3_SOURCE="libhdfs3-master" -HDFS3_MD5SUM="8c071fd2e7b0b1ccc1ec9c0d073d4146" +HDFS3_DOWNLOAD="https://github.com/yangzhg/libhdfs3/archive/refs/tags/v2.3.0.tar.gz" +HDFS3_NAME="libhdfs3-2.3.0.tar.gz" +HDFS3_SOURCE="libhdfs3-2.3.0" +HDFS3_MD5SUM="f647975fb7ad03bf25a14f530b1a5c06" #libdivide LIBDIVIDE_DOWNLOAD="https://github.com/ridiculousfish/libdivide/archive/5.0.tar.gz" @@ -462,7 +453,6 @@ LZMA XML2 IDN GSASL -GSASL2 KRB5 HDFS3 LIBDIVIDE --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org