Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GH-29847: [C++] Build with Azure SDK for C++ #36835

Merged
merged 93 commits into from
Aug 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
87452b1
Shefali pr rebased (#6)
Tom-Newton Jun 20, 2023
39cf5e3
Build fixes
Tom-Newton Jun 20, 2023
ad39f9d
Azure SDK after managed identity fix
Tom-Newton Jul 10, 2023
5f80cf5
Start a minimal test that instantiates the container client
Tom-Newton Jul 22, 2023
141561e
Try setting openssl to link against more explicitly
Tom-Newton Jul 22, 2023
97eb208
Build Azure SDK more like GCP SDK
Tom-Newton Jun 17, 2023
33b0a41
Debugging
Tom-Newton Jun 17, 2023
1b1dfef
Support openssl 1
Tom-Newton Jun 17, 2023
25b0437
Tidy link libraries
Tom-Newton Jun 19, 2023
f316192
Hack to avoid uamqp build failure
Tom-Newton Jul 22, 2023
db117bc
I think its working
Tom-Newton Jul 22, 2023
c6ee215
Revert unnecessary changes
Tom-Newton Jul 22, 2023
1d736a8
Somewhat functional azurite test
Tom-Newton Jul 22, 2023
e1fb471
Avoid checking in vcpkg-custom-ports
Tom-Newton Jul 22, 2023
322f48a
Working test that writes then reads back from azurite
Tom-Newton Jul 22, 2023
8fad9c0
Add a test that initialises different credentials
Tom-Newton Jul 23, 2023
4704d05
Fix finding the system xml2
Tom-Newton Jul 23, 2023
ef1b638
Use bundled Azure SDK
Tom-Newton Jul 24, 2023
9244da3
manylinux build fixes
Tom-Newton Jul 23, 2023
23c06a4
Remove Azure SDK bundled on alpine, fedora, debian
Tom-Newton Aug 8, 2023
658dc78
Fix merge
Tom-Newton Aug 9, 2023
8e0df48
Install zip and unzip so vcpkg can be bootstrapped
Tom-Newton Aug 9, 2023
259b771
Fix detecting openssl major version
Tom-Newton Aug 9, 2023
14d7530
Fix rebase
Tom-Newton Aug 9, 2023
518cea4
Tidy
Tom-Newton Aug 9, 2023
37dd76a
Small fix and improve naming consistency
Tom-Newton Aug 10, 2023
2fb3572
vcpkg libxml2
Tom-Newton Aug 10, 2023
37e7239
Add libxml2 dep to the correct vcpkg.json
Tom-Newton Aug 10, 2023
508eb4f
Remove unneeded bundled libxml2 build
Tom-Newton Aug 10, 2023
41359f8
Add Azure libraries to correct vcpkg
Tom-Newton Aug 11, 2023
e44a868
Small consistency improvement
Tom-Newton Aug 11, 2023
3b199ae
improve consistency
Tom-Newton Aug 11, 2023
4ec48be
Add missing find_package since removing the capability for bundled li…
Tom-Newton Aug 11, 2023
7aeaabc
Remove explicit off option since its off by default
Tom-Newton Aug 11, 2023
cb92ddf
Remove vcpkg libxml which is now unnecessary
Tom-Newton Aug 12, 2023
5e2257f
Tidy + enable azure vcpkg on manylinux build
Tom-Newton Aug 12, 2023
814fa06
Initialise blob client in azurefs.cc to ensure build is working corre…
Tom-Newton Aug 12, 2023
25dc0f2
Use bundled Azure SDK in manylinux build
Tom-Newton Aug 12, 2023
31eea24
Fix libxml2 install in manylinux build
Tom-Newton Aug 12, 2023
8fad644
Fix azure ep log options after rebase
Tom-Newton Aug 12, 2023
fd44cf8
REvert unnecessary whitespace change
Tom-Newton Aug 12, 2023
304c951
Update comments
Tom-Newton Aug 13, 2023
05d6d6e
Add comment about confusing version names
Tom-Newton Aug 14, 2023
93817c7
Alphabetical ordering and turn off azure in python wheel builds
Tom-Newton Aug 14, 2023
80f4cd7
Update azurite account name
Tom-Newton Aug 14, 2023
530c6b2
Update cpp/src/arrow/filesystem/azurefs_test.cc
Tom-Newton Aug 14, 2023
2dc551d
Move libxml vcpkg dependency to an azure feature
Tom-Newton Aug 14, 2023
f1d5c36
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 14, 2023
47fb13a
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 14, 2023
18f3115
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 14, 2023
6d233b8
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 14, 2023
5d7bd1c
Rename ARROW_AZURESDK_URL -> ARROW_AZURE_SDK_URL
Tom-Newton Aug 14, 2023
bd10541
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 14, 2023
d2ce4bb
Update openssl resolution
Tom-Newton Aug 14, 2023
5dbcad7
Re-enable Azure on manylinux build
Tom-Newton Aug 14, 2023
8bae613
Remove unity build option
Tom-Newton Aug 14, 2023
fe2dcde
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 14, 2023
06283cb
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 14, 2023
e73c271
Revert azurite storage account name
Tom-Newton Aug 14, 2023
2140ede
Working link to system openssl
Tom-Newton Aug 14, 2023
b90ad90
Declare dependencies on the exact requirements for each component of …
Tom-Newton Aug 14, 2023
0e4b8e7
Rename AZURESDK -> AZURE_SDK and azuresdk -> azure-sdk
Tom-Newton Aug 14, 2023
621af79
Typo
Tom-Newton Aug 14, 2023
3d005d1
Create FindAzure.cmake
Tom-Newton Aug 14, 2023
c0517b2
Somewhat working FindAzure.cmake
Tom-Newton Aug 15, 2023
d60ea20
Update bundled configurations
Tom-Newton Aug 15, 2023
cfc3c6f
Functional FindAzure.cmake
Tom-Newton Aug 15, 2023
971e017
snake case + update comment
Tom-Newton Aug 16, 2023
f16c7e1
Kou's suggestions to minimise dependencies
Tom-Newton Aug 16, 2023
e012756
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 16, 2023
2617c20
Update cpp/cmake_modules/ThirdpartyToolchain.cmake
Tom-Newton Aug 16, 2023
13bdcf7
CMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON
Tom-Newton Aug 20, 2023
dca8a6f
Update cpp/src/arrow/filesystem/azurefs_test.cc
Tom-Newton Aug 20, 2023
7a9c67a
Disable azure on manylinux build
Tom-Newton Aug 21, 2023
a7a7077
Disable azure on Ubuntu 20 build
Tom-Newton Aug 21, 2023
1212c19
Kou's FetchContent patch
Tom-Newton Aug 21, 2023
f357561
Revert now unnecessary zip and unzip apt installs
Tom-Newton Aug 22, 2023
6d3ba28
Remove now unnecessary vcpkg overlays
Tom-Newton Aug 22, 2023
2308559
Fix styles
kou Aug 24, 2023
a6fac8f
Revert a needless change
kou Aug 24, 2023
88f792b
Improve naming
kou Aug 24, 2023
2e258d8
Use the official name
kou Aug 24, 2023
ff657c1
Fix style
kou Aug 24, 2023
704fde7
Disable vcpkg integration
kou Aug 24, 2023
5c9854a
Fix style
kou Aug 24, 2023
92ce1f9
Update cpp/src/arrow/filesystem/azurefs.cc
Tom-Newton Aug 24, 2023
2b576fd
Use `fetchcontent_makeavailable`
Tom-Newton Aug 24, 2023
a205b87
Patch for disabling Werror in Azure build
Tom-Newton Aug 26, 2023
19e6a56
Add comment
Tom-Newton Aug 26, 2023
f5ebc08
Use newer Azure SDK with support for older curl
Tom-Newton Aug 26, 2023
1ef88c8
Re-enable Azure build on ubuntu 20
Tom-Newton Aug 26, 2023
6398a65
Require azure-core >= 1.10.2 in FindAzure.cmake
Tom-Newton Aug 26, 2023
e3fb84c
Fix a lint failure
kou Aug 26, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions ci/docker/ubuntu-20.04-cpp.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ RUN apt-get update -y -q && \
libssl-dev \
libthrift-dev \
libutf8proc-dev \
libxml2-dev \
libzstd-dev \
make \
ninja-build \
Expand Down Expand Up @@ -172,6 +173,7 @@ ENV absl_SOURCE=BUNDLED \
ARROW_WITH_ZSTD=ON \
ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-${llvm}/bin/llvm-symbolizer \
AWSSDK_SOURCE=BUNDLED \
Azure_SOURCE=BUNDLED \
google_cloud_cpp_storage_SOURCE=BUNDLED \
gRPC_SOURCE=BUNDLED \
GTest_SOURCE=BUNDLED \
Expand Down
2 changes: 2 additions & 0 deletions ci/docker/ubuntu-22.04-cpp.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ RUN apt-get update -y -q && \
libssl-dev \
libthrift-dev \
libutf8proc-dev \
libxml2-dev \
libzstd-dev \
make \
ninja-build \
Expand Down Expand Up @@ -196,6 +197,7 @@ ENV absl_SOURCE=BUNDLED \
ARROW_WITH_ZSTD=ON \
ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-${llvm}/bin/llvm-symbolizer \
AWSSDK_SOURCE=BUNDLED \
Azure_SOURCE=BUNDLED \
google_cloud_cpp_storage_SOURCE=BUNDLED \
GTest_SOURCE=BUNDLED \
ORC_SOURCE=BUNDLED \
Expand Down
1 change: 1 addition & 0 deletions ci/scripts/cpp_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ cmake \
-DARROW_WITH_ZLIB=${ARROW_WITH_ZLIB:-OFF} \
-DARROW_WITH_ZSTD=${ARROW_WITH_ZSTD:-OFF} \
-DAWSSDK_SOURCE=${AWSSDK_SOURCE:-} \
-DAzure_SOURCE=${Azure_SOURCE:-} \
-Dbenchmark_SOURCE=${benchmark_SOURCE:-} \
-DBOOST_SOURCE=${BOOST_SOURCE:-} \
-DBrotli_SOURCE=${Brotli_SOURCE:-} \
Expand Down
5 changes: 5 additions & 0 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -795,6 +795,11 @@ if(ARROW_WITH_OPENTELEMETRY)
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS CURL::libcurl)
endif()

if(ARROW_WITH_AZURE_SDK)
list(APPEND ARROW_SHARED_LINK_LIBS ${AZURE_SDK_LINK_LIBRARIES})
list(APPEND ARROW_STATIC_LINK_LIBS ${AZURE_SDK_LINK_LIBRARIES})
endif()

if(ARROW_WITH_UTF8PROC)
list(APPEND ARROW_SHARED_LINK_LIBS utf8proc::utf8proc)
list(APPEND ARROW_STATIC_LINK_LIBS utf8proc::utf8proc)
Expand Down
45 changes: 45 additions & 0 deletions cpp/cmake_modules/FindAzure.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# 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.

if(Azure_FOUND)
return()
endif()

set(find_package_args)
list(APPEND find_package_args CONFIG)
if(Azure_FIND_QUIETLY)
list(APPEND find_package_args QUIET)
endif()

if(Azure_FIND_REQUIRED)
list(APPEND find_package_args REQUIRED)
endif()

find_package(azure-core-cpp ${find_package_args})
find_package(azure-identity-cpp ${find_package_args})
find_package(azure-storage-blobs-cpp ${find_package_args})
find_package(azure-storage-common-cpp ${find_package_args})
find_package(azure-storage-files-datalake-cpp ${find_package_args})

find_package_handle_standard_args(
Azure
REQUIRED_VARS azure-core-cpp_FOUND
azure-identity-cpp_FOUND
azure-storage-blobs-cpp_FOUND
azure-storage-common-cpp_FOUND
azure-storage-files-datalake-cpp_FOUND
VERSION_VAR azure-core-cpp_VERSION)
68 changes: 68 additions & 0 deletions cpp/cmake_modules/ThirdpartyToolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ set(ARROW_RE2_LINKAGE
set(ARROW_THIRDPARTY_DEPENDENCIES
absl
AWSSDK
Azure
benchmark
Boost
Brotli
Expand Down Expand Up @@ -159,6 +160,8 @@ macro(build_dependency DEPENDENCY_NAME)
build_absl()
elseif("${DEPENDENCY_NAME}" STREQUAL "AWSSDK")
build_awssdk()
elseif("${DEPENDENCY_NAME}" STREQUAL "Azure")
build_azure_sdk()
elseif("${DEPENDENCY_NAME}" STREQUAL "benchmark")
build_benchmark()
elseif("${DEPENDENCY_NAME}" STREQUAL "Boost")
Expand Down Expand Up @@ -368,6 +371,10 @@ if(ARROW_GCS)
set(ARROW_WITH_ZLIB ON)
endif()

if(ARROW_AZURE)
set(ARROW_WITH_AZURE_SDK ON)
endif()

if(ARROW_JSON)
set(ARROW_WITH_RAPIDJSON ON)
endif()
Expand Down Expand Up @@ -548,6 +555,14 @@ else()
"${THIRDPARTY_MIRROR_URL}/aws-sdk-cpp-${ARROW_AWSSDK_BUILD_VERSION}.tar.gz")
endif()

if(DEFINED ENV{ARROW_AZURE_SDK_URL})
set(ARROW_AZURE_SDK_URL "$ENV{ARROW_AZURE_SDK_URL}")
else()
set_urls(ARROW_AZURE_SDK_URL
"https://github.com/Azure/azure-sdk-for-cpp/archive/${ARROW_AZURE_SDK_BUILD_VERSION}.tar.gz"
)
endif()

if(DEFINED ENV{ARROW_BOOST_URL})
set(BOOST_SOURCE_URL "$ENV{ARROW_BOOST_URL}")
else()
Expand Down Expand Up @@ -960,6 +975,8 @@ else()
set(MAKE_BUILD_ARGS "-j${NPROC}")
endif()

include(FetchContent)

# ----------------------------------------------------------------------
# Find pthreads

Expand Down Expand Up @@ -1367,6 +1384,7 @@ endif()
set(ARROW_OPENSSL_REQUIRED_VERSION "1.0.2")
set(ARROW_USE_OPENSSL OFF)
if(PARQUET_REQUIRE_ENCRYPTION
OR ARROW_AZURE
OR ARROW_FLIGHT
OR ARROW_GANDIVA
OR ARROW_GCS
Expand Down Expand Up @@ -5049,6 +5067,56 @@ if(ARROW_S3)
endif()
endif()

# ----------------------------------------------------------------------
# Azure SDK for C++

function(build_azure_sdk)
message(STATUS "Building Azure SDK for C++ from source")
fetchcontent_declare(azure_sdk
URL ${ARROW_AZURE_SDK_URL}
URL_HASH "SHA256=${ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM}")
set(BUILD_PERFORMANCE_TESTS FALSE)
set(BUILD_SAMPLES FALSE)
set(BUILD_TESTING FALSE)
set(BUILD_WINDOWS_UWP TRUE)
set(CMAKE_EXPORT_NO_PACKAGE_REGISTRY TRUE)
set(DISABLE_AZURE_CORE_OPENTELEMETRY TRUE)
set(ENV{AZURE_SDK_DISABLE_AUTO_VCPKG} TRUE)
set(WARNINGS_AS_ERRORS FALSE)
# TODO: Configure flags in a better way. FetchContent builds inherit
# global flags but we want to disable -Werror for Azure SDK for C++ builds.
if(MSVC)
string(REPLACE "/WX" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
string(REPLACE "/WX" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
else()
string(REPLACE "-Werror" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
string(REPLACE "-Werror" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
endif()
fetchcontent_makeavailable(azure_sdk)
set(AZURE_SDK_VENDORED
TRUE
PARENT_SCOPE)
list(APPEND
ARROW_BUNDLED_STATIC_LIBS
Azure::azure-core
Azure::azure-identity
Azure::azure-storage-blobs
Azure::azure-storage-common
Azure::azure-storage-files-datalake)
set(ARROW_BUNDLED_STATIC_LIBS
${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
endfunction()

if(ARROW_WITH_AZURE_SDK)
resolve_dependency(Azure REQUIRED_VERSION 1.10.2)
set(AZURE_SDK_LINK_LIBRARIES
Azure::azure-storage-files-datalake
Azure::azure-storage-common
Azure::azure-storage-blobs
Azure::azure-identity
Azure::azure-core)
endif()
# ----------------------------------------------------------------------
# ucx - communication framework for modern, high-bandwidth and low-latency networks

Expand Down
9 changes: 9 additions & 0 deletions cpp/src/arrow/filesystem/azurefs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@

#include "arrow/filesystem/azurefs.h"

#include <azure/identity/default_azure_credential.hpp>
#include <azure/storage/blobs.hpp>

#include "arrow/result.h"
Tom-Newton marked this conversation as resolved.
Show resolved Hide resolved
#include "arrow/util/checked_cast.h"

Expand Down Expand Up @@ -47,6 +50,12 @@ class AzureFileSystem::Impl {
: io_context_(io_context), options_(std::move(options)) {}

Status Init() {
// TODO: GH-18014 Delete this once we have a proper implementation. This just
// initializes a pointless Azure blob service client with a fake endpoint to ensure
// the build will fail if the Azure SDK build is broken.
auto default_credential = std::make_shared<Azure::Identity::DefaultAzureCredential>();
auto service_client = Azure::Storage::Blobs::BlobServiceClient(
"http://fake-blob-storage-endpoint", default_credential);
if (options_.backend == AzureBackend::Azurite) {
// gen1Client_->GetAccountInfo().Value.IsHierarchicalNamespaceEnabled
// throws error in azurite
Expand Down
45 changes: 39 additions & 6 deletions cpp/src/arrow/filesystem/azurefs_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@
#include "arrow/testing/gtest_util.h"
#include "arrow/testing/util.h"

#include <azure/identity/client_secret_credential.hpp>
#include <azure/identity/default_azure_credential.hpp>
#include <azure/identity/managed_identity_credential.hpp>
#include <azure/storage/blobs.hpp>
#include <azure/storage/common/storage_credential.hpp>

namespace arrow {
using internal::TemporaryDir;
namespace fs {
Expand Down Expand Up @@ -105,15 +111,42 @@ AzuriteEnv* GetAzuriteEnv() {
return ::arrow::internal::checked_cast<AzuriteEnv*>(azurite_env);
}

// Placeholder tests for file structure
// Placeholder tests
// TODO: GH-18014 Remove once a proper test is added
TEST(AzureFileSystem, InitialiseAzurite) {
TEST(AzureFileSystem, UploadThenDownload) {
const std::string container_name = "sample-container";
const std::string blob_name = "sample-blob.txt";
const std::string blob_content = "Hello Azure!";

const std::string& account_name = GetAzuriteEnv()->account_name();
const std::string& account_key = GetAzuriteEnv()->account_key();
EXPECT_EQ(account_name, "devstoreaccount1");
EXPECT_EQ(account_key,
"Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/"
"K1SZFPTOtr/KBHBeksoGMGw==");

auto credential = std::make_shared<Azure::Storage::StorageSharedKeyCredential>(
account_name, account_key);

auto service_client = Azure::Storage::Blobs::BlobServiceClient(
std::string("http://127.0.0.1:10000/") + account_name, credential);
auto container_client = service_client.GetBlobContainerClient(container_name);
container_client.CreateIfNotExists();
auto blob_client = container_client.GetBlockBlobClient(blob_name);

std::vector<uint8_t> buffer(blob_content.begin(), blob_content.end());
blob_client.UploadFrom(buffer.data(), buffer.size());

std::vector<uint8_t> downloaded_content(blob_content.size());
blob_client.DownloadTo(downloaded_content.data(), downloaded_content.size());

EXPECT_EQ(std::string(downloaded_content.begin(), downloaded_content.end()),
blob_content);
}

TEST(AzureFileSystem, InitializeCredentials) {
auto default_credential = std::make_shared<Azure::Identity::DefaultAzureCredential>();
auto managed_identity_credential =
std::make_shared<Azure::Identity::ManagedIdentityCredential>();
auto service_principal_credential =
std::make_shared<Azure::Identity::ClientSecretCredential>("tenant_id", "client_id",
"client_secret");
}

TEST(AzureFileSystem, OptionsCompare) {
Expand Down
3 changes: 3 additions & 0 deletions cpp/thirdparty/versions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ ARROW_AWS_LC_BUILD_VERSION=v1.3.0
ARROW_AWS_LC_BUILD_SHA256_CHECKSUM=ae96a3567161552744fc0cae8b4d68ed88b1ec0f3d3c98700070115356da5a37
ARROW_AWSSDK_BUILD_VERSION=1.10.55
ARROW_AWSSDK_BUILD_SHA256_CHECKSUM=2d552fb1a84bef4a9b65e34aa7031851ed2aef5319e02cc6e4cb735c48aa30de
# Despite the confusing version name this is still the whole Azure SDK for C++ including core, keyvault, storage-common, etc.
ARROW_AZURE_SDK_BUILD_VERSION=azure-core_1.10.2
ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM=36557dae87de4cdd257d9b441d9a7f043290eae6666fb1065e0fa486ae3e58a0
ARROW_BOOST_BUILD_VERSION=1.81.0
ARROW_BOOST_BUILD_SHA256_CHECKSUM=9e0ffae35528c35f90468997bc8d99500bf179cbae355415a89a600c38e13574
ARROW_BROTLI_BUILD_VERSION=v1.0.9
Expand Down