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@1386780 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Eli Collins 2012-09-17 19:25:05 +00:00
parent 6afabd7e57
commit 8a9debd0ef
3 changed files with 15 additions and 13 deletions

View File

@ -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}

View File

@ -17,9 +17,6 @@
*/ */
package org.apache.hadoop.util; package org.apache.hadoop.util;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceAudience;
@ -104,10 +101,7 @@ public final class ExitUtil {
* @throws ExitException if System.exit is disabled for test purposes * @throws ExitException if System.exit is disabled for test purposes
*/ */
public static void terminate(int status, Throwable t) throws ExitException { public static void terminate(int status, Throwable t) throws ExitException {
StringWriter sw = new StringWriter(); terminate(status, StringUtils.stringifyException(t));
t.printStackTrace(new PrintWriter(sw));
terminate(status, "Fatal exception with message " + t.getMessage() +
"\nstack trace\n" + sw.toString());
} }
/** /**

View File

@ -31,9 +31,7 @@ import java.io.File;
import java.io.FilenameFilter; import java.io.FilenameFilter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintWriter;
import java.io.RandomAccessFile; import java.io.RandomAccessFile;
import java.io.StringWriter;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -1238,10 +1236,8 @@ public class TestEditLog {
} }
} catch (IOException e) { } catch (IOException e) {
} catch (Throwable t) { } catch (Throwable t) {
StringWriter sw = new StringWriter(); fail("Caught non-IOException throwable " +
t.printStackTrace(new PrintWriter(sw)); StringUtils.stringifyException(t));
fail("caught non-IOException throwable with message " +
t.getMessage() + "\nstack trace\n" + sw.toString());
} }
} finally { } finally {
if ((elfos != null) && (elfos.isOpen())) if ((elfos != null) && (elfos.isOpen()))