HADOOP-11547. hadoop-common native compilation fails on Windows due to missing support for __attribute__ declaration. Contributed by Chris Nauroth.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b537751f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b537751f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b537751f Branch: refs/heads/HDFS-EC Commit: b537751f4b1db56074c2c5cebe9427a7bdb2ee27 Parents: 12cbbd2 Author: cnauroth <[email protected]> Authored: Wed Feb 4 12:07:05 2015 -0800 Committer: Zhe Zhang <[email protected]> Committed: Fri Feb 6 13:45:47 2015 -0800 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++ .../src/main/native/src/exception.h | 20 +++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/b537751f/hadoop-common-project/hadoop-common/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index b970254..3d11b71 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -832,6 +832,9 @@ Release 2.7.0 - UNRELEASED HADOOP-11548. checknative should display a nicer error message when openssl support is not compiled in. (Anu Engineer via cnauroth) + HADOOP-11547. hadoop-common native compilation fails on Windows due to + missing support for __attribute__ declaration. (cnauroth) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/b537751f/hadoop-common-project/hadoop-common/src/main/native/src/exception.h ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/exception.h b/hadoop-common-project/hadoop-common/src/main/native/src/exception.h index 1ec47a6..afa08e9 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/exception.h +++ b/hadoop-common-project/hadoop-common/src/main/native/src/exception.h @@ -19,6 +19,19 @@ #include <jni.h> /* for jthrowable */ #include <stdarg.h> /* for va_list */ +#include "org_apache_hadoop.h" + +#ifdef WINDOWS +/* + * gcc-style type-checked format arguments are not supported on Windows, so just + * stub this macro. + */ +#define TYPE_CHECKED_PRINTF_FORMAT(formatArg, varArgs) +# else +/* Use gcc type-checked format arguments. */ +#define TYPE_CHECKED_PRINTF_FORMAT(formatArg, varArgs) \ + __attribute__((format(printf, formatArg, varArgs))) +#endif /** * Create a new Exception. @@ -48,7 +61,7 @@ jthrowable newExceptionV(JNIEnv* env, const char *name, * @return The RuntimeException */ jthrowable newException(JNIEnv* env, const char *name, const char *fmt, ...) - __attribute__((format(printf, 3, 4))); + TYPE_CHECKED_PRINTF_FORMAT(3, 4); /** * Create a new RuntimeException. @@ -62,7 +75,7 @@ jthrowable newException(JNIEnv* env, const char *name, const char *fmt, ...) * @return The RuntimeException */ jthrowable newRuntimeException(JNIEnv* env, const char *fmt, ...) - __attribute__((format(printf, 2, 3))); + TYPE_CHECKED_PRINTF_FORMAT(2, 3); /** * Create a new IOException. @@ -77,7 +90,7 @@ jthrowable newRuntimeException(JNIEnv* env, const char *fmt, ...) * to create the NativeIOException. */ jthrowable newIOException(JNIEnv* env, const char *fmt, ...) - __attribute__((format(printf, 2, 3))); + TYPE_CHECKED_PRINTF_FORMAT(2, 3); /** * Thread-safe strerror alternative. @@ -87,4 +100,5 @@ jthrowable newIOException(JNIEnv* env, const char *fmt, ...) */ const char* terror(int errnum); +#undef TYPE_CHECKED_PRINTF_FORMAT #endif
