You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by eb...@apache.org on 2020/12/08 00:54:21 UTC

[hadoop] branch trunk updated: YARN-10495. make the rpath of container-executor configurable. Contributed by angerszhu.

This is an automated email from the ASF dual-hosted git repository.

ebadger pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 7d3c8ef  YARN-10495. make the rpath of container-executor configurable. Contributed by angerszhu.
7d3c8ef is described below

commit 7d3c8ef6064efd132828765e52e961977aebbf47
Author: Eric Badger <eb...@verizonmedia.com>
AuthorDate: Tue Dec 8 00:53:24 2020 +0000

    YARN-10495. make the rpath of container-executor configurable. Contributed by
    angerszhu.
---
 .../hadoop-yarn-server-nodemanager/pom.xml         |  2 ++
 .../src/CMakeLists.txt                             | 27 ++++++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml
index 6dc5a88..34741e4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/pom.xml
@@ -30,6 +30,7 @@
     <!-- Basedir eeded for generating FindBugs warnings using parent pom -->
     <yarn.basedir>${project.parent.parent.basedir}</yarn.basedir>
     <container-executor.conf.dir>../etc/hadoop</container-executor.conf.dir>
+    <extra.libhadoop.rpath>../lib/native</extra.libhadoop.rpath>
     <container-executor.additional_cflags></container-executor.additional_cflags>
   </properties>
 
@@ -199,6 +200,7 @@
                   <source>${basedir}/src</source>
                   <vars>
                     <HADOOP_CONF_DIR>${container-executor.conf.dir}</HADOOP_CONF_DIR>
+                    <EXTRA_LIBHADOOP_RPATH>${extra.libhadoop.rpath}</EXTRA_LIBHADOOP_RPATH>
                     <JVM_ARCH_DATA_MODEL>${sun.arch.data.model}</JVM_ARCH_DATA_MODEL>
                   </vars>
                   <env>
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt
index 677429b..e2cfbc5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/CMakeLists.txt
@@ -25,6 +25,8 @@ set(GTEST_SRC_DIR ${CMAKE_SOURCE_DIR}/../../../../../hadoop-common-project/hadoo
 
 set(HADOOP_COMMON_SEC_PATH ${HADOOP_COMMON_PATH}/src/main/native/src/org/apache/hadoop/security)
 
+set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+
 # determine if container-executor.conf.dir is an absolute
 # path in case the OS we're compiling on doesn't have
 # a hook in get_executable. We'll use this define
@@ -157,6 +159,18 @@ add_executable(container-executor
     main/native/container-executor/impl/main.c
 )
 
+# By embedding '$ORIGIN' into the RPATH of container-executor, dlopen will look in
+# the directory containing container-executor. However, $ORIGIN is not supported by
+# all operating systems.
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|SunOS")
+    set(RPATH "\$ORIGIN/")
+    if(EXTRA_LIBHADOOP_RPATH)
+        set(RPATH "${RPATH}:${EXTRA_LIBHADOOP_RPATH}/")
+    endif()
+    message("RPATH SET AS ${RPATH}.")
+    set_target_properties(container-executor PROPERTIES INSTALL_RPATH "${RPATH}")
+endif()
+
 target_link_libraries(container-executor
     container
     crypto
@@ -168,6 +182,19 @@ output_directory(container-executor target/usr/local/bin)
 add_executable(test-container-executor
     main/native/container-executor/test/test-container-executor.c
 )
+
+# By embedding '$ORIGIN' into the RPATH of test-container-executor, dlopen will look in
+# the directory containing test-container-executor. However, $ORIGIN is not supported by
+# all operating systems.
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|SunOS")
+    set(RPATH "\$ORIGIN/")
+    if(EXTRA_LIBHADOOP_RPATH)
+        set(RPATH "${RPATH}:${EXTRA_LIBHADOOP_RPATH}/")
+    endif()
+    message("RPATH SET AS ${RPATH}.")
+    set_target_properties(test-container-executor PROPERTIES INSTALL_RPATH "${RPATH}")
+endif()
+
 target_link_libraries(test-container-executor
     container
     ${EXTRA_LIBS}


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org