소스 검색

HADOOP-8806. libhadoop.so: dlopen should be better at locating libsnappy.so, etc. Contributed by Colin Patrick McCabe

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1386784 13f79535-47bb-0310-9956-ffa450edef68
Eli Collins 12 년 전
부모
커밋
d720ebc2d9
2개의 변경된 파일15개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      hadoop-common-project/hadoop-common/CHANGES.txt
  2. 12 0
      hadoop-common-project/hadoop-common/src/CMakeLists.txt

+ 3 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -235,6 +235,9 @@ Release 2.0.3-alpha - Unreleased
     HADOOP-8755. Print thread dump when tests fail due to timeout. (Andrey
     HADOOP-8755. Print thread dump when tests fail due to timeout. (Andrey
     Klochkov via atm)
     Klochkov via atm)
 
 
+    HADOOP-8806. libhadoop.so: dlopen should be better at locating
+    libsnappy.so, etc. (Colin Patrick McCabe via eli)
+
   OPTIMIZATIONS
   OPTIMIZATIONS
 
 
   BUG FIXES
   BUG FIXES

+ 12 - 0
hadoop-common-project/hadoop-common/src/CMakeLists.txt

@@ -109,6 +109,7 @@ add_executable(test_bulk_crc32
 )
 )
 set_property(SOURCE main.cpp PROPERTY INCLUDE_DIRECTORIES "\"-Werror\" \"-Wall\"")
 set_property(SOURCE main.cpp PROPERTY INCLUDE_DIRECTORIES "\"-Werror\" \"-Wall\"")
 
 
+SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
 add_dual_library(hadoop
 add_dual_library(hadoop
     ${D}/io/compress/lz4/Lz4Compressor.c
     ${D}/io/compress/lz4/Lz4Compressor.c
     ${D}/io/compress/lz4/Lz4Decompressor.c
     ${D}/io/compress/lz4/Lz4Decompressor.c
@@ -125,6 +126,17 @@ add_dual_library(hadoop
     ${D}/util/NativeCrc32.c
     ${D}/util/NativeCrc32.c
     ${D}/util/bulk_crc32.c
     ${D}/util/bulk_crc32.c
 )
 )
+
+IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+    #
+    # By embedding '$ORIGIN' into the RPATH of libhadoop.so,
+    # dlopen will look in the directory containing libhadoop.so.
+    # However, $ORIGIN is not supported by all operating systems.
+    #
+    SET_TARGET_PROPERTIES(hadoop 
+        PROPERTIES INSTALL_RPATH "\$ORIGIN/")
+ENDIF()
+
 target_link_dual_libraries(hadoop
 target_link_dual_libraries(hadoop
     dl
     dl
     ${JAVA_JVM_LIBRARY}
     ${JAVA_JVM_LIBRARY}