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
 Note that the command above manually specified the openssl library and include
 path. This is necessary at least for Homebrewed OpenSSL.
 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
 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)
 include(HadoopCommon)
 
 
 find_package(OpenSSL REQUIRED)
 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(
 include_directories(
     main/native/utils/api
     main/native/utils/api
@@ -51,6 +70,9 @@ add_library(hadooputils STATIC
     main/native/utils/impl/StringUtils.cc
     main/native/utils/impl/StringUtils.cc
     main/native/utils/impl/SerialUtils.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
 add_library(hadooppipes STATIC
     main/native/pipes/impl/HadoopPipes.cc
     main/native/pipes/impl/HadoopPipes.cc