This is an automated email from the ASF dual-hosted git repository. abukor pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kudu.git
commit dda258785bbdfef8a14bc27c7cb1c9ebd61d3035 Author: khazarmammadli <[email protected]> AuthorDate: Mon Jun 7 18:54:30 2021 +0200 [rest] add oat++ framework to kudu Add oat++ framework with swagger module, which is used in the follow-up commits to implement an embeddable rest server into the master servers and later on tablet servers. Add patches to remove oat++ version number from directory path. Change-Id: Ie1b5376297b0170a624655acf836cdedc090f6e7 Reviewed-on: http://gerrit.cloudera.org:8080/17554 Tested-by: Kudu Jenkins Reviewed-by: Alexey Serbin <[email protected]> Reviewed-by: Attila Bukor <[email protected]> --- CMakeLists.txt | 12 ++++ cmake_modules/FindOatpp.cmake | 38 ++++++++++ cmake_modules/FindOatppSwagger.cmake | 37 ++++++++++ thirdparty/build-definitions.sh | 32 +++++++++ thirdparty/build-thirdparty.sh | 18 +++++ thirdparty/download-thirdparty.sh | 15 ++++ .../patches/oatpp-remove-version-from-path.patch | 65 +++++++++++++++++ .../oatpp-swagger-remove-version-from-path.patch | 83 ++++++++++++++++++++++ thirdparty/vars.sh | 8 +++ 9 files changed, 308 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c7e8ce3..e276cf1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1078,6 +1078,18 @@ include_directories(SYSTEM ${MUSTACHE_INCLUDE_DIR}) ADD_THIRDPARTY_LIB(mustache STATIC_LIB "${MUSTACHE_STATIC_LIB}") +## Oatpp +find_package(Oatpp REQUIRED) +include_directories(SYSTEM ${OATPP_INCLUDE_DIR}) +ADD_THIRDPARTY_LIB(oatpp + STATIC_LIB "${OATPP_STATIC_LIB}") + +## Oatpp-swagger +find_package(OatppSwagger REQUIRED) +include_directories(SYSTEM ${OATPP_SWAGGER_INCLUDE_DIR}) +ADD_THIRDPARTY_LIB(oatpp-swagger + STATIC_LIB "${OATPP_SWAGGER_STATIC_LIB}") + ## OpenSSL ## ## Version 1.0.0 or higher is required because we are using the following diff --git a/cmake_modules/FindOatpp.cmake b/cmake_modules/FindOatpp.cmake new file mode 100644 index 0000000..65b0728 --- /dev/null +++ b/cmake_modules/FindOatpp.cmake @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# - Find Oatpp +# This module defines +# OATPP_INCLUDE_DIR, directory containing headers +# OATPP_STATIC_LIB, path to liboatpp.a +# OATPP_FOUND, whether oat++ has been found + +find_path(OATPP_INCLUDE_DIR oatpp/oatpp/oatpp/algorithm/CRC.hpp + # make sure we don't accidentally pick up a different version + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) + +set(OATPP_INCLUDE_DIR ${OATPP_INCLUDE_DIR}/oatpp/oatpp/) + +find_library(OATPP_STATIC_LIB oatpp/liboatpp.a + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Oatpp REQUIRED_VARS + OATPP_STATIC_LIB OATPP_INCLUDE_DIR) + diff --git a/cmake_modules/FindOatppSwagger.cmake b/cmake_modules/FindOatppSwagger.cmake new file mode 100644 index 0000000..593bf95 --- /dev/null +++ b/cmake_modules/FindOatppSwagger.cmake @@ -0,0 +1,37 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# - Find Oatpp-Swagger Module +# This module defines +# OATPP_SWAGGER_INCLUDE_DIR, directory containing headers +# OATPP_SWAGGER_STATIC_LIB, path to liboatpp-swagger.a. +# OATPP_SWAGGER_FOUND, whether oat++ swagger has been found + +find_path(OATPP_SWAGGER_INCLUDE_DIR oatpp/oatpp-swagger/oatpp-swagger/Resources.hpp + # make sure we don't accidentally pick up a different version + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) + +set(OATPP_SWAGGER_INCLUDE_DIR ${OATPP_SWAGGER_INCLUDE_DIR}/oatpp/oatpp-swagger/) + +find_library(OATPP_SWAGGER_STATIC_LIB oatpp/liboatpp-swagger.a + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(OatppSwagger REQUIRED_VARS + OATPP_SWAGGER_STATIC_LIB OATPP_SWAGGER_INCLUDE_DIR) \ No newline at end of file diff --git a/thirdparty/build-definitions.sh b/thirdparty/build-definitions.sh index d82c597..fce6327 100644 --- a/thirdparty/build-definitions.sh +++ b/thirdparty/build-definitions.sh @@ -1093,3 +1093,35 @@ build_postgres() { make -j$PARALLEL $EXTRA_MAKEFLAGS install popd } + +build_oatpp(){ + OATPP_BUILD_DIR=$TP_BUILD_DIR/$OATPP_NAME$MODE_SUFFIX + mkdir -p $OATPP_BUILD_DIR + pushd $OATPP_BUILD_DIR + cmake \ + -DCMAKE_BUILD_TYPE=release \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -DOATPP_DISABLE_ENV_OBJECT_COUNTERS=ON \ + -DOATPP_BUILD_TESTS=OFF \ + $OATPP_SOURCE + make -j$PARALLEL install + popd +} + +build_oatpp_swagger(){ + OATPP_SWAGGER_BUILD_DIR=$TP_BUILD_DIR/$OATPP_SWAGGER_NAME$MODE_SUFFIX + mkdir -p $OATPP_SWAGGER_BUILD_DIR + pushd $OATPP_SWAGGER_BUILD_DIR + cmake \ + -DCMAKE_BUILD_TYPE=release \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DBUILD_SHARED_LIBS=OFF \ + -DOATPP_BUILD_TESTS=OFF \ + -DOATPP_INSTALL=ON \ + $OATPP_SWAGGER_SOURCE + make -j$PARALLEL install + popd +} \ No newline at end of file diff --git a/thirdparty/build-thirdparty.sh b/thirdparty/build-thirdparty.sh index 1c6aa3c..aa95364 100755 --- a/thirdparty/build-thirdparty.sh +++ b/thirdparty/build-thirdparty.sh @@ -105,6 +105,8 @@ else "postgres") F_POSTGRES=1 ;; "psql-jdbc") F_POSTGRES_JDBC=1 ;; "ranger") F_RANGER=1 ;; + "oatpp") F_OATPP=1 ;; + "oatpp-swagger") F_OATPP_SWAGGER=1 ;; *) echo "Unknown module: $arg"; exit 1 ;; esac done @@ -411,6 +413,14 @@ if [ -n "$F_UNINSTRUMENTED" -o -n "$F_GUMBO_QUERY" ]; then build_gumbo_query fi +if [ -n "$F_UNINSTRUMENTED" -o -n "$F_OATPP" ]; then + build_oatpp +fi + +if [ -n "$F_UNINSTRUMENTED" -o -n "$F_OATPP_SWAGGER" ]; then + build_oatpp_swagger +fi + restore_env # If we're on macOS best to exit here, otherwise single dependency builds will try to @@ -593,6 +603,14 @@ if [ -n "$F_TSAN" -o -n "$F_GUMBO_QUERY" ]; then build_gumbo_query fi +if [ -n "$F_TSAN" -o -n "$F_OATPP" ]; then + build_oatpp +fi + +if [ -n "$F_TSAN" -o -n "$F_OATPP_SWAGGER" ]; then + build_oatpp_swagger +fi + restore_env finish diff --git a/thirdparty/download-thirdparty.sh b/thirdparty/download-thirdparty.sh index d724f73..4c14397 100755 --- a/thirdparty/download-thirdparty.sh +++ b/thirdparty/download-thirdparty.sh @@ -461,5 +461,20 @@ fetch_and_patch \ $RANGER_PATCHLEVEL \ "patch -p0 < $TP_DIR/patches/ranger-fixscripts.patch" +OATPP_PATCHLEVEL=1 +fetch_and_patch \ + $OATPP_NAME.tar.gz \ + $OATPP_SOURCE \ + $OATPP_PATCHLEVEL \ + "patch -p1 < $TP_DIR/patches/oatpp-remove-version-from-path.patch" + +OATPP_SWAGGER_PATCHLEVEL=1 +fetch_and_patch \ + $OATPP_SWAGGER_NAME.tar.gz \ + $OATPP_SWAGGER_SOURCE \ + $OATPP_SWAGGER_PATCHLEVEL \ +"patch -p1 < $TP_DIR/patches/oatpp-swagger-remove-version-from-path.patch" + + echo "---------------" echo "Thirdparty dependencies downloaded successfully" diff --git a/thirdparty/patches/oatpp-remove-version-from-path.patch b/thirdparty/patches/oatpp-remove-version-from-path.patch new file mode 100644 index 0000000..b24f2ac --- /dev/null +++ b/thirdparty/patches/oatpp-remove-version-from-path.patch @@ -0,0 +1,65 @@ +diff --git a/cmake/module-config.cmake.in b/cmake/module-config.cmake.in +index 5cc12b0..00b7913 100644 +--- a/cmake/module-config.cmake.in ++++ b/cmake/module-config.cmake.in +@@ -4,8 +4,8 @@ if(NOT TARGET oatpp::@OATPP_MODULE_NAME@) + include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]") + endif() + +-set_and_check(@OATPP_MODULE_NAME@_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include/oatpp-@OATPP_MODULE_VERSION@/@OATPP_MODULE_NAME@/") +-set_and_check(@OATPP_MODULE_NAME@_LIBRARIES_DIRS "${PACKAGE_PREFIX_DIR}/@OATPP_MODULE_LIBDIR@/oatpp-@OATPP_MODULE_VERSION@/") ++set_and_check(@OATPP_MODULE_NAME@_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include/oatpp/@OATPP_MODULE_NAME@/") ++set_and_check(@OATPP_MODULE_NAME@_LIBRARIES_DIRS "${PACKAGE_PREFIX_DIR}/@OATPP_MODULE_LIBDIR@/oatpp/") + + set(@OATPP_MODULE_NAME@_LIBRARIES @OATPP_MODULE_LIBRARIES@) +-set(OATPP_BASE_DIR "${PACKAGE_PREFIX_DIR}/include/oatpp-@OATPP_MODULE_VERSION@/") ++set(OATPP_BASE_DIR "${PACKAGE_PREFIX_DIR}/include/oatpp/") +diff --git a/cmake/module-install.cmake b/cmake/module-install.cmake +index 4506ea6..d0972ae 100644 +--- a/cmake/module-install.cmake ++++ b/cmake/module-install.cmake +@@ -59,21 +59,21 @@ endforeach() + + install(TARGETS ${OATPP_THIS_MODULE_TARGETS} + EXPORT "${OATPP_MODULE_NAME}Targets" +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}" +- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}" +- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/oatpp-${OATPP_MODULE_VERSION}" +- INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}" ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp" ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp" ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/oatpp" ++ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp/${OATPP_MODULE_NAME}" + ) + + install(DIRECTORY ${OATPP_DIRS_TO_INSTALL} +- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}" ++ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp/${OATPP_MODULE_NAME}" + FILES_MATCHING PATTERN "*.hpp" + ) + + install(EXPORT "${OATPP_MODULE_NAME}Targets" + FILE "${OATPP_MODULE_NAME}Targets.cmake" + NAMESPACE oatpp:: +- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}" ++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}" + ) + + include(CMakePackageConfigHelpers) +@@ -89,7 +89,7 @@ configure_package_config_file( + "${CMAKE_CURRENT_LIST_DIR}/module-config.cmake.in" + "${OATPP_MODULE_NAME}Config.cmake" + INSTALL_DESTINATION +- "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}" ++ "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}" + PATH_VARS + OATPP_MODULE_NAME + OATPP_MODULE_VERSION +@@ -103,5 +103,5 @@ install( + "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}Config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}ConfigVersion.cmake" + DESTINATION +- "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}" ++ "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}" + ) +\ No newline at end of file \ No newline at end of file diff --git a/thirdparty/patches/oatpp-swagger-remove-version-from-path.patch b/thirdparty/patches/oatpp-swagger-remove-version-from-path.patch new file mode 100644 index 0000000..41970f3 --- /dev/null +++ b/thirdparty/patches/oatpp-swagger-remove-version-from-path.patch @@ -0,0 +1,83 @@ +diff --git a/cmake/module-config.cmake.in b/cmake/module-config.cmake.in +index 5cc12b0..00b7913 100644 +--- a/cmake/module-config.cmake.in ++++ b/cmake/module-config.cmake.in +@@ -4,8 +4,8 @@ if(NOT TARGET oatpp::@OATPP_MODULE_NAME@) + include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]") + endif() + +-set_and_check(@OATPP_MODULE_NAME@_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include/oatpp-@OATPP_MODULE_VERSION@/@OATPP_MODULE_NAME@/") +-set_and_check(@OATPP_MODULE_NAME@_LIBRARIES_DIRS "${PACKAGE_PREFIX_DIR}/@OATPP_MODULE_LIBDIR@/oatpp-@OATPP_MODULE_VERSION@/") ++set_and_check(@OATPP_MODULE_NAME@_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include/oatpp/@OATPP_MODULE_NAME@/") ++set_and_check(@OATPP_MODULE_NAME@_LIBRARIES_DIRS "${PACKAGE_PREFIX_DIR}/@OATPP_MODULE_LIBDIR@/oatpp/") + + set(@OATPP_MODULE_NAME@_LIBRARIES @OATPP_MODULE_LIBRARIES@) +-set(OATPP_BASE_DIR "${PACKAGE_PREFIX_DIR}/include/oatpp-@OATPP_MODULE_VERSION@/") ++set(OATPP_BASE_DIR "${PACKAGE_PREFIX_DIR}/include/oatpp/") +diff --git a/cmake/module-install.cmake b/cmake/module-install.cmake +index 4506ea6..d0972ae 100644 +--- a/cmake/module-install.cmake ++++ b/cmake/module-install.cmake +@@ -59,21 +59,21 @@ endforeach() + + install(TARGETS ${OATPP_THIS_MODULE_TARGETS} + EXPORT "${OATPP_MODULE_NAME}Targets" +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}" +- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}" +- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/oatpp-${OATPP_MODULE_VERSION}" +- INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}" ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp" ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp" ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/oatpp" ++ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp/${OATPP_MODULE_NAME}" + ) + + install(DIRECTORY ${OATPP_DIRS_TO_INSTALL} +- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}" ++ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp/${OATPP_MODULE_NAME}" + FILES_MATCHING PATTERN "*.hpp" + ) + + install(EXPORT "${OATPP_MODULE_NAME}Targets" + FILE "${OATPP_MODULE_NAME}Targets.cmake" + NAMESPACE oatpp:: +- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}" ++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}" + ) + + include(CMakePackageConfigHelpers) +@@ -89,7 +89,7 @@ configure_package_config_file( + "${CMAKE_CURRENT_LIST_DIR}/module-config.cmake.in" + "${OATPP_MODULE_NAME}Config.cmake" + INSTALL_DESTINATION +- "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}" ++ "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}" + PATH_VARS + OATPP_MODULE_NAME + OATPP_MODULE_VERSION +@@ -103,5 +103,5 @@ install( + "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}Config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}ConfigVersion.cmake" + DESTINATION +- "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}" ++ "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}" + ) +\ No newline at end of file +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 92f8d56..fa7a2c8 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -38,11 +38,11 @@ if(OATPP_INSTALL) + + ## install swagger-ui files + install(DIRECTORY ../res +- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/bin/${OATPP_MODULE_NAME}" ++ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp/bin/${OATPP_MODULE_NAME}" + FILES_MATCHING PATTERN "*.*" + ) + + ## set environment variable to point to swagger-ui res files +- set(ENV{OATPP_SWAGGER_RES_PATH} "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/bin/${OATPP_MODULE_NAME}/res") ++ set(ENV{OATPP_SWAGGER_RES_PATH} "${CMAKE_INSTALL_INCLUDEDIR}/oatpp/bin/${OATPP_MODULE_NAME}/res") + + endif() \ No newline at end of file diff --git a/thirdparty/vars.sh b/thirdparty/vars.sh index d8b0f56..6070018 100644 --- a/thirdparty/vars.sh +++ b/thirdparty/vars.sh @@ -258,3 +258,11 @@ POSTGRES_JDBC_SOURCE=$TP_SOURCE_DIR/$POSTGRES_JDBC_NAME RANGER_VERSION=2.1.0 RANGER_NAME=ranger-$RANGER_VERSION-admin RANGER_SOURCE=$TP_SOURCE_DIR/$RANGER_NAME + +OATPP_VERSION=1.2.5 +OATPP_NAME=oatpp-$OATPP_VERSION +OATPP_SOURCE=$TP_SOURCE_DIR/$OATPP_NAME + +OATPP_SWAGGER_VERSION=1.2.5 +OATPP_SWAGGER_NAME=oatpp-swagger-$OATPP_SWAGGER_VERSION +OATPP_SWAGGER_SOURCE=$TP_SOURCE_DIR/$OATPP_SWAGGER_NAME \ No newline at end of file
