From e4a650dda122a4e37bcd4ed82b45f124199d0742 Mon Sep 17 00:00:00 2001 From: quicksilver Date: Thu, 1 Aug 2019 23:04:11 +0800 Subject: [PATCH 1/3] add zlib cache Former-commit-id: 4e0e20b9290b0ebcff8f2c0e5834c0c1050cd1e6 --- cpp/cmake/ThirdPartyPackages.cmake | 59 +++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/cpp/cmake/ThirdPartyPackages.cmake b/cpp/cmake/ThirdPartyPackages.cmake index eefaf882ab..ce3dff36b2 100644 --- a/cpp/cmake/ThirdPartyPackages.cmake +++ b/cpp/cmake/ThirdPartyPackages.cmake @@ -1814,9 +1814,10 @@ macro(build_thrift) ${THRIFT_DEPENDENCIES} ${EP_LOG_OPTIONS}) - add_library(thrift STATIC IMPORTED) # The include directory must exist before it is referenced by a target. file(MAKE_DIRECTORY "${THRIFT_INCLUDE_DIR}") + + add_library(thrift STATIC IMPORTED) set_target_properties(thrift PROPERTIES IMPORTED_LOCATION "${THRIFT_STATIC_LIB}" INTERFACE_INCLUDE_DIRECTORIES "${THRIFT_INCLUDE_DIR}") @@ -1885,27 +1886,57 @@ macro(build_zlib) set(ZLIB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/zlib_ep-prefix/src/zlib_ep") set(ZLIB_STATIC_LIB_NAME libz.a) set(ZLIB_STATIC_LIB "${ZLIB_PREFIX}/lib/${ZLIB_STATIC_LIB_NAME}") + set(ZLIB_INCLUDE_DIR "${ZLIB_PREFIX}/include") set(ZLIB_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${ZLIB_PREFIX}" -DBUILD_SHARED_LIBS=OFF) - externalproject_add(zlib_ep - URL - ${ZLIB_SOURCE_URL} - ${EP_LOG_OPTIONS} - BUILD_COMMAND - ${MAKE} - ${MAKE_BUILD_ARGS} - BUILD_BYPRODUCTS - "${ZLIB_STATIC_LIB}" - CMAKE_ARGS - ${ZLIB_CMAKE_ARGS}) + if(USE_JFROG_CACHE STREQUAL "ON") + set(ZLIB_CACHE_PACKAGE_NAME "zlib_${ZLIB_MD5}.tar.gz") + set(ZLIB_CACHE_URL "${JFROG_ARTFACTORY_CACHE_URL}/${ZLIB_CACHE_PACKAGE_NAME}") + set(ZLIB_CACHE_PACKAGE_PATH "${THIRDPARTY_PACKAGE_CACHE}/${ZLIB_CACHE_PACKAGE_NAME}") - file(MAKE_DIRECTORY "${ZLIB_PREFIX}/include") + file(DOWNLOAD ${ZLIB_CACHE_URL} ${ZLIB_CACHE_PACKAGE_PATH} STATUS status) + list(GET status 0 status_code) + message(STATUS "DOWNLOADING FROM ${ZLIB_CACHE_URL} TO ${ZLIB_CACHE_PACKAGE_PATH}. STATUS = ${status_code}") + if (NOT status_code EQUAL 0) + externalproject_add(zlib_ep + URL + ${ZLIB_SOURCE_URL} + ${EP_LOG_OPTIONS} + BUILD_COMMAND + ${MAKE} + ${MAKE_BUILD_ARGS} + BUILD_BYPRODUCTS + "${ZLIB_STATIC_LIB}" + CMAKE_ARGS + ${ZLIB_CMAKE_ARGS}) + + ExternalProject_Create_Cache(zlib_ep ${ZLIB_CACHE_PACKAGE_PATH} "${CMAKE_CURRENT_BINARY_DIR}/zlib_ep-prefix" ${JFROG_USER_NAME} ${JFROG_PASSWORD} ${ZLIB_CACHE_URL}) + + file(MAKE_DIRECTORY "${ZLIB_INCLUDE_DIR}") + else() + ExternalProject_Use_Cache(zlib_ep ${ZLIB_CACHE_PACKAGE_PATH} ${CMAKE_CURRENT_BINARY_DIR}) + endif() + else() + externalproject_add(zlib_ep + URL + ${ZLIB_SOURCE_URL} + ${EP_LOG_OPTIONS} + BUILD_COMMAND + ${MAKE} + ${MAKE_BUILD_ARGS} + BUILD_BYPRODUCTS + "${ZLIB_STATIC_LIB}" + CMAKE_ARGS + ${ZLIB_CMAKE_ARGS}) + + file(MAKE_DIRECTORY "${ZLIB_INCLUDE_DIR}") + endif() add_library(zlib STATIC IMPORTED) set_target_properties(zlib PROPERTIES IMPORTED_LOCATION "${ZLIB_STATIC_LIB}" - INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_PREFIX}/include") + INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIR}") add_dependencies(zlib zlib_ep) endmacro() From 8a01674e4c6109051876473816bebce57684226e Mon Sep 17 00:00:00 2001 From: quicksilver Date: Thu, 1 Aug 2019 23:10:18 +0800 Subject: [PATCH 2/3] add thrift cache Former-commit-id: e0ba93048762b0729d09dcbb4bfc52f8c2217c82 --- cpp/cmake/ThirdPartyPackages.cmake | 72 ++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/cpp/cmake/ThirdPartyPackages.cmake b/cpp/cmake/ThirdPartyPackages.cmake index ce3dff36b2..f850c49d46 100644 --- a/cpp/cmake/ThirdPartyPackages.cmake +++ b/cpp/cmake/ThirdPartyPackages.cmake @@ -1797,25 +1797,61 @@ macro(build_thrift) endif() set(THRIFT_DEPENDENCIES ${THRIFT_DEPENDENCIES} ${ZLIB_LIBRARY}) - externalproject_add(thrift_ep - URL - ${THRIFT_SOURCE_URL} - BUILD_BYPRODUCTS - "${THRIFT_STATIC_LIB}" - "${THRIFT_COMPILER}" - BUILD_COMMAND - ${MAKE} - ${MAKE_BUILD_ARGS} - CMAKE_ARGS - ${THRIFT_CMAKE_ARGS} - INSTALL_COMMAND - ${MAKE} install - DEPENDS - ${THRIFT_DEPENDENCIES} - ${EP_LOG_OPTIONS}) + if(USE_JFROG_CACHE STREQUAL "ON") + string(MD5 THRIFT_COMBINE_MD5 "${THRIFT_MD5}${ZLIB_MD5}") + set(THRIFT_CACHE_PACKAGE_NAME "thrift_${THRIFT_COMBINE_MD5}.tar.gz") + set(THRIFT_CACHE_URL "${JFROG_ARTFACTORY_CACHE_URL}/${THRIFT_CACHE_PACKAGE_NAME}") + set(THRIFT_CACHE_PACKAGE_PATH "${THIRDPARTY_PACKAGE_CACHE}/${THRIFT_CACHE_PACKAGE_NAME}") - # The include directory must exist before it is referenced by a target. - file(MAKE_DIRECTORY "${THRIFT_INCLUDE_DIR}") + file(DOWNLOAD ${THRIFT_CACHE_URL} ${THRIFT_CACHE_PACKAGE_PATH} STATUS status) + list(GET status 0 status_code) + message(STATUS "DOWNLOADING FROM ${THRIFT_CACHE_URL} TO ${THRIFT_CACHE_PACKAGE_PATH}. STATUS = ${status_code}") + if (NOT status_code EQUAL 0) + externalproject_add(thrift_ep + URL + ${THRIFT_SOURCE_URL} + BUILD_BYPRODUCTS + "${THRIFT_STATIC_LIB}" + "${THRIFT_COMPILER}" + BUILD_COMMAND + ${MAKE} + ${MAKE_BUILD_ARGS} + CMAKE_ARGS + ${THRIFT_CMAKE_ARGS} + INSTALL_COMMAND + ${MAKE} install + DEPENDS + ${THRIFT_DEPENDENCIES} + ${EP_LOG_OPTIONS}) + + ExternalProject_Create_Cache(thrift_ep ${THRIFT_CACHE_PACKAGE_PATH} "${CMAKE_CURRENT_BINARY_DIR}/thrift_ep-prefix" ${JFROG_USER_NAME} ${JFROG_PASSWORD} ${THRIFT_CACHE_URL}) + + # The include directory must exist before it is referenced by a target. + file(MAKE_DIRECTORY "${THRIFT_INCLUDE_DIR}") + else() + ExternalProject_Use_Cache(thrift_ep ${THRIFT_CACHE_PACKAGE_PATH} ${CMAKE_CURRENT_BINARY_DIR}) + endif() + else() + externalproject_add(thrift_ep + URL + ${THRIFT_SOURCE_URL} + BUILD_BYPRODUCTS + "${THRIFT_STATIC_LIB}" + "${THRIFT_COMPILER}" + BUILD_COMMAND + ${MAKE} + ${MAKE_BUILD_ARGS} + CMAKE_ARGS + ${THRIFT_CMAKE_ARGS} + INSTALL_COMMAND + ${MAKE} install + DEPENDS + ${THRIFT_DEPENDENCIES} + ${EP_LOG_OPTIONS}) + + # The include directory must exist before it is referenced by a target. + file(MAKE_DIRECTORY "${THRIFT_INCLUDE_DIR}") + endif() add_library(thrift STATIC IMPORTED) set_target_properties(thrift From 19fd38f467490452489fe77cb5bee3e818911243 Mon Sep 17 00:00:00 2001 From: quicksilver Date: Thu, 1 Aug 2019 23:18:43 +0800 Subject: [PATCH 3/3] add yamlcpp cache Former-commit-id: 7f42eaac59377be0b36b00bbcfead3d4c7810ebb --- cpp/cmake/ThirdPartyPackages.cmake | 56 +++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/cpp/cmake/ThirdPartyPackages.cmake b/cpp/cmake/ThirdPartyPackages.cmake index f850c49d46..99ca545557 100644 --- a/cpp/cmake/ThirdPartyPackages.cmake +++ b/cpp/cmake/ThirdPartyPackages.cmake @@ -1877,6 +1877,7 @@ macro(build_yamlcpp) message(STATUS "Building yaml-cpp-${YAMLCPP_VERSION} from source") set(YAMLCPP_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/yaml-cpp_ep-prefix/src/yaml-cpp_ep") set(YAMLCPP_STATIC_LIB "${YAMLCPP_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}yaml-cpp${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(YAMLCPP_INCLUDE_DIR "${YAMLCPP_PREFIX}/include") set(YAMLCPP_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${YAMLCPP_PREFIX}" @@ -1884,24 +1885,53 @@ macro(build_yamlcpp) -DYAML_CPP_BUILD_TESTS=OFF -DYAML_CPP_BUILD_TOOLS=OFF) - externalproject_add(yaml-cpp_ep - URL - ${YAMLCPP_SOURCE_URL} - ${EP_LOG_OPTIONS} - BUILD_COMMAND - ${MAKE} - ${MAKE_BUILD_ARGS} - BUILD_BYPRODUCTS - "${YAMLCPP_STATIC_LIB}" - CMAKE_ARGS - ${YAMLCPP_CMAKE_ARGS}) + if(USE_JFROG_CACHE STREQUAL "ON") + set(YAMLCPP_CACHE_PACKAGE_NAME "yaml-cpp_${YAMLCPP_MD5}.tar.gz") + set(YAMLCPP_CACHE_URL "${JFROG_ARTFACTORY_CACHE_URL}/${YAMLCPP_CACHE_PACKAGE_NAME}") + set(YAMLCPP_CACHE_PACKAGE_PATH "${THIRDPARTY_PACKAGE_CACHE}/${YAMLCPP_CACHE_PACKAGE_NAME}") - file(MAKE_DIRECTORY "${YAMLCPP_PREFIX}/include") + file(DOWNLOAD ${YAMLCPP_CACHE_URL} ${YAMLCPP_CACHE_PACKAGE_PATH} STATUS status) + list(GET status 0 status_code) + message(STATUS "DOWNLOADING FROM ${YAMLCPP_CACHE_URL} TO ${YAMLCPP_CACHE_PACKAGE_PATH}. STATUS = ${status_code}") + if (NOT status_code EQUAL 0) + externalproject_add(yaml-cpp_ep + URL + ${YAMLCPP_SOURCE_URL} + ${EP_LOG_OPTIONS} + BUILD_COMMAND + ${MAKE} + ${MAKE_BUILD_ARGS} + BUILD_BYPRODUCTS + "${YAMLCPP_STATIC_LIB}" + CMAKE_ARGS + ${YAMLCPP_CMAKE_ARGS}) + + ExternalProject_Create_Cache(yaml-cpp_ep ${YAMLCPP_CACHE_PACKAGE_PATH} "${CMAKE_CURRENT_BINARY_DIR}/yaml-cpp_ep-prefix" ${JFROG_USER_NAME} ${JFROG_PASSWORD} ${YAMLCPP_CACHE_URL}) + + file(MAKE_DIRECTORY "${YAMLCPP_INCLUDE_DIR}") + else() + ExternalProject_Use_Cache(yaml-cpp_ep ${YAMLCPP_CACHE_PACKAGE_PATH} ${CMAKE_CURRENT_BINARY_DIR}) + endif() + else() + externalproject_add(yaml-cpp_ep + URL + ${YAMLCPP_SOURCE_URL} + ${EP_LOG_OPTIONS} + BUILD_COMMAND + ${MAKE} + ${MAKE_BUILD_ARGS} + BUILD_BYPRODUCTS + "${YAMLCPP_STATIC_LIB}" + CMAKE_ARGS + ${YAMLCPP_CMAKE_ARGS}) + + file(MAKE_DIRECTORY "${YAMLCPP_INCLUDE_DIR}") + endif() add_library(yaml-cpp STATIC IMPORTED) set_target_properties(yaml-cpp PROPERTIES IMPORTED_LOCATION "${YAMLCPP_STATIC_LIB}" - INTERFACE_INCLUDE_DIRECTORIES "${YAMLCPP_PREFIX}/include") + INTERFACE_INCLUDE_DIRECTORIES "${YAMLCPP_INCLUDE_DIR}") add_dependencies(yaml-cpp yaml-cpp_ep) endmacro()