kou commented on code in PR #33808:
URL: https://github.com/apache/arrow/pull/33808#discussion_r1092694995
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -4714,35 +4798,129 @@ macro(build_awssdk)
DEPENDS aws_c_common_ep)
add_dependencies(AWS::aws-checksums aws_checksums_ep)
+ # When arrow is dynamically linked, arrow-s3fs-test and libarrow.so each has
its own copy of AWS SDK.
+ # Need S2N to statically link OpenSSL::Crypto and internalize it to avoid
conflicts.
+ set(S2N_CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS})
+ if(ARROW_BUILD_TESTS AND ARROW_TEST_LINKAGE STREQUAL "shared")
+ list(APPEND S2N_CMAKE_ARGS -DS2N_INTERN_LIBCRYPTO=ON)
+ endif()
+ externalproject_add(s2n_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${S2N_SOURCE_URL}
+ URL_HASH "SHA256=${ARROW_S2N_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${S2N_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${S2N_STATIC_LIBRARY})
+ add_dependencies(AWS::s2n s2n_ep)
+
+ externalproject_add(aws_c_cal_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${AWS_C_CAL_SOURCE_URL}
+ URL_HASH
"SHA256=${ARROW_AWS_C_CAL_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${AWS_C_CAL_STATIC_LIBRARY}
+ DEPENDS aws_c_common_ep)
+ add_dependencies(AWS::aws-c-cal aws_c_cal_ep)
+
+ externalproject_add(aws_c_io_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${AWS_C_IO_SOURCE_URL}
+ URL_HASH "SHA256=${ARROW_AWS_C_IO_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${AWS_C_IO_STATIC_LIBRARY}
+ DEPENDS aws_c_common_ep s2n_ep aws_c_cal_ep)
+ add_dependencies(AWS::aws-c-io aws_c_io_ep)
+
externalproject_add(aws_c_event_stream_ep
${EP_COMMON_OPTIONS}
URL ${AWS_C_EVENT_STREAM_SOURCE_URL}
URL_HASH
"SHA256=${ARROW_AWS_C_EVENT_STREAM_BUILD_SHA256_CHECKSUM}"
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
BUILD_BYPRODUCTS ${AWS_C_EVENT_STREAM_STATIC_LIBRARY}
- DEPENDS aws_checksums_ep)
+ DEPENDS aws_checksums_ep aws_c_common_ep aws_c_io_ep)
add_dependencies(AWS::aws-c-event-stream aws_c_event_stream_ep)
- set(AWSSDK_PATCH_COMMAND)
- if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION
VERSION_GREATER
- "10")
- # Workaround for https://github.com/aws/aws-sdk-cpp/issues/1750
- set(AWSSDK_PATCH_COMMAND "sed" "-i.bak" "-e" "s/\"-Werror\"//g"
- "<SOURCE_DIR>/cmake/compiler_settings.cmake")
- endif()
+ externalproject_add(aws_c_sdkutils_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${AWS_C_SDKUTILS_SOURCE_URL}
+ URL_HASH
"SHA256=${ARROW_AWS_C_SDKUTILS_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${AWS_C_SDKUTILS_STATIC_LIBRARY}
+ DEPENDS aws_c_common_ep)
+ add_dependencies(AWS::aws-c-sdkutils aws_c_sdkutils_ep)
+
+ externalproject_add(aws_c_compression_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${AWS_C_COMPRESSION_SOURCE_URL}
+ URL_HASH
"SHA256=${ARROW_AWS_C_COMPRESSION_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${AWS_C_COMPRESSION_STATIC_LIBRARY}
+ DEPENDS aws_c_common_ep)
+ add_dependencies(AWS::aws-c-compression aws_c_compression_ep)
+
+ externalproject_add(aws_c_http_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${AWS_C_HTTP_SOURCE_URL}
+ URL_HASH
"SHA256=${ARROW_AWS_C_HTTP_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${AWS_C_HTTP_STATIC_LIBRARY}
+ DEPENDS aws_c_io_ep aws_c_compression_ep)
+ add_dependencies(AWS::aws-c-http aws_c_http_ep)
+
+ externalproject_add(aws_c_mqtt_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${AWS_C_MQTT_SOURCE_URL}
+ URL_HASH
"SHA256=${ARROW_AWS_C_MQTT_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${AWS_C_MQTT_STATIC_LIBRARY}
+ DEPENDS aws_c_io_ep aws_c_http_ep)
Review Comment:
```suggestion
DEPENDS aws_c_http_ep)
```
##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -4714,35 +4798,129 @@ macro(build_awssdk)
DEPENDS aws_c_common_ep)
add_dependencies(AWS::aws-checksums aws_checksums_ep)
+ # When arrow is dynamically linked, arrow-s3fs-test and libarrow.so each has
its own copy of AWS SDK.
+ # Need S2N to statically link OpenSSL::Crypto and internalize it to avoid
conflicts.
+ set(S2N_CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS})
+ if(ARROW_BUILD_TESTS AND ARROW_TEST_LINKAGE STREQUAL "shared")
+ list(APPEND S2N_CMAKE_ARGS -DS2N_INTERN_LIBCRYPTO=ON)
+ endif()
+ externalproject_add(s2n_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${S2N_SOURCE_URL}
+ URL_HASH "SHA256=${ARROW_S2N_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${S2N_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${S2N_STATIC_LIBRARY})
+ add_dependencies(AWS::s2n s2n_ep)
+
+ externalproject_add(aws_c_cal_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${AWS_C_CAL_SOURCE_URL}
+ URL_HASH
"SHA256=${ARROW_AWS_C_CAL_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${AWS_C_CAL_STATIC_LIBRARY}
+ DEPENDS aws_c_common_ep)
+ add_dependencies(AWS::aws-c-cal aws_c_cal_ep)
+
+ externalproject_add(aws_c_io_ep
+ ${EP_COMMON_OPTIONS}
+ URL ${AWS_C_IO_SOURCE_URL}
+ URL_HASH "SHA256=${ARROW_AWS_C_IO_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
+ BUILD_BYPRODUCTS ${AWS_C_IO_STATIC_LIBRARY}
+ DEPENDS aws_c_common_ep s2n_ep aws_c_cal_ep)
+ add_dependencies(AWS::aws-c-io aws_c_io_ep)
+
externalproject_add(aws_c_event_stream_ep
${EP_COMMON_OPTIONS}
URL ${AWS_C_EVENT_STREAM_SOURCE_URL}
URL_HASH
"SHA256=${ARROW_AWS_C_EVENT_STREAM_BUILD_SHA256_CHECKSUM}"
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}
BUILD_BYPRODUCTS ${AWS_C_EVENT_STREAM_STATIC_LIBRARY}
- DEPENDS aws_checksums_ep)
+ DEPENDS aws_checksums_ep aws_c_common_ep aws_c_io_ep)
Review Comment:
Can we remove `aws_c_common_ep` here because it seems that `aws_c_io_ep`
depends on `awx_c_common_ep`:
```suggestion
DEPENDS aws_checksums_ep aws_c_io_ep)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]