From e1e0bbb4cbe11a3f0d7e50466ffa86071ee653b7 Mon Sep 17 00:00:00 2001 From: Jen Herting Date: Thu, 22 Oct 2020 15:05:18 -0400 Subject: New package: orc (#19441) * [orc] created template * [orc] depends on maven * [orc] building with -fPIC * [orc] fixed name of c flags option * [orc] depends on openssl * [orc] added dependencies and disableing installing vendored libs * [orc] disabling hdfs * [orc] depending on specific versions of dependencies * [orc] no building of third party libs * [orc] helping cmake find the dependencies * [orc] disabling features that would require static protobuf libraries * [orc] dependency versions are ranges * [orc] added homepage and description. removed fixmes * [orc] flake8 * [orc] switching to compilier indipendent code --- var/spack/repos/builtin/packages/orc/package.py | 43 +++++ .../repos/builtin/packages/orc/thirdparty.patch | 199 +++++++++++++++++++++ 2 files changed, 242 insertions(+) create mode 100644 var/spack/repos/builtin/packages/orc/package.py create mode 100644 var/spack/repos/builtin/packages/orc/thirdparty.patch (limited to 'var') diff --git a/var/spack/repos/builtin/packages/orc/package.py b/var/spack/repos/builtin/packages/orc/package.py new file mode 100644 index 0000000000..f67111cc6a --- /dev/null +++ b/var/spack/repos/builtin/packages/orc/package.py @@ -0,0 +1,43 @@ +# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Orc(CMakePackage): + """the smallest, fastest columnar storage for Hadoop + workloads.""" + + homepage = "https://orc.apache.org/" + url = "https://github.com/apache/orc/archive/rel/release-1.6.5.tar.gz" + + version('1.6.5', sha256='df5885db8fa2e4435db8d486c6c7fc4e2c565d6197eee27729cf9cbdf36353c0') + + depends_on('maven') + depends_on('openssl') + depends_on('zlib@1.2.11:') + depends_on('pcre') + depends_on('protobuf@3.5.1:') + depends_on('zstd@1.4.5:') + depends_on('googletest@1.8.0:') + depends_on('snappy@1.1.7:') + depends_on('lz4@1.7.5:') + + patch('thirdparty.patch') + + def cmake_args(self): + args = [] + args.append('-DCMAKE_CXX_FLAGS=' + self.compiler.cxx_pic_flag) + args.append('-DCMAKE_C_FLAGS=' + self.compiler.cc_pic_flag) + args.append('-DINSTALL_VENDORED_LIBS:BOOL=OFF') + args.append('-DBUILD_LIBHDFSPP:BOOL=OFF') + args.append('-DBUILD_TOOLS:BOOL=OFF') + args.append('-DBUILD_CPP_TESTS:BOOL=OFF') + + for x in ('snappy', 'zlib', 'zstd', 'lz4', 'protobuf'): + args.append('-D{0}_HOME={1}'.format(x.upper(), + self.spec[x].prefix)) + + return args diff --git a/var/spack/repos/builtin/packages/orc/thirdparty.patch b/var/spack/repos/builtin/packages/orc/thirdparty.patch new file mode 100644 index 0000000000..803adcb869 --- /dev/null +++ b/var/spack/repos/builtin/packages/orc/thirdparty.patch @@ -0,0 +1,199 @@ +diff -ur a/cmake_modules/FindZSTD.cmake b/cmake_modules/FindZSTD.cmake +--- a/cmake_modules/FindZSTD.cmake 2020-10-09 17:55:21.015030909 -0400 ++++ b/cmake_modules/FindZSTD.cmake 2020-10-09 17:59:45.872562052 -0400 +@@ -24,7 +24,7 @@ + message (STATUS "ZSTD_HOME: ${ZSTD_HOME}") + + if (NOT ZSTD_STATIC_LIB_NAME) +- set (ZSTD_STATIC_LIB_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}zstd) ++ set (ZSTD_STATIC_LIB_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}zstd.so) + endif() + + find_path (ZSTD_INCLUDE_DIR zstd.h HINTS +diff -ur a/cmake_modules/ThirdpartyToolchain.cmake b/cmake_modules/ThirdpartyToolchain.cmake +--- a/cmake_modules/ThirdpartyToolchain.cmake 2020-10-09 17:55:21.015030909 -0400 ++++ b/cmake_modules/ThirdpartyToolchain.cmake 2020-10-09 17:55:27.861070483 -0400 +@@ -59,24 +59,8 @@ + # ---------------------------------------------------------------------- + # Snappy + +-if (NOT "${SNAPPY_HOME}" STREQUAL "") +- find_package (Snappy REQUIRED) +- set(SNAPPY_VENDORED FALSE) +-else () +- set(SNAPPY_HOME "${THIRDPARTY_DIR}/snappy_ep-install") +- set(SNAPPY_INCLUDE_DIR "${SNAPPY_HOME}/include") +- set(SNAPPY_STATIC_LIB "${SNAPPY_HOME}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}snappy${CMAKE_STATIC_LIBRARY_SUFFIX}") +- set(SNAPPY_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${SNAPPY_HOME} +- -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_LIBDIR=lib) +- +- ExternalProject_Add (snappy_ep +- URL "https://github.com/google/snappy/archive/${SNAPPY_VERSION}.tar.gz" +- CMAKE_ARGS ${SNAPPY_CMAKE_ARGS} +- ${THIRDPARTY_LOG_OPTIONS} +- BUILD_BYPRODUCTS "${SNAPPY_STATIC_LIB}") +- +- set(SNAPPY_VENDORED TRUE) +-endif () ++find_package (Snappy REQUIRED) ++set(SNAPPY_VENDORED FALSE) + + include_directories (SYSTEM ${SNAPPY_INCLUDE_DIR}) + add_library (snappy STATIC IMPORTED) +@@ -93,32 +77,8 @@ + # ---------------------------------------------------------------------- + # ZLIB + +-if (NOT "${ZLIB_HOME}" STREQUAL "") +- find_package (ZLIB REQUIRED) +- set(ZLIB_VENDORED FALSE) +-else () +- set(ZLIB_PREFIX "${THIRDPARTY_DIR}/zlib_ep-install") +- set(ZLIB_INCLUDE_DIR "${ZLIB_PREFIX}/include") +- if (MSVC) +- set(ZLIB_STATIC_LIB_NAME zlibstatic) +- if (${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG") +- set(ZLIB_STATIC_LIB_NAME ${ZLIB_STATIC_LIB_NAME}d) +- endif () +- else () +- set(ZLIB_STATIC_LIB_NAME z) +- endif () +- set(ZLIB_STATIC_LIB "${ZLIB_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${ZLIB_STATIC_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}") +- set(ZLIB_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${ZLIB_PREFIX} +- -DBUILD_SHARED_LIBS=OFF) +- +- ExternalProject_Add (zlib_ep +- URL "http://zlib.net/fossils/zlib-${ZLIB_VERSION}.tar.gz" +- CMAKE_ARGS ${ZLIB_CMAKE_ARGS} +- ${THIRDPARTY_LOG_OPTIONS} +- BUILD_BYPRODUCTS "${ZLIB_STATIC_LIB}") +- +- set(ZLIB_VENDORED TRUE) +-endif () ++find_package (ZLIB REQUIRED) ++set(ZLIB_VENDORED FALSE) + + include_directories (SYSTEM ${ZLIB_INCLUDE_DIR}) + add_library (zlib STATIC IMPORTED) +@@ -135,39 +95,8 @@ + # ---------------------------------------------------------------------- + # Zstd + +-if (NOT "${ZSTD_HOME}" STREQUAL "") +- find_package (ZSTD REQUIRED) +- set(ZSTD_VENDORED FALSE) +-else () +- set(ZSTD_HOME "${THIRDPARTY_DIR}/zstd_ep-install") +- set(ZSTD_INCLUDE_DIR "${ZSTD_HOME}/include") +- if (MSVC) +- set(ZSTD_STATIC_LIB_NAME zstd_static) +- if (${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG") +- set(ZSTD_STATIC_LIB_NAME ${ZSTD_STATIC_LIB_NAME}) +- endif () +- else () +- set(ZSTD_STATIC_LIB_NAME zstd) +- endif () +- set(ZSTD_STATIC_LIB "${ZSTD_HOME}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${ZSTD_STATIC_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}") +- set(ZSTD_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${ZSTD_HOME} +- -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_LIBDIR=lib) +- +- if (CMAKE_VERSION VERSION_GREATER "3.7") +- set(ZSTD_CONFIGURE SOURCE_SUBDIR "build/cmake" CMAKE_ARGS ${ZSTD_CMAKE_ARGS}) +- else() +- set(ZSTD_CONFIGURE CONFIGURE_COMMAND "${THIRDPARTY_CONFIGURE_COMMAND}" ${ZSTD_CMAKE_ARGS} +- "${CMAKE_CURRENT_BINARY_DIR}/zstd_ep-prefix/src/zstd_ep/build/cmake") +- endif() +- +- ExternalProject_Add(zstd_ep +- URL "https://github.com/facebook/zstd/archive/v${ZSTD_VERSION}.tar.gz" +- ${ZSTD_CONFIGURE} +- ${THIRDPARTY_LOG_OPTIONS} +- BUILD_BYPRODUCTS ${ZSTD_STATIC_LIB}) +- +- set(ZSTD_VENDORED TRUE) +-endif () ++find_package (ZSTD REQUIRED) ++set(ZSTD_VENDORED FALSE) + + include_directories (SYSTEM ${ZSTD_INCLUDE_DIR}) + add_library (zstd STATIC IMPORTED) +@@ -184,32 +113,8 @@ + # ---------------------------------------------------------------------- + # LZ4 + +-if (NOT "${LZ4_HOME}" STREQUAL "") +- find_package (LZ4 REQUIRED) +- set(LZ4_VENDORED FALSE) +-else () +- set(LZ4_PREFIX "${THIRDPARTY_DIR}/lz4_ep-install") +- set(LZ4_INCLUDE_DIR "${LZ4_PREFIX}/include") +- set(LZ4_STATIC_LIB "${LZ4_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}lz4${CMAKE_STATIC_LIBRARY_SUFFIX}") +- set(LZ4_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LZ4_PREFIX} +- -DCMAKE_INSTALL_LIBDIR=lib +- -DBUILD_SHARED_LIBS=OFF) +- +- if (CMAKE_VERSION VERSION_GREATER "3.7") +- set(LZ4_CONFIGURE SOURCE_SUBDIR "contrib/cmake_unofficial" CMAKE_ARGS ${LZ4_CMAKE_ARGS}) +- else() +- set(LZ4_CONFIGURE CONFIGURE_COMMAND "${THIRDPARTY_CONFIGURE_COMMAND}" ${LZ4_CMAKE_ARGS} +- "${CMAKE_CURRENT_BINARY_DIR}/lz4_ep-prefix/src/lz4_ep/contrib/cmake_unofficial") +- endif() +- +- ExternalProject_Add(lz4_ep +- URL "https://github.com/lz4/lz4/archive/v${LZ4_VERSION}.tar.gz" +- ${LZ4_CONFIGURE} +- ${THIRDPARTY_LOG_OPTIONS} +- BUILD_BYPRODUCTS ${LZ4_STATIC_LIB}) +- +- set(LZ4_VENDORED TRUE) +-endif () ++find_package (LZ4 REQUIRED) ++set(LZ4_VENDORED FALSE) + + include_directories (SYSTEM ${LZ4_INCLUDE_DIR}) + add_library (lz4 STATIC IMPORTED) +@@ -288,42 +193,8 @@ + # ---------------------------------------------------------------------- + # Protobuf + +-if (NOT "${PROTOBUF_HOME}" STREQUAL "") +- find_package (Protobuf REQUIRED) +- set(PROTOBUF_VENDORED FALSE) +-else () +- set(PROTOBUF_PREFIX "${THIRDPARTY_DIR}/protobuf_ep-install") +- set(PROTOBUF_INCLUDE_DIR "${PROTOBUF_PREFIX}/include") +- set(PROTOBUF_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PROTOBUF_PREFIX} +- -DCMAKE_INSTALL_LIBDIR=lib +- -DBUILD_SHARED_LIBS=OFF +- -Dprotobuf_BUILD_TESTS=OFF) +- if (MSVC) +- set(PROTOBUF_STATIC_LIB_PREFIX lib) +- list(APPEND PROTOBUF_CMAKE_ARGS -Dprotobuf_MSVC_STATIC_RUNTIME=OFF +- -Dprotobuf_DEBUG_POSTFIX=) +- else () +- set(PROTOBUF_STATIC_LIB_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX}) +- endif () +- set(PROTOBUF_STATIC_LIB "${PROTOBUF_PREFIX}/lib/${PROTOBUF_STATIC_LIB_PREFIX}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX}") +- set(PROTOC_STATIC_LIB "${PROTOBUF_PREFIX}/lib/${PROTOBUF_STATIC_LIB_PREFIX}protoc${CMAKE_STATIC_LIBRARY_SUFFIX}") +- set(PROTOBUF_EXECUTABLE "${PROTOBUF_PREFIX}/bin/protoc${CMAKE_EXECUTABLE_SUFFIX}") +- +- if (CMAKE_VERSION VERSION_GREATER "3.7") +- set(PROTOBUF_CONFIGURE SOURCE_SUBDIR "cmake" CMAKE_ARGS ${PROTOBUF_CMAKE_ARGS}) +- else() +- set(PROTOBUF_CONFIGURE CONFIGURE_COMMAND "${THIRDPARTY_CONFIGURE_COMMAND}" ${PROTOBUF_CMAKE_ARGS} +- "${CMAKE_CURRENT_BINARY_DIR}/protobuf_ep-prefix/src/protobuf_ep/cmake") +- endif() +- +- ExternalProject_Add(protobuf_ep +- URL "https://github.com/google/protobuf/archive/v${PROTOBUF_VERSION}.tar.gz" +- ${PROTOBUF_CONFIGURE} +- ${THIRDPARTY_LOG_OPTIONS} +- BUILD_BYPRODUCTS "${PROTOBUF_STATIC_LIB}" "${PROTOC_STATIC_LIB}") +- +- set(PROTOBUF_VENDORED TRUE) +-endif () ++find_package (Protobuf REQUIRED) ++set(PROTOBUF_VENDORED FALSE) + + include_directories (SYSTEM ${PROTOBUF_INCLUDE_DIR}) + -- cgit v1.2.3-70-g09d2