From d5467d299db3dddcbcd2f77a281d5fa82c4a9e4b Mon Sep 17 00:00:00 2001 From: Masatake Iwasaki Date: Mon, 10 Feb 2020 12:55:04 +0900 Subject: [PATCH] HADOOP-16739. Fix native build failure of hadoop-pipes on CentOS 8. --- BUILDING.txt | 41 ++++++++++++++++++++ hadoop-tools/hadoop-pipes/src/CMakeLists.txt | 22 +++++++++++ 2 files changed, 63 insertions(+) diff --git a/BUILDING.txt b/BUILDING.txt index b647cdd16b..2af739eec9 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -417,6 +417,47 @@ Building command example: Note that the command above manually specified the openssl library and include path. This is necessary at least for Homebrewed OpenSSL. + +---------------------------------------------------------------------------------- + +Building on CentOS 8 + +---------------------------------------------------------------------------------- + + +* Install development tools such as GCC, autotools, OpenJDK and Maven. + $ sudo dnf group install 'Development Tools' + $ sudo dnf install java-1.8.0-openjdk-devel maven + +* Install Protocol Buffers v3.7.1. + $ git clone https://github.com/protocolbuffers/protobuf + $ cd protobuf + $ git checkout v3.7.1 + $ autoreconf -i + $ ./configure --prefix=/usr/local + $ make + $ sudo make install + $ cd .. + +* Install libraries provided by CentOS 8. + $ sudo dnf install libtirpc-devel zlib-devel lz4-devel bzip2-devel openssl-devel cyrus-sasl-devel libpmem-devel + +* Install optional dependencies (snappy-devel). + $ sudo dnf --enablerepo=PowerTools snappy-devel + +* Install optional dependencies (libzstd-devel). + $ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + $ sudo dnf --enablerepo=epel install libzstd-devel + +* Install optional dependencies (isa-l). + $ sudo dnf --enablerepo=PowerTools install nasm + $ git clone https://github.com/intel/isa-l + $ cd isa-l/ + $ ./autogen.sh + $ ./configure + $ make + $ sudo make install + ---------------------------------------------------------------------------------- Building on Windows diff --git a/hadoop-tools/hadoop-pipes/src/CMakeLists.txt b/hadoop-tools/hadoop-pipes/src/CMakeLists.txt index ff660bfafc..ce6ee31793 100644 --- a/hadoop-tools/hadoop-pipes/src/CMakeLists.txt +++ b/hadoop-tools/hadoop-pipes/src/CMakeLists.txt @@ -22,6 +22,25 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../../../hadoop-common-project include(HadoopCommon) find_package(OpenSSL REQUIRED) +find_package(PkgConfig QUIET) +pkg_check_modules(LIBTIRPC libtirpc) + +find_path(RPC_INCLUDE_DIRS NAMES rpc/rpc.h) + +if (NOT RPC_INCLUDE_DIRS) + find_path(TIRPC_INCLUDE_DIRS + NAMES netconfig.h + PATH_SUFFIXES tirpc + HINTS ${LIBTIRPC_INCLUDE_DIRS} + ) + + find_library(TIRPC_LIBRARIES + NAMES tirpc + HINTS ${LIBTIRPC_LIBRARY_DIRS} + ) + + include_directories(${TIRPC_INCLUDE_DIRS}) +endif() include_directories( main/native/utils/api @@ -51,6 +70,9 @@ add_library(hadooputils STATIC main/native/utils/impl/StringUtils.cc main/native/utils/impl/SerialUtils.cc ) +if (NOT RPC_INCLUDE_DIRS AND LIBTIRPC_FOUND) + target_link_libraries(hadooputils tirpc) +endif() add_library(hadooppipes STATIC main/native/pipes/impl/HadoopPipes.cc