Skip to content

Commit c5764bd

Browse files
committed
modify ci and finish
1 parent fd78a4a commit c5764bd

File tree

4 files changed

+142
-59
lines changed

4 files changed

+142
-59
lines changed

.github/workflows/cpp-linter.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ jobs:
3434
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
3535
with:
3636
fetch-depth: 0
37+
- name: Install dependencies
38+
shell: bash
39+
run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev
3740
- name: Run build
3841
run: |
3942
mkdir build && cd build

.github/workflows/test.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ jobs:
4848
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
4949
with:
5050
fetch-depth: 0
51+
- name: Install dependencies
52+
shell: bash
53+
run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev
5154
- name: Build Iceberg
5255
shell: bash
5356
run: ci/scripts/build_iceberg.sh $(pwd)
@@ -85,7 +88,7 @@ jobs:
8588
- name: Install dependencies
8689
shell: cmd
8790
run: |
88-
vcpkg install zlib:x64-windows nlohmann-json:x64-windows nanoarrow:x64-windows roaring:x64-windows
91+
vcpkg install zlib:x64-windows nlohmann-json:x64-windows nanoarrow:x64-windows roaring:x64-windows cpr:x64-windows
8992
- name: Build Iceberg
9093
shell: cmd
9194
run: |

cmake_modules/IcebergThirdpartyToolchain.cmake

Lines changed: 129 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -433,62 +433,77 @@ endfunction()
433433
# ----------------------------------------------------------------------
434434
# CURL (for cpr)
435435

436-
function(resolve_curl_dependency)
437-
prepare_fetchcontent()
438-
439-
set(BUILD_CURL_EXE OFF)
440-
set(BUILD_SHARED_LIBS OFF)
441-
set(BUILD_TESTING OFF)
442-
set(CURL_CA_BUNDLE "auto")
443-
set(CURL_ENABLE_EXPORT_TARGET OFF)
444-
set(CURL_STATICLIB ON)
445-
set(HTTP_ONLY ON)
446-
set(USE_LIBIDN2 OFF)
447-
448-
fetchcontent_declare(curl
449-
${FC_DECLARE_COMMON_OPTIONS}
450-
URL https://curl.se/download/curl-8.11.0.tar.gz FIND_PACKAGE_ARGS
451-
NAMES curl)
452-
453-
fetchcontent_makeavailable(CURL)
454-
455-
if(curl_SOURCE_DIR)
456-
set(CURL_VERSION_STRING
457-
"8.11.0"
458-
PARENT_SCOPE)
459-
if(NOT TARGET CURL::libcurl)
460-
add_library(CURL::libcurl INTERFACE IMPORTED)
461-
target_link_libraries(CURL::libcurl INTERFACE libcurl_static)
462-
target_include_directories(CURL::libcurl INTERFACE ${curl_BINARY_DIR}/include
463-
${curl_SOURCE_DIR}/include)
464-
endif()
465-
466-
set(CURL_VENDORED TRUE)
467-
set_target_properties(libcurl_static PROPERTIES OUTPUT_NAME "iceberg_vendored_curl"
468-
POSITION_INDEPENDENT_CODE ON)
469-
add_library(Iceberg::libcurl_static ALIAS libcurl_static)
470-
install(TARGETS libcurl_static
471-
EXPORT iceberg_targets
472-
RUNTIME DESTINATION "${ICEBERG_INSTALL_BINDIR}"
473-
ARCHIVE DESTINATION "${ICEBERG_INSTALL_LIBDIR}"
474-
LIBRARY DESTINATION "${ICEBERG_INSTALL_LIBDIR}")
475-
message(STATUS "Use vendored CURL")
436+
# function(resolve_curl_dependency)
437+
# prepare_fetchcontent()
438+
439+
# find_package(CURL QUIET COMPONENTS HTTPS SSL)
440+
441+
# if(CURL_FOUND)
442+
# if(CURL_VERSION VERSION_LESS "7.61.0")
443+
# message(STATUS "System CURL version ${CURL_VERSION} too old, will download")
444+
# set(CURL_FOUND FALSE)
445+
# else()
446+
# message(STATUS "Found my system CURL ${CURL_VERSION}")
447+
# list(APPEND ICEBERG_SYSTEM_DEPENDENCIES CURL)
448+
# set(CURL_VENDORED FALSE)
449+
# endif()
450+
# endif()
451+
452+
# if(NOT CURL_FOUND)
453+
# set(BUILD_CURL_EXE OFF)
454+
# set(BUILD_SHARED_LIBS OFF)
455+
# set(BUILD_TESTING OFF)
456+
# set(CURL_CA_BUNDLE "auto")
457+
# set(CURL_ENABLE_EXPORT_TARGET OFF)
458+
# set(CURL_STATICLIB ON)
459+
# set(HTTP_ONLY ON)
460+
# set(USE_LIBIDN2 OFF)
461+
462+
# FetchContent_Declare(curl
463+
# ${FC_DECLARE_COMMON_OPTIONS}
464+
# URL https://curl.se/download/curl-8.11.0.tar.gz
465+
# )
466+
# set(CURL_VENDORED TRUE)
467+
# FetchContent_MakeAvailable(curl)
468+
# endif()
469+
470+
# if(curl_SOURCE_DIR)
471+
# set(CURL_VERSION_STRING
472+
# "8.11.0"
473+
# PARENT_SCOPE)
474+
# if(NOT TARGET CURL::libcurl)
475+
# add_library(CURL::libcurl INTERFACE IMPORTED)
476+
# target_link_libraries(CURL::libcurl INTERFACE libcurl_static)
477+
# target_include_directories(CURL::libcurl INTERFACE ${curl_BINARY_DIR}/include
478+
# ${curl_SOURCE_DIR}/include)
479+
# endif()
476480

477-
# curl depends on the system installed OpenSSL
478-
list(APPEND ICEBERG_SYSTEM_DEPENDENCIES OpenSSL)
479-
else()
480-
set(CURL_VENDORED FALSE)
481-
list(APPEND ICEBERG_SYSTEM_DEPENDENCIES CURL)
482-
message(STATUS "Use system CURL")
483-
endif()
484-
485-
set(ICEBERG_SYSTEM_DEPENDENCIES
486-
${ICEBERG_SYSTEM_DEPENDENCIES}
487-
PARENT_SCOPE)
488-
set(CURL_VENDORED
489-
${CURL_VENDORED}
490-
PARENT_SCOPE)
491-
endfunction()
481+
#
482+
# set_target_properties(libcurl_static PROPERTIES OUTPUT_NAME "iceberg_vendored_curl"
483+
# POSITION_INDEPENDENT_CODE ON)
484+
# add_library(Iceberg::libcurl_static ALIAS libcurl_static)
485+
# install(TARGETS libcurl_static
486+
# EXPORT iceberg_targets
487+
# RUNTIME DESTINATION "${ICEBERG_INSTALL_BINDIR}"
488+
# ARCHIVE DESTINATION "${ICEBERG_INSTALL_LIBDIR}"
489+
# LIBRARY DESTINATION "${ICEBERG_INSTALL_LIBDIR}")
490+
# message(STATUS "Use vendored CURL")
491+
492+
# # curl depends on the system installed OpenSSL
493+
# list(APPEND ICEBERG_SYSTEM_DEPENDENCIES OpenSSL)
494+
# else()
495+
# set(CURL_VENDORED FALSE)
496+
# list(APPEND ICEBERG_SYSTEM_DEPENDENCIES CURL)
497+
# message(STATUS "Use system CURL")
498+
# endif()
499+
500+
# set(ICEBERG_SYSTEM_DEPENDENCIES
501+
# ${ICEBERG_SYSTEM_DEPENDENCIES}
502+
# PARENT_SCOPE)
503+
# set(CURL_VENDORED
504+
# ${CURL_VENDORED}
505+
# PARENT_SCOPE)
506+
# endfunction()
492507

493508
# ----------------------------------------------------------------------
494509
# cpr (C++ Requests)
@@ -497,10 +512,9 @@ function(resolve_cpr_dependency)
497512
prepare_fetchcontent()
498513

499514
set(CPR_BUILD_TESTS OFF)
500-
set(CPR_BUILD_TESTS_SSL OFF)
515+
set(CPR_ENABLE_CURL_HTTP_ONLY ON)
501516
set(CPR_ENABLE_SSL ON)
502517
set(CPR_USE_SYSTEM_CURL ON)
503-
set(CPR_CURL_NOSIGNAL ON)
504518

505519
fetchcontent_declare(cpr
506520
${FC_DECLARE_COMMON_OPTIONS}
@@ -532,6 +546,7 @@ function(resolve_cpr_dependency)
532546
else()
533547
set(CPR_VENDORED FALSE)
534548
list(APPEND ICEBERG_SYSTEM_DEPENDENCIES cpr)
549+
list(APPEND ICEBERG_SYSTEM_DEPENDENCIES OpenSSL)
535550
endif()
536551

537552
set(ICEBERG_SYSTEM_DEPENDENCIES
@@ -542,6 +557,63 @@ function(resolve_cpr_dependency)
542557
PARENT_SCOPE)
543558
endfunction()
544559

560+
# function(resolve_cpr_dependency)
561+
# prepare_fetchcontent()
562+
563+
# set(CPR_BUILD_TESTS OFF)
564+
# set(CPR_BUILD_TESTS_SSL OFF)
565+
# set(CPR_ENABLE_SSL ON)
566+
# set(CPR_USE_SYSTEM_CURL ON)
567+
# set(CPR_CURL_NOSIGNAL ON)
568+
569+
# if(CURL_VENDORED)
570+
# message(STATUS "Use vendored CURL in cpr")
571+
# set(CPR_USE_SYSTEM_CURL OFF)
572+
# else()
573+
# message(STATUS "Use system CURL in cpr")
574+
# set(CPR_USE_SYSTEM_CURL ON)
575+
# endif()
576+
577+
# fetchcontent_declare(cpr
578+
# ${FC_DECLARE_COMMON_OPTIONS}
579+
# URL https://github.com/libcpr/cpr/archive/refs/tags/1.12.0.tar.gz
580+
# FIND_PACKAGE_ARGS
581+
# NAMES
582+
# cpr
583+
# CONFIG)
584+
585+
# fetchcontent_makeavailable(cpr)
586+
587+
# if(cpr_SOURCE_DIR)
588+
# if(NOT TARGET cpr::cpr)
589+
# add_library(cpr::cpr INTERFACE IMPORTED)
590+
# target_link_libraries(cpr::cpr INTERFACE cpr)
591+
# target_include_directories(cpr::cpr INTERFACE ${cpr_BINARY_DIR}
592+
# ${cpr_SOURCE_DIR}/include)
593+
# endif()
594+
595+
# set(CPR_VENDORED TRUE)
596+
# set_target_properties(cpr PROPERTIES OUTPUT_NAME "iceberg_vendored_cpr"
597+
# POSITION_INDEPENDENT_CODE ON)
598+
# add_library(Iceberg::cpr ALIAS cpr)
599+
# install(TARGETS cpr
600+
# EXPORT iceberg_targets
601+
# RUNTIME DESTINATION "${ICEBERG_INSTALL_BINDIR}"
602+
# ARCHIVE DESTINATION "${ICEBERG_INSTALL_LIBDIR}"
603+
# LIBRARY DESTINATION "${ICEBERG_INSTALL_LIBDIR}")
604+
# else()
605+
# set(CPR_VENDORED FALSE)
606+
# list(APPEND ICEBERG_SYSTEM_DEPENDENCIES cpr)
607+
# endif()
608+
609+
# set(ICEBERG_SYSTEM_DEPENDENCIES
610+
# ${ICEBERG_SYSTEM_DEPENDENCIES}
611+
# PARENT_SCOPE)
612+
# set(CPR_VENDORED
613+
# ${CPR_VENDORED}
614+
# PARENT_SCOPE)
615+
# endfunction()
616+
545617
# ----------------------------------------------------------------------
546618
# Zstd
547619

@@ -569,6 +641,5 @@ if(ICEBERG_BUILD_BUNDLE)
569641
endif()
570642

571643
if(ICEBERG_BUILD_REST)
572-
resolve_curl_dependency()
573644
resolve_cpr_dependency()
574645
endif()

src/iceberg/IcebergConfig.cmake.in

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
# Iceberg::iceberg_static
2727
# Iceberg::iceberg_bundle_shared
2828
# Iceberg::iceberg_bundle_static
29+
# Iceberg::iceberg_rest_shared
30+
# Iceberg::iceberg_rest_static
2931

3032
@PACKAGE_INIT@
3133

@@ -79,6 +81,10 @@ if(NOT TARGET roaring::roaring-headers-cpp)
7981
add_library(roaring::roaring-headers-cpp INTERFACE IMPORTED)
8082
endif()
8183

84+
if(NOT TARGET CURL::libcurl)
85+
add_library(CURL::libcurl INTERFACE IMPORTED)
86+
endif()
87+
8288
include("${CMAKE_CURRENT_LIST_DIR}/IcebergTargets.cmake")
8389

8490
if(TARGET Iceberg::arrow_static)

0 commit comments

Comments
 (0)