From 03266cc498138f026cbcf5754c8ff18a31c118d7 Mon Sep 17 00:00:00 2001 From: Erwan BERNARD Date: Mon, 22 Oct 2018 13:25:37 +0200 Subject: [PATCH] [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 --- ports/orc/0001-dependencies-from-vcpkg.patch | 141 ++++++++++++++++++ .../0002-fix-executable-output-folder.patch | 13 ++ ports/orc/CONTROL | 4 + ports/orc/portfile.cmake | 64 ++++++++ ports/orc/usage | 10 ++ 5 files changed, 232 insertions(+) create mode 100644 ports/orc/0001-dependencies-from-vcpkg.patch create mode 100644 ports/orc/0002-fix-executable-output-folder.patch create mode 100644 ports/orc/CONTROL create mode 100644 ports/orc/portfile.cmake create mode 100644 ports/orc/usage diff --git a/ports/orc/0001-dependencies-from-vcpkg.patch b/ports/orc/0001-dependencies-from-vcpkg.patch new file mode 100644 index 0000000000..7930bf1488 --- /dev/null +++ b/ports/orc/0001-dependencies-from-vcpkg.patch @@ -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 diff --git a/ports/orc/0002-fix-executable-output-folder.patch b/ports/orc/0002-fix-executable-output-folder.patch new file mode 100644 index 0000000000..5fa992dc10 --- /dev/null +++ b/ports/orc/0002-fix-executable-output-folder.patch @@ -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) diff --git a/ports/orc/CONTROL b/ports/orc/CONTROL new file mode 100644 index 0000000000..45532cad31 --- /dev/null +++ b/ports/orc/CONTROL @@ -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. diff --git a/ports/orc/portfile.cmake b/ports/orc/portfile.cmake new file mode 100644 index 0000000000..f9a23b7085 --- /dev/null +++ b/ports/orc/portfile.cmake @@ -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}) diff --git a/ports/orc/usage b/ports/orc/usage new file mode 100644 index 0000000000..6a20ccb896 --- /dev/null +++ b/ports/orc/usage @@ -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)