Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 568F917C1F for ; Thu, 30 Oct 2014 02:48:54 +0000 (UTC) Received: (qmail 91177 invoked by uid 500); 30 Oct 2014 02:48:54 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 91106 invoked by uid 500); 30 Oct 2014 02:48:54 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 91097 invoked by uid 99); 30 Oct 2014 02:48:54 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Oct 2014 02:48:54 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id C34C4924247; Thu, 30 Oct 2014 02:48:53 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: yliu@apache.org To: common-commits@hadoop.apache.org Message-Id: <860dedac346d4ee59713ff5d1e419ab0@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: HADOOP-11216. Improve Openssl library finding. (cmccabe via yliu) Date: Thu, 30 Oct 2014 02:48:53 +0000 (UTC) Repository: hadoop Updated Branches: refs/heads/branch-2.6 c8dfc9126 -> 2f313cfae HADOOP-11216. Improve Openssl library finding. (cmccabe via yliu) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2f313cfa Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2f313cfa Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2f313cfa Branch: refs/heads/branch-2.6 Commit: 2f313cfaeb8ba0cf4accdf0817ad0049bfcb6d57 Parents: c8dfc91 Author: yliu Authored: Thu Oct 30 10:41:09 2014 +0800 Committer: yliu Committed: Thu Oct 30 10:41:09 2014 +0800 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 2 + hadoop-common-project/hadoop-common/pom.xml | 3 +- .../hadoop-common/src/CMakeLists.txt | 70 +++++++++++++++----- 3 files changed, 56 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/2f313cfa/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 a85fb0c..2549497 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -236,6 +236,8 @@ Release 2.6.0 - UNRELEASED proxy-users on Delegation-token management operations. (Zhijie Shen via vinodkv) + HADOOP-11216. Improve Openssl library finding. (cmccabe via yliu) + OPTIMIZATIONS HADOOP-10838. Byte array native checksumming. (James Thomas via todd) http://git-wip-us.apache.org/repos/asf/hadoop/blob/2f313cfa/hadoop-common-project/hadoop-common/pom.xml ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/pom.xml b/hadoop-common-project/hadoop-common/pom.xml index 3e7bf0c..9c9e99b 100644 --- a/hadoop-common-project/hadoop-common/pom.xml +++ b/hadoop-common-project/hadoop-common/pom.xml @@ -545,6 +545,7 @@ false true + false @@ -665,7 +666,7 @@ false true - true + false http://git-wip-us.apache.org/repos/asf/hadoop/blob/2f313cfa/hadoop-common-project/hadoop-common/src/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/CMakeLists.txt b/hadoop-common-project/hadoop-common/src/CMakeLists.txt index 84c27e5..af375f6 100644 --- a/hadoop-common-project/hadoop-common/src/CMakeLists.txt +++ b/hadoop-common-project/hadoop-common/src/CMakeLists.txt @@ -78,16 +78,34 @@ macro(set_find_shared_library_version LVERS) ENDIF() endmacro(set_find_shared_library_version LVERS) +# +# Alter the behavior of find_package and find_library so that we find only +# shared libraries without any version suffix. You should save +# CMAKE_FIND_LIBRARY_SUFFIXES before calling this function and restore it +# afterwards. +# +macro(set_find_shared_library_without_version) + IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + # Mac OS uses .dylib + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib") + ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + # No effect + ELSE() + # Most UNIX variants use .so + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so") + ENDIF() +endmacro(set_find_shared_library_version LVERS) + if (NOT GENERATED_JAVAH) # Must identify where the generated headers have been placed MESSAGE(FATAL_ERROR "You must set the cmake variable GENERATED_JAVAH") endif (NOT GENERATED_JAVAH) find_package(JNI REQUIRED) -SET(STORED_CMAKE_FIND_LIBRARY_SUFFIXES CMAKE_FIND_LIBRARY_SUFFIXES) +SET(STORED_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) set_find_shared_library_version("1") find_package(ZLIB REQUIRED) -SET(CMAKE_FIND_LIBRARY_SUFFIXES STORED_CMAKE_FIND_LIBRARY_SUFFIXES) +SET(CMAKE_FIND_LIBRARY_SUFFIXES ${STORED_CMAKE_FIND_LIBRARY_SUFFIXES}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -O2") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_REENTRANT -D_GNU_SOURCE") @@ -97,7 +115,7 @@ set(T main/native/src/test/org/apache/hadoop) GET_FILENAME_COMPONENT(HADOOP_ZLIB_LIBRARY ${ZLIB_LIBRARIES} NAME) -SET(STORED_CMAKE_FIND_LIBRARY_SUFFIXES CMAKE_FIND_LIBRARY_SUFFIXES) +SET(STORED_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) set_find_shared_library_version("1") find_package(BZip2 QUIET) if (BZIP2_INCLUDE_DIR AND BZIP2_LIBRARIES) @@ -112,7 +130,7 @@ else (BZIP2_INCLUDE_DIR AND BZIP2_LIBRARIES) MESSAGE(FATAL_ERROR "Required bzip2 library and/or header files could not be found.") ENDIF(REQUIRE_BZIP2) endif (BZIP2_INCLUDE_DIR AND BZIP2_LIBRARIES) -SET(CMAKE_FIND_LIBRARY_SUFFIXES STORED_CMAKE_FIND_LIBRARY_SUFFIXES) +SET(CMAKE_FIND_LIBRARY_SUFFIXES ${STORED_CMAKE_FIND_LIBRARY_SUFFIXES}) INCLUDE(CheckFunctionExists) INCLUDE(CheckCSourceCompiles) @@ -121,13 +139,13 @@ CHECK_FUNCTION_EXISTS(sync_file_range HAVE_SYNC_FILE_RANGE) CHECK_FUNCTION_EXISTS(posix_fadvise HAVE_POSIX_FADVISE) CHECK_LIBRARY_EXISTS(dl dlopen "" NEED_LINK_DL) -SET(STORED_CMAKE_FIND_LIBRARY_SUFFIXES CMAKE_FIND_LIBRARY_SUFFIXES) +SET(STORED_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) set_find_shared_library_version("1") find_library(SNAPPY_LIBRARY NAMES snappy PATHS ${CUSTOM_SNAPPY_PREFIX} ${CUSTOM_SNAPPY_PREFIX}/lib ${CUSTOM_SNAPPY_PREFIX}/lib64 ${CUSTOM_SNAPPY_LIB}) -SET(CMAKE_FIND_LIBRARY_SUFFIXES STORED_CMAKE_FIND_LIBRARY_SUFFIXES) +SET(CMAKE_FIND_LIBRARY_SUFFIXES ${STORED_CMAKE_FIND_LIBRARY_SUFFIXES}) find_path(SNAPPY_INCLUDE_DIR NAMES snappy.h PATHS ${CUSTOM_SNAPPY_PREFIX} ${CUSTOM_SNAPPY_PREFIX}/include @@ -145,37 +163,53 @@ else (SNAPPY_LIBRARY AND SNAPPY_INCLUDE_DIR) ENDIF(REQUIRE_SNAPPY) endif (SNAPPY_LIBRARY AND SNAPPY_INCLUDE_DIR) -SET(STORED_CMAKE_FIND_LIBRARY_SUFFIXES CMAKE_FIND_LIBRARY_SUFFIXES) -set_find_shared_library_version("1.0.0") +# Find the no-suffix version of libcrypto. +# See HADOOP-11216 for details. +SET(STORED_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) +set_find_shared_library_without_version() SET(OPENSSL_NAME "crypto") IF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") SET(OPENSSL_NAME "eay32") ENDIF() +MESSAGE("CUSTOM_OPENSSL_PREFIX = ${CUSTOM_OPENSSL_PREFIX}") find_library(OPENSSL_LIBRARY NAMES ${OPENSSL_NAME} PATHS ${CUSTOM_OPENSSL_PREFIX} ${CUSTOM_OPENSSL_PREFIX}/lib ${CUSTOM_OPENSSL_PREFIX}/lib64 ${CUSTOM_OPENSSL_LIB} NO_DEFAULT_PATH) -find_library(OPENSSL_LIBRARY - NAMES ${OPENSSL_NAME}) -SET(CMAKE_FIND_LIBRARY_SUFFIXES STORED_CMAKE_FIND_LIBRARY_SUFFIXES) +find_library(OPENSSL_LIBRARY NAMES ${OPENSSL_NAME}) find_path(OPENSSL_INCLUDE_DIR NAMES openssl/evp.h PATHS ${CUSTOM_OPENSSL_PREFIX} ${CUSTOM_OPENSSL_PREFIX}/include ${CUSTOM_OPENSSL_INCLUDE} NO_DEFAULT_PATH) -find_path(OPENSSL_INCLUDE_DIR - NAMES openssl/evp.h) +find_path(OPENSSL_INCLUDE_DIR NAMES openssl/evp.h) +SET(CMAKE_FIND_LIBRARY_SUFFIXES ${STORED_CMAKE_FIND_LIBRARY_SUFFIXES}) +SET(USABLE_OPENSSL 0) if (OPENSSL_LIBRARY AND OPENSSL_INCLUDE_DIR) GET_FILENAME_COMPONENT(HADOOP_OPENSSL_LIBRARY ${OPENSSL_LIBRARY} NAME) + INCLUDE(CheckCSourceCompiles) + SET(OLD_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES}) + SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) + CHECK_C_SOURCE_COMPILES("#include \"${OPENSSL_INCLUDE_DIR}/openssl/evp.h\"\nint main(int argc, char **argv) { return !EVP_aes_256_ctr; }" HAS_NEW_ENOUGH_OPENSSL) + SET(CMAKE_REQUIRED_INCLUDES ${OLD_CMAKE_REQUIRED_INCLUDES}) + if(NOT HAS_NEW_ENOUGH_OPENSSL) + MESSAGE("The OpenSSL library installed at ${OPENSSL_LIBRARY} is too old. You need a version at least new enough to have EVP_aes_256_ctr.") + else(NOT HAS_NEW_ENOUGH_OPENSSL) + SET(USABLE_OPENSSL 1) + endif(NOT HAS_NEW_ENOUGH_OPENSSL) +endif (OPENSSL_LIBRARY AND OPENSSL_INCLUDE_DIR) +if (USABLE_OPENSSL) SET(OPENSSL_SOURCE_FILES "${D}/crypto/OpensslCipher.c" "${D}/crypto/random/OpensslSecureRandom.c") -else (OPENSSL_LIBRARY AND OPENSSL_INCLUDE_DIR) - SET(OPENSSL_INCLUDE_DIR "") - SET(OPENSSL_SOURCE_FILES "") +else (USABLE_OPENSSL) + MESSAGE("Cannot find a usable OpenSSL library. OPENSSL_LIBRARY=${OPENSSL_LIBRARY}, OPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}, CUSTOM_OPENSSL_INCLUDE_DIR=${CUSTOM_OPENSSL_INCLUDE_DIR}, CUSTOM_OPENSSL_PREFIX=${CUSTOM_OPENSSL_PREFIX}, CUSTOM_OPENSSL_INCLUDE=${CUSTOM_OPENSSL_INCLUDE}") IF(REQUIRE_OPENSSL) - MESSAGE(FATAL_ERROR "Required openssl library could not be found. OPENSSL_LIBRARY=${OPENSSL_LIBRARY}, OPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}, CUSTOM_OPENSSL_INCLUDE_DIR=${CUSTOM_OPENSSL_INCLUDE_DIR}, CUSTOM_OPENSSL_PREFIX=${CUSTOM_OPENSSL_PREFIX}, CUSTOM_OPENSSL_INCLUDE=${CUSTOM_OPENSSL_INCLUDE}") + MESSAGE(FATAL_ERROR "Terminating build because require.openssl was specified.") ENDIF(REQUIRE_OPENSSL) -endif (OPENSSL_LIBRARY AND OPENSSL_INCLUDE_DIR) + SET(OPENSSL_LIBRARY "") + SET(OPENSSL_INCLUDE_DIR "") + SET(OPENSSL_SOURCE_FILES "") +endif (USABLE_OPENSSL) include_directories( ${GENERATED_JAVAH}