From 4d5ff10a94787a7e41c73d8457826da774fe131a Mon Sep 17 00:00:00 2001
From: regro-cf-autotick-bot
<36490558+regro-cf-autotick-bot@users.noreply.github.com>
Date: Fri, 9 Oct 2026 08:44:01 +0000
Subject: [PATCH 1/7] updated v26.0.0
---
conda-forge.yml | 23 +++++++++++------------
recipe/meta.yaml | 6 +++---
2 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/conda-forge.yml b/conda-forge.yml
index f31df63d1..e81389ded 100644
--- a/conda-forge.yml
+++ b/conda-forge.yml
@@ -1,12 +1,10 @@
bot:
abi_migration_branches:
- - 24.x
- - 23.x
- - 22.x
+ - 24.x
+ - 23.x
+ - 22.x
build_platform:
- linux_aarch64: linux_64
linux_ppc64le: linux_64
- osx_arm64: osx_64
conda_build:
pkg_format: '2'
conda_forge_output_validation: true
@@ -14,16 +12,17 @@ github:
branch_name: main
tooling_branch_name: main
provider:
- linux_aarch64: azure
+ linux_aarch64: default
linux_ppc64le: azure
+ osx_arm64: default
test: native_and_emulated
workflow_settings:
build_workspace_dir:
- - os: win
- value: C:\bld
+ - os: win
+ value: C:\bld
free_disk_space:
- - os: linux
- value: quick
+ - os: linux
+ value: quick
tools_install_dir:
- - os: win
- value: C:\Miniforge
+ - os: win
+ value: C:\Miniforge
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index 3d0dbc713..5543391e1 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -1,4 +1,4 @@
-{% set version = "25.0.0" %}
+{% set version = "26.0.0" %}
{% set cuda_enabled = cuda_compiler_version != "None" %}
{% set build_ext_version = "5.0.0" %}
{% set build_ext = "cuda" if cuda_enabled else "cpu" %}
@@ -18,7 +18,7 @@ package:
source:
- url: https://www.apache.org/dyn/closer.lua/arrow/arrow-{{ version }}/apache-arrow-{{ version }}.tar.gz?action=download
fn: apache-arrow-{{ version }}.tar.gz
- sha256: 12afc2dc8137bdd4a68876cec939f664c9d55cfc7b75f55b45163ebb4e344d81
+ sha256: b153ef472dd89ef4cb84867ca238f2a3a9347d8f4a78913d16ca2201606f0425
patches:
# skip gcsfs tests due to missing `storage-testbench`
- patches/0001-disable-gcsfs_test.patch
@@ -37,7 +37,7 @@ source:
folder: cpp/submodules/parquet-testing
build:
- number: 4
+ number: 0
# for cuda support, building with one version is enough to be compatible with
# all later versions, since arrow is only using libcuda, and not libcudart.
skip: true # [cuda_compiler_version not in ("None", cuda_compiler_version_min)]
From 855f7b61e17db1590c633fbece5ab26fecc6f216 Mon Sep 17 00:00:00 2001
From: regro-cf-autotick-bot
<36490558+regro-cf-autotick-bot@users.noreply.github.com>
Date: Fri, 9 Oct 2026 08:49:03 +0000
Subject: [PATCH 2/7] MNT: Re-rendered with conda-smithy 2026.9.23 and
conda-forge-pinning 2026.10.08.16.59.0
---
.azure-pipelines/azure-pipelines-osx.yml | 2 +-
...er_version12.9cxx_compiler_version14.yaml} | 2 +-
...er_versionNonecxx_compiler_version15.yaml} | 6 +--
...er_version12.9cxx_compiler_version14.yaml} | 4 +-
...er_versionNonecxx_compiler_version15.yaml} | 8 ++--
.ci_support/linux_ppc64le_.yaml | 6 +--
.ci_support/migrations/libgoogle_cloud38.yaml | 46 -------------------
.ci_support/osx_64_.yaml | 2 +-
.ci_support/osx_arm64_.yaml | 2 +-
.../win_64_cuda_compiler_version12.9.yaml | 2 +-
.../win_64_cuda_compiler_versionNone.yaml | 2 +-
.github/workflows/conda-build.yml | 16 +++----
.scripts/build_steps.sh | 2 +-
.scripts/run_osx_build.sh | 2 +-
.scripts/run_win_build.bat | 5 +-
README.md | 19 +++-----
16 files changed, 37 insertions(+), 89 deletions(-)
rename .ci_support/{linux_64_cuda_compiler_version12.9.yaml => linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml} (99%)
rename .ci_support/{linux_64_cuda_compiler_versionNone.yaml => linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml} (97%)
rename .ci_support/{linux_aarch64_cuda_compiler_version12.9.yaml => linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml} (94%)
rename .ci_support/{linux_aarch64_cuda_compiler_versionNone.yaml => linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml} (93%)
delete mode 100644 .ci_support/migrations/libgoogle_cloud38.yaml
diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml
index 04774f010..bfe94b16b 100644
--- a/.azure-pipelines/azure-pipelines-osx.yml
+++ b/.azure-pipelines/azure-pipelines-osx.yml
@@ -21,7 +21,7 @@ jobs:
osx_arm64_:
CONFIG: osx_arm64_
UPLOAD_PACKAGES: 'True'
- VMIMAGE: macOS-15
+ VMIMAGE: macOS-15-arm64
build_workspace_dir: ~/miniforge3/conda-bld
free_disk_space: skip
pagefile_size: 0
diff --git a/.ci_support/linux_64_cuda_compiler_version12.9.yaml b/.ci_support/linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
similarity index 99%
rename from .ci_support/linux_64_cuda_compiler_version12.9.yaml
rename to .ci_support/linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
index 02323ab9b..c106947bb 100644
--- a/.ci_support/linux_64_cuda_compiler_version12.9.yaml
+++ b/.ci_support/linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/linux_64_cuda_compiler_versionNone.yaml b/.ci_support/linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
similarity index 97%
rename from .ci_support/linux_64_cuda_compiler_versionNone.yaml
rename to .ci_support/linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
index 44fea9bf5..45687d091 100644
--- a/.ci_support/linux_64_cuda_compiler_versionNone.yaml
+++ b/.ci_support/linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
@@ -17,7 +17,7 @@ bzip2:
c_compiler:
- gcc
c_compiler_version:
-- '14'
+- '15'
c_stdlib:
- sysroot
c_stdlib_version:
@@ -35,7 +35,7 @@ cuda_compiler_version_min:
cxx_compiler:
- gxx
cxx_compiler_version:
-- '14'
+- '15'
docker_image:
- quay.io/condaforge/linux-anvil-x86_64:alma10
gflags:
diff --git a/.ci_support/linux_aarch64_cuda_compiler_version12.9.yaml b/.ci_support/linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
similarity index 94%
rename from .ci_support/linux_aarch64_cuda_compiler_version12.9.yaml
rename to .ci_support/linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
index 67a4259eb..28952fbfd 100644
--- a/.ci_support/linux_aarch64_cuda_compiler_version12.9.yaml
+++ b/.ci_support/linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
@@ -37,7 +37,7 @@ cxx_compiler:
cxx_compiler_version:
- '14'
docker_image:
-- quay.io/condaforge/linux-anvil-x86_64:alma10
+- quay.io/condaforge/linux-anvil-aarch64:alma10
gflags:
- '2.3'
glog:
diff --git a/.ci_support/linux_aarch64_cuda_compiler_versionNone.yaml b/.ci_support/linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
similarity index 93%
rename from .ci_support/linux_aarch64_cuda_compiler_versionNone.yaml
rename to .ci_support/linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
index 7a535f7f0..a7c49f668 100644
--- a/.ci_support/linux_aarch64_cuda_compiler_versionNone.yaml
+++ b/.ci_support/linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
@@ -17,7 +17,7 @@ bzip2:
c_compiler:
- gcc
c_compiler_version:
-- '14'
+- '15'
c_stdlib:
- sysroot
c_stdlib_version:
@@ -35,9 +35,9 @@ cuda_compiler_version_min:
cxx_compiler:
- gxx
cxx_compiler_version:
-- '14'
+- '15'
docker_image:
-- quay.io/condaforge/linux-anvil-x86_64:alma10
+- quay.io/condaforge/linux-anvil-aarch64:alma10
gflags:
- '2.3'
glog:
diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml
index 8cfdd1f25..649266cfb 100644
--- a/.ci_support/linux_ppc64le_.yaml
+++ b/.ci_support/linux_ppc64le_.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
@@ -17,7 +17,7 @@ bzip2:
c_compiler:
- gcc
c_compiler_version:
-- '14'
+- '15'
c_stdlib:
- sysroot
c_stdlib_version:
@@ -33,7 +33,7 @@ cuda_compiler_version_min:
cxx_compiler:
- gxx
cxx_compiler_version:
-- '14'
+- '15'
docker_image:
- quay.io/condaforge/linux-anvil-x86_64:alma10
gflags:
diff --git a/.ci_support/migrations/libgoogle_cloud38.yaml b/.ci_support/migrations/libgoogle_cloud38.yaml
deleted file mode 100644
index fc6f92532..000000000
--- a/.ci_support/migrations/libgoogle_cloud38.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-__migrator:
- build_number: 1
- commit_message: Rebuild for libgoogle_cloud 3.8
- kind: version
- migration_number: 1
-google_cloud_cpp:
-- '3.8'
-libgoogle_cloud:
-- '3.8'
-libgoogle_cloud_aiplatform_devel:
-- '3.8'
-libgoogle_cloud_all_devel:
-- '3.8'
-libgoogle_cloud_automl_devel:
-- '3.8'
-libgoogle_cloud_bigquery_devel:
-- '3.8'
-libgoogle_cloud_bigtable_devel:
-- '3.8'
-libgoogle_cloud_compute_devel:
-- '3.8'
-libgoogle_cloud_devel:
-- '3.8'
-libgoogle_cloud_dialogflow_cx_devel:
-- '3.8'
-libgoogle_cloud_dialogflow_es_devel:
-- '3.8'
-libgoogle_cloud_discoveryengine_devel:
-- '3.8'
-libgoogle_cloud_dlp_devel:
-- '3.8'
-libgoogle_cloud_iam_devel:
-- '3.8'
-libgoogle_cloud_oauth2_devel:
-- '3.8'
-libgoogle_cloud_policytroubleshooter_devel:
-- '3.8'
-libgoogle_cloud_pubsub_devel:
-- '3.8'
-libgoogle_cloud_spanner_devel:
-- '3.8'
-libgoogle_cloud_speech_devel:
-- '3.8'
-libgoogle_cloud_storage_devel:
-- '3.8'
-migrator_ts: 1786233804.752991
diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml
index d2a729699..a6352844b 100644
--- a/.ci_support/osx_64_.yaml
+++ b/.ci_support/osx_64_.yaml
@@ -3,7 +3,7 @@ MACOSX_DEPLOYMENT_TARGET:
MACOSX_SDK_VERSION:
- '12.0'
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml
index e93b2f81e..e7508cf8f 100644
--- a/.ci_support/osx_arm64_.yaml
+++ b/.ci_support/osx_arm64_.yaml
@@ -3,7 +3,7 @@ MACOSX_DEPLOYMENT_TARGET:
MACOSX_SDK_VERSION:
- '12.0'
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/win_64_cuda_compiler_version12.9.yaml b/.ci_support/win_64_cuda_compiler_version12.9.yaml
index 429237440..e7094d12e 100644
--- a/.ci_support/win_64_cuda_compiler_version12.9.yaml
+++ b/.ci_support/win_64_cuda_compiler_version12.9.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/win_64_cuda_compiler_versionNone.yaml b/.ci_support/win_64_cuda_compiler_versionNone.yaml
index c6da457e1..f46bbbdba 100644
--- a/.ci_support/win_64_cuda_compiler_versionNone.yaml
+++ b/.ci_support/win_64_cuda_compiler_versionNone.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.40.1
+- 0.42.3
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml
index 1483470c4..0b496748b 100644
--- a/.github/workflows/conda-build.yml
+++ b/.github/workflows/conda-build.yml
@@ -22,7 +22,7 @@ jobs:
max-parallel: 50
matrix:
include:
- - CONFIG: linux_64_cuda_compiler_version12.9
+ - CONFIG: linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10
STORE_BUILD_ARTIFACTS: False
UPLOAD_PACKAGES: True
@@ -34,7 +34,7 @@ jobs:
resize_partitions: False
runs_on: ['ubuntu-latest']
tools_install_dir: ~/miniforge3
- - CONFIG: linux_64_cuda_compiler_versionNone
+ - CONFIG: linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10
STORE_BUILD_ARTIFACTS: False
UPLOAD_PACKAGES: True
@@ -46,8 +46,8 @@ jobs:
resize_partitions: False
runs_on: ['ubuntu-latest']
tools_install_dir: ~/miniforge3
- - CONFIG: linux_aarch64_cuda_compiler_version12.9
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10
+ - CONFIG: linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma10
STORE_BUILD_ARTIFACTS: False
UPLOAD_PACKAGES: True
build_workspace_dir: build_artifacts
@@ -56,10 +56,10 @@ jobs:
os: ubuntu
pagefile_size: 0
resize_partitions: False
- runs_on: ['ubuntu-latest']
+ runs_on: ['ubuntu-24.04-arm']
tools_install_dir: ~/miniforge3
- - CONFIG: linux_aarch64_cuda_compiler_versionNone
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10
+ - CONFIG: linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma10
STORE_BUILD_ARTIFACTS: False
UPLOAD_PACKAGES: True
build_workspace_dir: build_artifacts
@@ -68,7 +68,7 @@ jobs:
os: ubuntu
pagefile_size: 0
resize_partitions: False
- runs_on: ['ubuntu-latest']
+ runs_on: ['ubuntu-24.04-arm']
tools_install_dir: ~/miniforge3
- CONFIG: linux_ppc64le_
DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma10
diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh
index 484acddad..28dfd13df 100755
--- a/.scripts/build_steps.sh
+++ b/.scripts/build_steps.sh
@@ -36,7 +36,7 @@ mv /opt/conda/conda-meta/history /opt/conda/conda-meta/history.$(date +%Y-%m-%d-
echo > /opt/conda/conda-meta/history
micromamba install --root-prefix ~/.conda --prefix /opt/conda \
--yes --override-channels --channel conda-forge --strict-channel-priority \
- pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=26.3"
+ pip python=3.14 conda-build conda-forge-ci-setup=4 "conda-build>=26.3"
export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1
# set up the condarc
diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh
index 9d7c39125..aff5569d0 100755
--- a/.scripts/run_osx_build.sh
+++ b/.scripts/run_osx_build.sh
@@ -26,7 +26,7 @@ chmod +x "${micromamba_exe}"
echo "Creating environment"
"${micromamba_exe}" create --yes --root-prefix "${MAMBA_ROOT_PREFIX}" --prefix "${MINIFORGE_HOME}" \
--channel conda-forge \
- pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=26.3"
+ pip python=3.14 conda-build conda-forge-ci-setup=4 "conda-build>=26.3"
echo "Moving pkgs cache from ${MAMBA_ROOT_PREFIX} to ${MINIFORGE_HOME}"
mv "${MAMBA_ROOT_PREFIX}/pkgs" "${MINIFORGE_HOME}"
echo "Cleaning up micromamba"
diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat
index 06f61b83b..e11c3ecf8 100755
--- a/.scripts/run_win_build.bat
+++ b/.scripts/run_win_build.bat
@@ -31,7 +31,7 @@ if !errorlevel! neq 0 exit /b !errorlevel!
echo Creating environment
call "%MICROMAMBA_EXE%" create --yes --root-prefix "%MAMBA_ROOT_PREFIX%" --prefix "%MINIFORGE_HOME%" ^
--channel conda-forge ^
- pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=26.3"
+ pip python=3.14 conda-build conda-forge-ci-setup=4 "conda-build>=26.3"
if !errorlevel! neq 0 exit /b !errorlevel!
echo Removing %MAMBA_ROOT_PREFIX%
del /S /Q "%MAMBA_ROOT_PREFIX%" >nul
@@ -42,7 +42,8 @@ call :start_group "Configuring conda"
:: Activate the base conda environment
echo Activating environment
-call "%MINIFORGE_HOME%\Scripts\activate.bat"
+set "CONDA_EXE=%MINIFORGE_HOME%\Scripts\conda.exe"
+call "%MINIFORGE_HOME%\condabin\conda.bat" activate "%MINIFORGE_HOME%"
:: Configure the solver
set "CONDA_SOLVER=libmamba"
if !errorlevel! neq 0 exit /b !errorlevel!
diff --git a/README.md b/README.md
index e7d298050..fdc938030 100644
--- a/README.md
+++ b/README.md
@@ -146,31 +146,24 @@ Current build status
| Variant | Status |
- | linux_aarch64_cuda_compiler_version12.9 |
-
-
-
-
- |
-
- | linux_aarch64_cuda_compiler_versionNone |
+ linux_ppc64le |
-
+
|
- | linux_ppc64le |
+ osx_64 |
-
+
|
- | osx_64 |
+ osx_arm64 |
-
+
|
From fe4f6684e4b3d22be6dd5a65bef60462fbf2f31a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?=
Date: Fri, 16 Oct 2026 12:18:32 +0200
Subject: [PATCH 3/7] Add changes for Arrow S3 split and migration for AWS sdk
---
.../migrations/aws_c_startofaugust26.yaml | 24 ++++++++
recipe/install-libarrow.bat | 6 ++
recipe/install-libarrow.sh | 5 ++
recipe/meta.yaml | 58 ++++++++++++++++++-
4 files changed, 90 insertions(+), 3 deletions(-)
create mode 100644 .ci_support/migrations/aws_c_startofaugust26.yaml
diff --git a/.ci_support/migrations/aws_c_startofaugust26.yaml b/.ci_support/migrations/aws_c_startofaugust26.yaml
new file mode 100644
index 000000000..4c1738314
--- /dev/null
+++ b/.ci_support/migrations/aws_c_startofaugust26.yaml
@@ -0,0 +1,24 @@
+__migrator:
+ build_number: 1
+ commit_message: Rebuild for aws-c-* (start-of-august'26)
+ kind: version
+ migration_number: 1
+ exclude_pinned_pkgs: false
+ automerge: true
+migrator_ts: 1785855565
+aws_c_cal:
+ - '0.9.15'
+aws_c_common:
+ - '0.14.4'
+aws_c_io:
+ - '0.27.5'
+aws_c_mqtt:
+ - '0.16.1'
+aws_c_s3:
+ - '0.13.7'
+aws_c_sdkutils:
+ - '0.2.10'
+aws_crt_cpp:
+ - '0.43.6'
+aws_c_auth:
+ - '0.10.5'
diff --git a/recipe/install-libarrow.bat b/recipe/install-libarrow.bat
index 1f9ad06a4..ac37cca74 100644
--- a/recipe/install-libarrow.bat
+++ b/recipe/install-libarrow.bat
@@ -64,6 +64,12 @@ if [%PKG_NAME%] == [libarrow] (
move .\temp_prefix\lib\cmake\Gandiva\* %LIBRARY_LIB%\cmake\Gandiva
mkdir %LIBRARY_PREFIX%\include\gandiva
xcopy /s /y .\temp_prefix\include\gandiva %LIBRARY_PREFIX%\include\gandiva
+) else if [%PKG_NAME%] == [libarrow-s3] (
+ move .\temp_prefix\lib\arrow_s3.lib %LIBRARY_LIB%
+ move .\temp_prefix\bin\arrow_s3.dll %LIBRARY_BIN%
+ copy .\temp_prefix\lib\pkgconfig\arrow-s3.pc %LIBRARY_LIB%\pkgconfig
+ mkdir %LIBRARY_LIB%\cmake\ArrowS3
+ move .\temp_prefix\lib\cmake\ArrowS3\* %LIBRARY_LIB%\cmake\ArrowS3
) else if [%PKG_NAME%] == [libarrow-substrait] (
move .\temp_prefix\lib\arrow_substrait.lib %LIBRARY_LIB%
move .\temp_prefix\bin\arrow_substrait.dll %LIBRARY_BIN%
diff --git a/recipe/install-libarrow.sh b/recipe/install-libarrow.sh
index 6ef3854b8..111e81bae 100644
--- a/recipe/install-libarrow.sh
+++ b/recipe/install-libarrow.sh
@@ -62,6 +62,11 @@ elif [[ "${PKG_NAME}" == "libarrow-gandiva" ]]; then
cp ./temp_prefix/lib/pkgconfig/gandiva.pc $PREFIX/lib/pkgconfig
cp -R ./temp_prefix/lib/cmake/Gandiva/. $PREFIX/lib/cmake/Gandiva
cp -R ./temp_prefix/include/gandiva/. $PREFIX/include/gandiva
+elif [[ "${PKG_NAME}" == "libarrow-s3" ]]; then
+ # only libarrow-s3
+ cp -a ./temp_prefix/lib/libarrow_s3.* $PREFIX/lib
+ cp ./temp_prefix/lib/pkgconfig/arrow-s3.pc $PREFIX/lib/pkgconfig
+ cp -R ./temp_prefix/lib/cmake/ArrowS3/. $PREFIX/lib/cmake/ArrowS3
elif [[ "${PKG_NAME}" == "libarrow-substrait" ]]; then
# only libarrow-substrait
cp -a ./temp_prefix/lib/libarrow_substrait.* $PREFIX/lib
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index 5543391e1..32a0373eb 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -141,6 +141,7 @@ outputs:
- {{ pin_subpackage("libarrow-flight", max_pin="x.x") }}
- {{ pin_subpackage("libarrow-flight-sql", max_pin="x.x") }}
- {{ pin_subpackage("libarrow-gandiva", max_pin="x.x") }}
+ - {{ pin_subpackage("libarrow-s3", max_pin="x.x") }}
- {{ pin_subpackage("libarrow-substrait", max_pin="x.x") }}
- {{ pin_subpackage("libparquet", max_pin="x.x") }}
requirements:
@@ -155,6 +156,7 @@ outputs:
- {{ pin_subpackage("libarrow-flight", exact=True) }}
- {{ pin_subpackage("libarrow-flight-sql", exact=True) }}
- {{ pin_subpackage("libarrow-gandiva", exact=True) }}
+ - {{ pin_subpackage("libarrow-s3", exact=True) }}
- {{ pin_subpackage("libarrow-substrait", exact=True) }}
- {{ pin_subpackage("libparquet", exact=True) }}
- {{ pin_subpackage("arrow-utils", exact=True) }}
@@ -167,6 +169,7 @@ outputs:
- {{ pin_subpackage("libarrow-flight", exact=True) }}
- {{ pin_subpackage("libarrow-flight-sql", exact=True) }}
- {{ pin_subpackage("libarrow-gandiva", exact=True) }}
+ - {{ pin_subpackage("libarrow-s3", exact=True) }}
- {{ pin_subpackage("libarrow-substrait", exact=True) }}
- {{ pin_subpackage("libparquet", exact=True) }}
- {{ pin_subpackage("arrow-utils", exact=True) }}
@@ -218,8 +221,7 @@ outputs:
- {{ compiler("cxx") }}
- {{ compiler("cuda") }} # [cuda_compiler_version != "None"]
host:
- - aws-crt-cpp
- - aws-sdk-cpp
+ # aws-crt-cpp & aws-sdk-cpp are only needed by libarrow-s3
- azure-core-cpp
- azure-identity-cpp
- azure-storage-blobs-cpp
@@ -291,7 +293,7 @@ outputs:
{% set libs = [
"arrow_acero", "arrow_dataset", "arrow_flight",
- "arrow_flight_sql", "arrow_substrait", "gandiva", "parquet"
+ "arrow_flight_sql", "arrow_s3", "arrow_substrait", "gandiva", "parquet"
] %}
{% for each_lib in libs %}
# absence of libraries that belong in other outputs
@@ -621,6 +623,56 @@ outputs:
- LICENSE.txt
summary: C++ libraries for Apache Arrow Gandiva
+ - name: libarrow-s3
+ script: install-libarrow.sh # [unix]
+ script: install-libarrow.bat # [win]
+ version: {{ version }}
+ build:
+ string: h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}_{{ build_ext }}
+ run_exports:
+ - {{ pin_subpackage("libarrow-s3", max_pin="x.x") }}
+ requirements:
+ build:
+ - cmake
+ - ninja
+ # for strong run-exports
+ - {{ stdlib("c") }}
+ - {{ compiler("c") }}
+ - {{ compiler("cxx") }}
+ host:
+ - {{ pin_subpackage("libarrow", exact=True) }}
+ - aws-crt-cpp
+ - aws-sdk-cpp
+ - libabseil # [osx]
+ - libprotobuf # [osx]
+ - libopentelemetry-cpp # [osx]
+ run:
+ - {{ pin_subpackage("libarrow", exact=True) }}
+ # run-constraints handled by libarrow, since we depend on it with exact=True
+
+ test:
+ commands:
+ # headers (installed as part of libarrow)
+ - test -f $PREFIX/include/arrow/filesystem/s3fs.h # [unix]
+ - if not exist %LIBRARY_INC%\arrow\filesystem\s3fs.h exit 1 # [win]
+
+ # shared libraries
+ - test -f $PREFIX/lib/libarrow_s3.so # [linux]
+ - test -f $PREFIX/lib/libarrow_s3.dylib # [osx]
+ - if not exist %LIBRARY_BIN%\arrow_s3.dll exit 1 # [win]
+ - if not exist %LIBRARY_LIB%\arrow_s3.lib exit 1 # [win]
+
+ # absence of static libraries
+ - test ! -f $PREFIX/lib/libarrow_s3.a # [unix]
+ - if exist %LIBRARY_LIB%\arrow_s3_static.lib exit 1 # [win]
+
+ about:
+ home: http://github.com/apache/arrow
+ license: Apache-2.0
+ license_file:
+ - LICENSE.txt
+ summary: C++ libraries for Apache Arrow S3 filesystem
+
- name: libarrow-substrait
script: install-libarrow.sh # [unix]
script: install-libarrow.bat # [win]
From 67d57b9b84eaae876dc5887a30f858bbfe3acfed Mon Sep 17 00:00:00 2001
From: "conda-forge-webservices[bot]"
<91080706+conda-forge-webservices[bot]@users.noreply.github.com>
Date: Fri, 16 Oct 2026 10:32:23 +0000
Subject: [PATCH 4/7] MNT: Re-rendered with conda-smithy 2026.9.23 and
conda-forge-pinning 2026.10.15.13.54.1
---
...iler_version12.9cxx_compiler_version14.yaml | 2 +-
...iler_versionNonecxx_compiler_version15.yaml | 2 +-
...iler_version12.9cxx_compiler_version14.yaml | 2 +-
...iler_versionNonecxx_compiler_version15.yaml | 2 +-
.ci_support/linux_ppc64le_.yaml | 2 +-
.ci_support/osx_64_.yaml | 2 +-
.ci_support/osx_arm64_.yaml | 2 +-
.../win_64_cuda_compiler_version12.9.yaml | 2 +-
.../win_64_cuda_compiler_versionNone.yaml | 2 +-
README.md | 18 ++++++++++++++----
10 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/.ci_support/linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml b/.ci_support/linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
index c106947bb..f1ea4a02e 100644
--- a/.ci_support/linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
+++ b/.ci_support/linux_64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml b/.ci_support/linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
index 45687d091..7b1a763dc 100644
--- a/.ci_support/linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
+++ b/.ci_support/linux_64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml b/.ci_support/linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
index 28952fbfd..e79b140f3 100644
--- a/.ci_support/linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
+++ b/.ci_support/linux_aarch64_c_compiler_version14c_stdlib_version2.17cuda_compiler_version12.9cxx_compiler_version14.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml b/.ci_support/linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
index a7c49f668..6850c4d80 100644
--- a/.ci_support/linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
+++ b/.ci_support/linux_aarch64_c_compiler_version15c_stdlib_version2.17cuda_compiler_versionNonecxx_compiler_version15.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml
index 649266cfb..e8895f2a2 100644
--- a/.ci_support/linux_ppc64le_.yaml
+++ b/.ci_support/linux_ppc64le_.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml
index a6352844b..2ce5b1d75 100644
--- a/.ci_support/osx_64_.yaml
+++ b/.ci_support/osx_64_.yaml
@@ -3,7 +3,7 @@ MACOSX_DEPLOYMENT_TARGET:
MACOSX_SDK_VERSION:
- '12.0'
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml
index e7508cf8f..fdff366c4 100644
--- a/.ci_support/osx_arm64_.yaml
+++ b/.ci_support/osx_arm64_.yaml
@@ -3,7 +3,7 @@ MACOSX_DEPLOYMENT_TARGET:
MACOSX_SDK_VERSION:
- '12.0'
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/win_64_cuda_compiler_version12.9.yaml b/.ci_support/win_64_cuda_compiler_version12.9.yaml
index e7094d12e..388358561 100644
--- a/.ci_support/win_64_cuda_compiler_version12.9.yaml
+++ b/.ci_support/win_64_cuda_compiler_version12.9.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/.ci_support/win_64_cuda_compiler_versionNone.yaml b/.ci_support/win_64_cuda_compiler_versionNone.yaml
index f46bbbdba..1bfc04ea8 100644
--- a/.ci_support/win_64_cuda_compiler_versionNone.yaml
+++ b/.ci_support/win_64_cuda_compiler_versionNone.yaml
@@ -1,5 +1,5 @@
aws_crt_cpp:
-- 0.42.3
+- 0.43.6
aws_sdk_cpp:
- 1.11.833
azure_core_cpp:
diff --git a/README.md b/README.md
index fdc938030..59161cc43 100644
--- a/README.md
+++ b/README.md
@@ -94,6 +94,15 @@ Package license: Apache-2.0
Summary: C++ libraries for Apache Arrow Gandiva
+About libarrow-s3
+-----------------
+
+Home: http://github.com/apache/arrow
+
+Package license: Apache-2.0
+
+Summary: C++ libraries for Apache Arrow S3 filesystem
+
About libarrow-substrait
------------------------
@@ -189,6 +198,7 @@ Current release info
| [](https://anaconda.org/conda-forge/libarrow-flight) | [](https://anaconda.org/conda-forge/libarrow-flight) | [](https://anaconda.org/conda-forge/libarrow-flight) | [](https://anaconda.org/conda-forge/libarrow-flight) |
| [](https://anaconda.org/conda-forge/libarrow-flight-sql) | [](https://anaconda.org/conda-forge/libarrow-flight-sql) | [](https://anaconda.org/conda-forge/libarrow-flight-sql) | [](https://anaconda.org/conda-forge/libarrow-flight-sql) |
| [](https://anaconda.org/conda-forge/libarrow-gandiva) | [](https://anaconda.org/conda-forge/libarrow-gandiva) | [](https://anaconda.org/conda-forge/libarrow-gandiva) | [](https://anaconda.org/conda-forge/libarrow-gandiva) |
+| [](https://anaconda.org/conda-forge/libarrow-s3) | [](https://anaconda.org/conda-forge/libarrow-s3) | [](https://anaconda.org/conda-forge/libarrow-s3) | [](https://anaconda.org/conda-forge/libarrow-s3) |
| [](https://anaconda.org/conda-forge/libarrow-substrait) | [](https://anaconda.org/conda-forge/libarrow-substrait) | [](https://anaconda.org/conda-forge/libarrow-substrait) | [](https://anaconda.org/conda-forge/libarrow-substrait) |
| [](https://anaconda.org/conda-forge/libparquet) | [](https://anaconda.org/conda-forge/libparquet) | [](https://anaconda.org/conda-forge/libparquet) | [](https://anaconda.org/conda-forge/libparquet) |
| [](https://anaconda.org/conda-forge/parquet-utils) | [](https://anaconda.org/conda-forge/parquet-utils) | [](https://anaconda.org/conda-forge/parquet-utils) | [](https://anaconda.org/conda-forge/parquet-utils) |
@@ -210,7 +220,7 @@ How to use
With conda
```
-conda install apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all libarrow-compute libarrow-dataset libarrow-flight libarrow-flight-sql libarrow-gandiva libarrow-substrait libparquet parquet-utils
+conda install apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all libarrow-compute libarrow-dataset libarrow-flight libarrow-flight-sql libarrow-gandiva libarrow-s3 libarrow-substrait libparquet parquet-utils
```
@@ -219,7 +229,7 @@ conda install apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all
With mamba
```
-mamba install apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all libarrow-compute libarrow-dataset libarrow-flight libarrow-flight-sql libarrow-gandiva libarrow-substrait libparquet parquet-utils
+mamba install apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all libarrow-compute libarrow-dataset libarrow-flight libarrow-flight-sql libarrow-gandiva libarrow-s3 libarrow-substrait libparquet parquet-utils
```
@@ -229,9 +239,9 @@ mamba install apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all
```
# for adding to your local project
-pixi add apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all libarrow-compute libarrow-dataset libarrow-flight libarrow-flight-sql libarrow-gandiva libarrow-substrait libparquet parquet-utils
+pixi add apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all libarrow-compute libarrow-dataset libarrow-flight libarrow-flight-sql libarrow-gandiva libarrow-s3 libarrow-substrait libparquet parquet-utils
# for installing globally
-pixi global install apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all libarrow-compute libarrow-dataset libarrow-flight libarrow-flight-sql libarrow-gandiva libarrow-substrait libparquet parquet-utils
+pixi global install apache-arrow-proc arrow-utils libarrow libarrow-acero libarrow-all libarrow-compute libarrow-dataset libarrow-flight libarrow-flight-sql libarrow-gandiva libarrow-s3 libarrow-substrait libparquet parquet-utils
```
From 3e6eb145b18e1bdc5f63931a1a83ca632806d697 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?=
Date: Fri, 16 Oct 2026 13:12:43 +0200
Subject: [PATCH 5/7] Add simdjson and uriparser dependencies
---
recipe/meta.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index 32a0373eb..c5d0c683e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -93,8 +93,10 @@ requirements:
- orc
- rapidjson
- re2
+ - simdjson
- snappy
- thrift-cpp
+ - uriparser
- xsimd
- zlib
- zstd
@@ -239,7 +241,9 @@ outputs:
- libprotobuf
- lz4-c
- orc
+ - simdjson
- snappy
+ - uriparser
- zlib
- zstd
# since libgoogle-cloud{,-storage} is static on windows, see
From c2fdfdd9332d0667a6cab2003e72949d701e1ca7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?=
Date: Fri, 16 Oct 2026 15:24:15 +0200
Subject: [PATCH 6/7] Temporarily pin simdjson < 5 for win and fix git_rev for
testing.
---
recipe/meta.yaml | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index c5d0c683e..648740dc3 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -33,7 +33,7 @@ source:
git_rev: 9ff285c88565f0f6abc855918c6a342e70e4909c
folder: testing
- git_url: https://github.com/apache/parquet-testing.git
- git_rev: e74785d85a4ecee829e1e405444d6a1b24b8bc9c
+ git_rev: 56653c437c8092f704a092d0d1d4e600124cd49f
folder: cpp/submodules/parquet-testing
build:
@@ -93,7 +93,10 @@ requirements:
- orc
- rapidjson
- re2
- - simdjson
+ # simdjson>=5 fails on MSVC due to arrow defining __SSE2__, see
+ # https://github.com/apache/arrow/issues/51690
+ - simdjson # [not win]
+ - simdjson <5 # [win]
- snappy
- thrift-cpp
- uriparser
@@ -241,7 +244,10 @@ outputs:
- libprotobuf
- lz4-c
- orc
- - simdjson
+ # simdjson>=5 fails on MSVC due to arrow defining __SSE2__, see
+ # https://github.com/apache/arrow/issues/51690
+ - simdjson # [not win]
+ - simdjson <5 # [win]
- snappy
- uriparser
- zlib
@@ -748,6 +754,9 @@ outputs:
host:
- {{ pin_subpackage("libarrow", exact=True) }}
- openssl
+ # see https://github.com/apache/arrow/issues/51690
+ - simdjson # [not win]
+ - simdjson <5 # [win]
- thrift-cpp
- libabseil # [osx]
- libprotobuf # [osx]
From 83863b6d5bc61f33bec506343ba16b58dc2ae755 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?=
Date: Mon, 19 Oct 2026 15:41:00 +0200
Subject: [PATCH 7/7] Try to fix CI jobs with patches
---
recipe/meta.yaml | 4 ++
...xport-S3RetryStrategy-static-members.patch | 42 +++++++++++++++++++
...k-tests-with-export_dynamic-on-macos.patch | 31 ++++++++++++++
3 files changed, 77 insertions(+)
create mode 100644 recipe/patches/0004-only-export-S3RetryStrategy-static-members.patch
create mode 100644 recipe/patches/0005-link-tests-with-export_dynamic-on-macos.patch
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index 648740dc3..073b161dc 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -27,6 +27,10 @@ source:
- patches/0002-skip-NonExistentBucket-test-on-osx.patch
# disable gandiva tests that are "unmaintained" and failing on windows
- patches/0003-disable-some-gandiva-tests-related-to-tzdb-handling.patch # [win]
+ # S3RetryStrategy must be subclassable without linking arrow_s3 (MSVC link error)
+ - patches/0004-only-export-S3RetryStrategy-static-members.patch
+ # keep OpenTelemetry singletons shared between tests and libarrow with LTO on macOS
+ - patches/0005-link-tests-with-export_dynamic-on-macos.patch # [osx]
# testing-submodules not part of release tarball
- git_url: https://github.com/apache/arrow-testing.git
diff --git a/recipe/patches/0004-only-export-S3RetryStrategy-static-members.patch b/recipe/patches/0004-only-export-S3RetryStrategy-static-members.patch
new file mode 100644
index 000000000..3bdf70ffa
--- /dev/null
+++ b/recipe/patches/0004-only-export-S3RetryStrategy-static-members.patch
@@ -0,0 +1,42 @@
+From: Raúl Cumplido
+Subject: [PATCH] Don't export S3RetryStrategy class, only its static members
+
+S3RetryStrategy is an interface meant to be subclassed by users. Since
+S3 moved to its own arrow_s3 library, it can also be subclassed by code
+that doesn't link arrow_s3 but loads it at runtime with
+LoadFileSystemFactories(), like arrow-s3fs-module-test. On Windows, the
+class-level ARROW_S3_EXPORT makes its implicit constructor and destructor
+__declspec(dllimport), which fails to link (LNK2001). Only export the
+static factory functions, which are the only members defined in arrow_s3.
+---
+diff --git a/cpp/src/arrow/filesystem/s3fs.h b/cpp/src/arrow/filesystem/s3fs.h
+index 5086b34..888c3ec 100644
+--- a/cpp/src/arrow/filesystem/s3fs.h
++++ b/cpp/src/arrow/filesystem/s3fs.h
+@@ -67,8 +67,12 @@ enum class S3CredentialsKind : int8_t {
+ WebIdentity
+ };
+
++// Only the out-of-line members are exported (not the whole class), so that it
++// can be subclassed without linking arrow_s3, e.g. when arrow_s3 is loaded at
++// runtime with LoadFileSystemFactories(). On Windows, exporting the class would
++// make its implicit constructor and destructor dllimport.
+ /// Pure virtual class for describing custom S3 retry strategies
+-class ARROW_S3_EXPORT S3RetryStrategy {
++class S3RetryStrategy {
+ public:
+ virtual ~S3RetryStrategy() = default;
+
+@@ -89,10 +93,10 @@ class ARROW_S3_EXPORT S3RetryStrategy {
+ virtual int64_t CalculateDelayBeforeNextRetry(const AWSErrorDetail& error,
+ int64_t attempted_retries) = 0;
+ /// Returns a stock AWS Default retry strategy.
+- static std::shared_ptr GetAwsDefaultRetryStrategy(
++ ARROW_S3_EXPORT static std::shared_ptr GetAwsDefaultRetryStrategy(
+ int64_t max_attempts);
+ /// Returns a stock AWS Standard retry strategy.
+- static std::shared_ptr GetAwsStandardRetryStrategy(
++ ARROW_S3_EXPORT static std::shared_ptr GetAwsStandardRetryStrategy(
+ int64_t max_attempts);
+ };
+
diff --git a/recipe/patches/0005-link-tests-with-export_dynamic-on-macos.patch b/recipe/patches/0005-link-tests-with-export_dynamic-on-macos.patch
new file mode 100644
index 000000000..7f5bd555f
--- /dev/null
+++ b/recipe/patches/0005-link-tests-with-export_dynamic-on-macos.patch
@@ -0,0 +1,31 @@
+From: Raúl Cumplido
+Subject: [PATCH] Link test executables with -export_dynamic on macOS
+
+With LTO enabled, ld64 is allowed to internalize global symbols of main
+executables unless -export_dynamic is passed. This includes the weak
+function-local statics used by the header-only OpenTelemetry API as
+process-wide singletons (TracerProvider, RuntimeContext storage), so the
+test executables end up with a private copy instead of sharing libarrow's.
+This breaks parquet-arrow-reader-writer-tracing-test (no spans recorded)
+and makes arrow-utility-test crash at exit (Tracing.OtLifetime).
+---
+diff --git a/cpp/cmake_modules/BuildUtils.cmake b/cpp/cmake_modules/BuildUtils.cmake
+index 8556273..4767e27 100644
+--- a/cpp/cmake_modules/BuildUtils.cmake
++++ b/cpp/cmake_modules/BuildUtils.cmake
+@@ -766,6 +766,15 @@ function(ADD_TEST_CASE REL_TEST_NAME)
+ target_compile_definitions(${TEST_NAME} PRIVATE ${ARG_DEFINITIONS})
+ endif()
+
++ if(APPLE)
++ # With LTO, ld64 may internalize global symbols of executables, including
++ # the weak function-local statics that header-only libraries such as the
++ # OpenTelemetry API use as process-wide singletons. The test would then get
++ # its own copy instead of sharing the one in libarrow. -export_dynamic keeps
++ # them global so they are coalesced at load time.
++ target_link_options(${TEST_NAME} PRIVATE "LINKER:-export_dynamic")
++ endif()
++
+ if(ARROW_TEST_MEMCHECK AND NOT ARG_NO_VALGRIND)
+ add_test(${TEST_NAME}
+ bash