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
This commit is contained in:
Jen Herting 2020-10-22 15:05:18 -04:00 committed by GitHub
parent bd0b53f4fb
commit e1e0bbb4cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 242 additions and 0 deletions

View File

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

View File

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