Browse Source

HADOOP-16739. Fix native build failure of hadoop-pipes on CentOS 8.

Masatake Iwasaki 5 years ago
parent
commit
83c4f8b9a0
2 changed files with 63 additions and 0 deletions
  1. 41 0
      BUILDING.txt
  2. 22 0
      hadoop-tools/hadoop-pipes/src/CMakeLists.txt

+ 41 - 0
BUILDING.txt

@@ -422,6 +422,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 v2.5.0.
+  $ git clone https://github.com/protocolbuffers/protobuf
+  $ cd protobuf
+  $ git checkout v2.5.0
+  $ 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

+ 22 - 0
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