[orc] add apache orc library (#4496)

* [orc] add apache orc library

* [orc] Simplify patch. Note in usage that no targets are available. Don't build tools on windows because they are not supported.

* [orc] Move tools to tools/orc/ to fix Linux build.

* [orc] fix tools ouput folder
This commit is contained in:
Erwan BERNARD 2018-10-22 13:25:37 +02:00 committed by Robert Schumacher
parent eb46ce1fbb
commit 03266cc498
5 changed files with 232 additions and 0 deletions

View File

@ -0,0 +1,141 @@
diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt
index 91c67d5..4377b83 100644
--- a/c++/src/CMakeLists.txt
+++ b/c++/src/CMakeLists.txt
@@ -197,11 +197,12 @@ endif(BUILD_LIBHDFSPP)
add_library (orc STATIC ${SOURCE_FILES})
target_link_libraries (orc
- protobuf
- zlib
- snappy
- lz4
- ${LIBHDFSPP_LIBRARIES}
+ PUBLIC
+ protobuf::libprotobuf
+ ZLIB::ZLIB
+ Snappy::snappy
+ ${LZ4_STATIC_LIB}
+ ${LIBHDFSPP_LIBRARIES}
)
install(TARGETS orc DESTINATION lib)
\ No newline at end of file
diff --git a/c++/test/CMakeLists.txt b/c++/test/CMakeLists.txt
index 015814a..2b55f4e 100644
--- a/c++/test/CMakeLists.txt
+++ b/c++/test/CMakeLists.txt
@@ -48,10 +48,6 @@ add_executable (orc-test
target_link_libraries (orc-test
orc
- lz4
- protobuf
- snappy
- zlib
${GTEST_LIBRARIES}
)
diff --git a/cmake_modules/ThirdpartyToolchain.cmake b/cmake_modules/ThirdpartyToolchain.cmake
index 0272263..8b79a12 100644
--- a/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cmake_modules/ThirdpartyToolchain.cmake
@@ -51,8 +51,8 @@ endif ()
# ----------------------------------------------------------------------
# Snappy
-if (NOT "${SNAPPY_HOME}" STREQUAL "")
- find_package (Snappy REQUIRED)
+if (NOT "${SNAPPY_HOME}" STREQUAL "" OR 1)
+ find_package (Snappy CONFIG REQUIRED)
set(SNAPPY_VENDORED FALSE)
else ()
set(SNAPPY_HOME "${THIRDPARTY_DIR}/snappy_ep-install")
@@ -70,10 +70,6 @@ else ()
set(SNAPPY_VENDORED TRUE)
endif ()
-include_directories (SYSTEM ${SNAPPY_INCLUDE_DIR})
-add_library (snappy STATIC IMPORTED)
-set_target_properties (snappy PROPERTIES IMPORTED_LOCATION ${SNAPPY_STATIC_LIB})
-
if (SNAPPY_VENDORED)
add_dependencies (snappy snappy_ep)
if (INSTALL_VENDORED_LIBS)
@@ -85,7 +81,7 @@ endif ()
# ----------------------------------------------------------------------
# ZLIB
-if (NOT "${ZLIB_HOME}" STREQUAL "")
+if (NOT "${ZLIB_HOME}" STREQUAL "" OR 1)
find_package (ZLIB REQUIRED)
set(ZLIB_VENDORED FALSE)
else ()
@@ -112,10 +108,6 @@ else ()
set(ZLIB_VENDORED TRUE)
endif ()
-include_directories (SYSTEM ${ZLIB_INCLUDE_DIR})
-add_library (zlib STATIC IMPORTED)
-set_target_properties (zlib PROPERTIES IMPORTED_LOCATION ${ZLIB_STATIC_LIB})
-
if (ZLIB_VENDORED)
add_dependencies (zlib zlib_ep)
if (INSTALL_VENDORED_LIBS)
@@ -127,8 +119,8 @@ endif ()
# ----------------------------------------------------------------------
# LZ4
-if (NOT "${LZ4_HOME}" STREQUAL "")
- find_package (LZ4 REQUIRED)
+if (NOT "${LZ4_HOME}" STREQUAL "" OR 1)
+ find_library(LZ4_STATIC_LIB NAMES lz4d lz4)
set(LZ4_VENDORED FALSE)
else ()
set(LZ4_PREFIX "${THIRDPARTY_DIR}/lz4_ep-install")
@@ -154,8 +146,6 @@ else ()
endif ()
include_directories (SYSTEM ${LZ4_INCLUDE_DIR})
-add_library (lz4 STATIC IMPORTED)
-set_target_properties (lz4 PROPERTIES IMPORTED_LOCATION ${LZ4_STATIC_LIB})
if (LZ4_VENDORED)
add_dependencies (lz4 lz4_ep)
@@ -230,8 +220,8 @@ endif ()
# ----------------------------------------------------------------------
# Protobuf
-if (NOT "${PROTOBUF_HOME}" STREQUAL "")
- find_package (Protobuf REQUIRED)
+if (NOT "${PROTOBUF_HOME}" STREQUAL "" OR 1)
+ find_package(protobuf CONFIG REQUIRED)
set(PROTOBUF_VENDORED FALSE)
else ()
set(PROTOBUF_PREFIX "${THIRDPARTY_DIR}/protobuf_ep-install")
@@ -266,13 +256,8 @@ else ()
set(PROTOBUF_VENDORED TRUE)
endif ()
-include_directories (SYSTEM ${PROTOBUF_INCLUDE_DIR})
-add_library (protobuf STATIC IMPORTED)
-set_target_properties (protobuf PROPERTIES IMPORTED_LOCATION ${PROTOBUF_STATIC_LIB})
-add_library (protoc STATIC IMPORTED)
-set_target_properties (protoc PROPERTIES IMPORTED_LOCATION ${PROTOC_STATIC_LIB})
if (PROTOBUF_VENDORED)
add_dependencies (protoc protobuf_ep)
diff --git a/tools/src/CMakeLists.txt b/tools/src/CMakeLists.txt
index 667fab4..eb6d232 100644
--- a/tools/src/CMakeLists.txt
+++ b/tools/src/CMakeLists.txt
@@ -49,7 +49,6 @@ add_executable (orc-metadata
target_link_libraries (orc-metadata
orc
- protobuf
)
add_executable (orc-statistics

View File

@ -0,0 +1,13 @@
diff --git a/tools/src/CMakeLists.txt b/tools/src/CMakeLists.txt
index eb6d232..5a99f5c 100644
--- a/tools/src/CMakeLists.txt
+++ b/tools/src/CMakeLists.txt
@@ -87,4 +87,7 @@ install(TARGETS
orc-contents
orc-metadata
orc-statistics
- DESTINATION bin)
+ orc-scan
+ orc-memory
+ csv-import
+ DESTINATION tools/orc)

4
ports/orc/CONTROL Normal file
View File

@ -0,0 +1,4 @@
Source: orc
Version: 1.5.2-f47e02c-2
Build-Depends: zlib, protobuf, lz4, snappy, gtest
Description: The smallest, fastest columnar storage for Hadoop workloads.

64
ports/orc/portfile.cmake Normal file
View File

@ -0,0 +1,64 @@
include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO apache/orc
REF f47e02cfbf346f14d7f38c3ddd45d39e3b515847
SHA512 5a389f4ab3b0ce4e7c8869493cf9e91feb4917a42bf2740abd71602fa03a2a53217b572e60af7328b7568dab084c07275ea275438ec8ae87f230a87fb60f2601
HEAD_REF master
PATCHES
0001-dependencies-from-vcpkg.patch
0002-fix-executable-output-folder.patch
)
file(REMOVE "${SOURCE_PATH}/cmake_modules/FindGTest.cmake")
file(REMOVE "${SOURCE_PATH}/cmake_modules/FindLZ4.cmake")
file(REMOVE "${SOURCE_PATH}/cmake_modules/FindProtobuf.cmake")
file(REMOVE "${SOURCE_PATH}/cmake_modules/FindSnappy.cmake")
file(REMOVE "${SOURCE_PATH}/cmake_modules/FindZLIB.cmake")
if(CMAKE_HOST_WIN32)
set(PROTOBUF_EXECUTABLE ${CURRENT_INSTALLED_DIR}/tools/protobuf/protoc.exe)
else()
set(PROTOBUF_EXECUTABLE ${CURRENT_INSTALLED_DIR}/tools/protobuf/protoc)
endif()
if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
set(BUILD_TOOLS OFF)
else()
set(BUILD_TOOLS ON)
endif()
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DBUILD_TOOLS=${BUILD_TOOLS}
-DBUILD_CPP_TESTS=OFF
-DBUILD_JAVA=OFF
-DINSTALL_VENDORED_LIBS=OFF
-DBUILD_LIBHDFSPP=OFF
-DPROTOBUF_EXECUTABLE:FILEPATH=${PROTOBUF_EXECUTABLE}
)
vcpkg_install_cmake()
file(GLOB TOOLS ${CURRENT_PACKAGES_DIR}/bin/orc-*)
if(TOOLS)
file(COPY ${TOOLS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/orc)
file(REMOVE ${TOOLS})
endif()
file(GLOB BINS ${CURRENT_PACKAGES_DIR}/bin/*)
if(NOT BINS)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/orc RENAME copyright)
vcpkg_copy_pdbs()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})

10
ports/orc/usage Normal file
View File

@ -0,0 +1,10 @@
The package orc does not provide CMake targets:
find_package(protobuf CONFIG REQUIRED)
find_package(ZLIB REQUIRED)
find_package(Snappy CONFIG REQUIRED)
find_library(LZ4_LIBRARY NAMES lz4d lz4)
find_library(ORC_LIBRARY NAMES orc)
target_link_libraries(main PRIVATE ${ORC_LIBRARY} protobuf::libprotoc protobuf::libprotobuf Snappy::snappy ${LZ4_LIBRARY} ZLIB::ZLIB)