Browse Source

HADOOP-17569. Building native code fails on Fedora 33. (#2886)

(cherry picked from commit 2717203f858ff654de0fc01cfb9afef2e705e33c)
Masatake Iwasaki 4 years ago
parent
commit
a3405cb56a

+ 2 - 2
hadoop-common-project/hadoop-common/src/main/native/src/exception.c

@@ -111,8 +111,8 @@ jthrowable newIOException(JNIEnv* env, const char *fmt, ...)
 const char* terror(int errnum)
 {
 
-#if defined(__sun)
-// MT-Safe under Solaris which doesn't support sys_errlist/sys_nerr
+#if defined(__sun) || defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 32)
+// MT-Safe under Solaris or glibc >= 2.32 not supporting sys_errlist/sys_nerr
   return strerror(errnum); 
 #else
   if ((errnum < 0) || (errnum >= sys_nerr)) {

+ 2 - 0
hadoop-hdfs-project/hadoop-hdfs-native-client/src/CMakeLists.txt

@@ -65,6 +65,8 @@ if(WIN32)
     set(OUT_DIR bin)
 else()
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
+    # using old default behavior on GCC >= 10.0
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon")
     set(OS_DIR ${CMAKE_SOURCE_DIR}/main/native/libhdfs/os/posix)
 
     # IMPORTANT: OUT_DIR MUST be relative to maven's