This is an automated email from the ASF dual-hosted git repository.
pitrou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 1c15d136b4 GH-32994: [Dev][Archery] Fix multi-arch Docker
configuration (#50125)
1c15d136b4 is described below
commit 1c15d136b4566890607a2d137474fbedab00a09d
Author: Antoine Pitrou <[email protected]>
AuthorDate: Wed Jun 10 14:37:45 2026 +0200
GH-32994: [Dev][Archery] Fix multi-arch Docker configuration (#50125)
### Rationale for this change
Our Archery docker setup had support for running foreign-arch containers
(for example a ARM64 container on a x86-64 native host, using emulation), but
it failed working at some point.
### Are these changes tested?
By existing CI runs, as well as locally (by running a couple ARM64
containers on a x86-64 native host).
### Are there any user-facing changes?
No.
* GitHub Issue: #32994
Authored-by: Antoine Pitrou <[email protected]>
Signed-off-by: Antoine Pitrou <[email protected]>
---
.github/workflows/cpp.yml | 2 +-
.github/workflows/cpp_extra.yml | 4 +-
.hadolint.yaml | 1 +
ci/docker/almalinux-10-verify-rc.dockerfile | 2 +-
ci/docker/almalinux-8-verify-rc.dockerfile | 2 +-
ci/docker/alpine-linux-3.22-cpp.dockerfile | 2 +-
ci/docker/alpine-linux-3.22-r.dockerfile | 2 +-
ci/docker/conda-cpp.dockerfile | 3 +-
ci/docker/conda-integration.dockerfile | 6 +-
ci/docker/conda-python-dask.dockerfile | 5 +-
ci/docker/conda-python-emscripten.dockerfile | 3 +-
ci/docker/conda-python-hdfs.dockerfile | 5 +-
ci/docker/conda-python-jpype.dockerfile | 5 +-
ci/docker/conda-python-pandas.dockerfile | 5 +-
ci/docker/conda-python-spark.dockerfile | 5 +-
ci/docker/conda-python.dockerfile | 3 +-
ci/docker/conda.dockerfile | 2 +-
ci/docker/debian-13-cpp.dockerfile | 3 +-
ci/docker/debian-experimental-cpp.dockerfile | 3 +-
ci/docker/fedora-42-cpp.dockerfile | 3 +-
ci/docker/fedora-42-r-clang.dockerfile | 2 +-
ci/docker/linux-apt-c-glib.dockerfile | 3 +-
ci/docker/linux-apt-python-3.dockerfile | 3 +-
ci/docker/linux-apt-r.dockerfile | 3 +-
ci/docker/linux-apt-ruby.dockerfile | 3 +-
ci/docker/linux-dnf-python-3.dockerfile | 3 +-
ci/docker/python-wheel-manylinux-test.dockerfile | 2 +-
ci/docker/ubuntu-22.04-cpp-minimal.dockerfile | 5 +-
ci/docker/ubuntu-22.04-cpp.dockerfile | 5 +-
ci/docker/ubuntu-22.04-verify-rc.dockerfile | 3 +-
ci/docker/ubuntu-24.04-cpp-minimal.dockerfile | 5 +-
ci/docker/ubuntu-24.04-cpp.dockerfile | 5 +-
ci/docker/ubuntu-24.04-verify-rc.dockerfile | 3 +-
compose.yaml | 321 ++++++++++++-----------
dev/archery/archery/docker/core.py | 4 +-
dev/tasks/python-wheels/github.linux.yml | 2 +-
36 files changed, 238 insertions(+), 200 deletions(-)
diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml
index 155133f6a9..a6ac94b4c3 100644
--- a/.github/workflows/cpp.yml
+++ b/.github/workflows/cpp.yml
@@ -96,7 +96,7 @@ jobs:
runs-on: ubuntu-latest
title: AMD64 Ubuntu 24.04 C++ ASAN UBSAN
ubuntu: 24.04
- - arch: arm64v8
+ - arch: arm64/v8
clang-tools: 18
image: ubuntu-cpp
llvm: 18
diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml
index e4e51608db..e14d4c7660 100644
--- a/.github/workflows/cpp_extra.yml
+++ b/.github/workflows/cpp_extra.yml
@@ -221,7 +221,7 @@ jobs:
platform:
- arch: "amd64"
runs-on: ubuntu-latest
- - arch: "arm64v8"
+ - arch: "arm64/v8"
runs-on: ubuntu-24.04-arm
env:
ARCH: ${{ matrix.platform.arch }}
@@ -584,7 +584,7 @@ jobs:
ARROW_BUILD_STATIC: OFF
ARROW_BUILD_TESTS: ON
ARROW_BUILD_TYPE: release
- # Turn Arrow CSV off to disable `find_package(Arrow)` check on MSVC CI.
+ # Turn Arrow CSV off to disable `find_package(Arrow)` check on MSVC CI.
# GH-49050 TODO: enable `find_package(Arrow)` check on MSVC CI.
ARROW_CSV: OFF
ARROW_DEPENDENCY_SOURCE: VCPKG
diff --git a/.hadolint.yaml b/.hadolint.yaml
index 6d326d7317..0eebc405e1 100644
--- a/.hadolint.yaml
+++ b/.hadolint.yaml
@@ -22,4 +22,5 @@ ignored:
- DL3018
- DL3028 # Ruby gem version pinning
- DL3007 # r-sanitizer must use latest
+ - DL3029 # Do not use --platform flag with FROM
- DL3041 # Specify version with `dnf install -y <package>-<version>`.
diff --git a/ci/docker/almalinux-10-verify-rc.dockerfile
b/ci/docker/almalinux-10-verify-rc.dockerfile
index efd77a86d1..099674d31d 100644
--- a/ci/docker/almalinux-10-verify-rc.dockerfile
+++ b/ci/docker/almalinux-10-verify-rc.dockerfile
@@ -16,7 +16,7 @@
# under the License.
ARG arch=amd64
-FROM ${arch}/almalinux:10
+FROM --platform=linux/${arch} almalinux:10
COPY dev/release/setup-rhel-rebuilds.sh /
RUN /setup-rhel-rebuilds.sh && \
diff --git a/ci/docker/almalinux-8-verify-rc.dockerfile
b/ci/docker/almalinux-8-verify-rc.dockerfile
index e9544e6bec..a07e0b27fb 100644
--- a/ci/docker/almalinux-8-verify-rc.dockerfile
+++ b/ci/docker/almalinux-8-verify-rc.dockerfile
@@ -16,7 +16,7 @@
# under the License.
ARG arch=amd64
-FROM ${arch}/almalinux:8
+FROM --platform=linux/${arch} almalinux:8
COPY dev/release/setup-rhel-rebuilds.sh /
RUN /setup-rhel-rebuilds.sh && \
diff --git a/ci/docker/alpine-linux-3.22-cpp.dockerfile
b/ci/docker/alpine-linux-3.22-cpp.dockerfile
index c3a2a58ef9..17073b3f26 100644
--- a/ci/docker/alpine-linux-3.22-cpp.dockerfile
+++ b/ci/docker/alpine-linux-3.22-cpp.dockerfile
@@ -16,7 +16,7 @@
# under the License.
ARG arch=amd64
-FROM ${arch}/alpine:3.22
+FROM --platform=linux/${arch} alpine:3.22
RUN apk add \
apache-orc-dev \
diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile
b/ci/docker/alpine-linux-3.22-r.dockerfile
index 887cb6445e..31ffddd29d 100644
--- a/ci/docker/alpine-linux-3.22-r.dockerfile
+++ b/ci/docker/alpine-linux-3.22-r.dockerfile
@@ -20,7 +20,7 @@
# Replicates CRAN's Alpine environment as closely as possible
ARG arch=amd64
-FROM ${arch}/alpine:3.22
+FROM --platform=linux/${arch} alpine:3.22
# Install R and essential build tools
# Note: bash is needed for Arrow CI scripts, even though CRAN's Alpine uses
BusyBox
diff --git a/ci/docker/conda-cpp.dockerfile b/ci/docker/conda-cpp.dockerfile
index a387fb2669..474c18a9ad 100644
--- a/ci/docker/conda-cpp.dockerfile
+++ b/ci/docker/conda-cpp.dockerfile
@@ -17,7 +17,8 @@
ARG repo
ARG arch
-FROM ${repo}:${arch}-conda
+ARG arch_short
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda
COPY ci/scripts/install_minio.sh /arrow/ci/scripts
RUN /arrow/ci/scripts/install_minio.sh latest /opt/conda
diff --git a/ci/docker/conda-integration.dockerfile
b/ci/docker/conda-integration.dockerfile
index 20ccd8f89e..272141b604 100644
--- a/ci/docker/conda-integration.dockerfile
+++ b/ci/docker/conda-integration.dockerfile
@@ -16,10 +16,10 @@
# under the License.
ARG repo
-ARG arch=amd64
-FROM ${repo}:${arch}-conda-cpp
+ARG arch
+ARG arch_short
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-cpp
-ARG arch=amd64
# We need to synchronize the following values with the values in .env
# and services.conda-integration in compose.yaml.
ARG maven=3.9.9
diff --git a/ci/docker/conda-python-dask.dockerfile
b/ci/docker/conda-python-dask.dockerfile
index 5317a64e01..6991f10086 100644
--- a/ci/docker/conda-python-dask.dockerfile
+++ b/ci/docker/conda-python-dask.dockerfile
@@ -16,9 +16,10 @@
# under the License.
ARG repo
-ARG arch=amd64
+ARG arch
+ARG arch_short
ARG python=3.10
-FROM ${repo}:${arch}-conda-python-${python}
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}
ARG dask=latest
COPY ci/scripts/install_dask.sh /arrow/ci/scripts/
diff --git a/ci/docker/conda-python-emscripten.dockerfile
b/ci/docker/conda-python-emscripten.dockerfile
index c56bf4f0c5..5154d8c419 100644
--- a/ci/docker/conda-python-emscripten.dockerfile
+++ b/ci/docker/conda-python-emscripten.dockerfile
@@ -17,8 +17,9 @@
ARG repo
ARG arch
+ARG arch_short
ARG python="3.12"
-FROM ${repo}:${arch}-conda-python-${python}
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}
ARG selenium_version="4.41.0"
ARG pyodide_version="0.26.0"
diff --git a/ci/docker/conda-python-hdfs.dockerfile
b/ci/docker/conda-python-hdfs.dockerfile
index 42db4d1ca4..263b38eaa5 100644
--- a/ci/docker/conda-python-hdfs.dockerfile
+++ b/ci/docker/conda-python-hdfs.dockerfile
@@ -16,9 +16,10 @@
# under the License.
ARG repo
-ARG arch=amd64
+ARG arch
+ARG arch_short
ARG python=3.10
-FROM ${repo}:${arch}-conda-python-${python}
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}
ARG jdk=11
ARG maven=3.9.9
diff --git a/ci/docker/conda-python-jpype.dockerfile
b/ci/docker/conda-python-jpype.dockerfile
index 639796f1b3..d5aa747b86 100644
--- a/ci/docker/conda-python-jpype.dockerfile
+++ b/ci/docker/conda-python-jpype.dockerfile
@@ -16,9 +16,10 @@
# under the License.
ARG repo
-ARG arch=amd64
+ARG arch
+ARG arch_short
ARG python=3.10
-FROM ${repo}:${arch}-conda-python-${python}
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}
ARG jdk=11
ARG maven=3.9.9
diff --git a/ci/docker/conda-python-pandas.dockerfile
b/ci/docker/conda-python-pandas.dockerfile
index 5a8ec7c6a8..e39650af82 100644
--- a/ci/docker/conda-python-pandas.dockerfile
+++ b/ci/docker/conda-python-pandas.dockerfile
@@ -16,9 +16,10 @@
# under the License.
ARG repo
-ARG arch=amd64
+ARG arch
+ARG arch_short
ARG python=3.10
-FROM ${repo}:${arch}-conda-python-${python}
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}
ARG pandas=latest
ARG numpy=latest
diff --git a/ci/docker/conda-python-spark.dockerfile
b/ci/docker/conda-python-spark.dockerfile
index 5765a59b43..89bc231aad 100644
--- a/ci/docker/conda-python-spark.dockerfile
+++ b/ci/docker/conda-python-spark.dockerfile
@@ -16,9 +16,10 @@
# under the License.
ARG repo
-ARG arch=amd64
+ARG arch
+ARG arch_short
ARG python=3.10
-FROM ${repo}:${arch}-conda-python-${python}
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}
ARG jdk=11
ARG maven=3.9.9
diff --git a/ci/docker/conda-python.dockerfile
b/ci/docker/conda-python.dockerfile
index 3127ee6edd..db40b1009f 100644
--- a/ci/docker/conda-python.dockerfile
+++ b/ci/docker/conda-python.dockerfile
@@ -17,7 +17,8 @@
ARG repo
ARG arch
-FROM ${repo}:${arch}-conda-cpp
+ARG arch_short
+FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-cpp
# install python specific packages
ARG python=3.10
diff --git a/ci/docker/conda.dockerfile b/ci/docker/conda.dockerfile
index 6492e761fd..fd34cd9801 100644
--- a/ci/docker/conda.dockerfile
+++ b/ci/docker/conda.dockerfile
@@ -16,7 +16,7 @@
# under the License.
ARG arch=amd64
-FROM ${arch}/ubuntu:22.04
+FROM --platform=linux/${arch} ubuntu:24.04
# install build essentials
RUN export DEBIAN_FRONTEND=noninteractive && \
diff --git a/ci/docker/debian-13-cpp.dockerfile
b/ci/docker/debian-13-cpp.dockerfile
index 951ee98e6a..552800888e 100644
--- a/ci/docker/debian-13-cpp.dockerfile
+++ b/ci/docker/debian-13-cpp.dockerfile
@@ -16,8 +16,7 @@
# under the License.
ARG arch=amd64
-FROM ${arch}/debian:13
-ARG arch
+FROM --platform=linux/${arch} debian:13
ENV DEBIAN_FRONTEND noninteractive
diff --git a/ci/docker/debian-experimental-cpp.dockerfile
b/ci/docker/debian-experimental-cpp.dockerfile
index 7e00378ea6..d349fcb1b7 100644
--- a/ci/docker/debian-experimental-cpp.dockerfile
+++ b/ci/docker/debian-experimental-cpp.dockerfile
@@ -16,8 +16,7 @@
# under the License.
ARG arch=amd64
-FROM ${arch}/debian:experimental
-ARG arch
+FROM --platform=linux/${arch} debian:experimental
ENV DEBIAN_FRONTEND noninteractive
diff --git a/ci/docker/fedora-42-cpp.dockerfile
b/ci/docker/fedora-42-cpp.dockerfile
index 9a8533688f..60e7dab678 100644
--- a/ci/docker/fedora-42-cpp.dockerfile
+++ b/ci/docker/fedora-42-cpp.dockerfile
@@ -16,8 +16,7 @@
# under the License.
ARG arch
-FROM ${arch}/fedora:42
-ARG arch
+FROM --platform=linux/${arch} fedora:42
# install dependencies
RUN dnf update -y && \
diff --git a/ci/docker/fedora-42-r-clang.dockerfile
b/ci/docker/fedora-42-r-clang.dockerfile
index 9bc970e060..57a0c6038d 100644
--- a/ci/docker/fedora-42-r-clang.dockerfile
+++ b/ci/docker/fedora-42-r-clang.dockerfile
@@ -20,7 +20,7 @@
# See:
https://www.stats.ox.ac.uk/pub/bdr/Rconfig/r-devel-linux-x86_64-fedora-clang
ARG arch=amd64
-FROM ${arch}/fedora:42
+FROM --platform=linux/${arch} fedora:42
# Install build dependencies
RUN dnf update -y && \
diff --git a/ci/docker/linux-apt-c-glib.dockerfile
b/ci/docker/linux-apt-c-glib.dockerfile
index 80742255b7..fbd7ee8031 100644
--- a/ci/docker/linux-apt-c-glib.dockerfile
+++ b/ci/docker/linux-apt-c-glib.dockerfile
@@ -15,8 +15,9 @@
# specific language governing permissions and limitations
# under the License.
+ARG arch
ARG base
-FROM ${base}
+FROM --platform=linux/${arch} ${base}
RUN apt-get update -y -q && \
apt-get install -y -q \
diff --git a/ci/docker/linux-apt-python-3.dockerfile
b/ci/docker/linux-apt-python-3.dockerfile
index d5e7bf0088..6a016423b7 100644
--- a/ci/docker/linux-apt-python-3.dockerfile
+++ b/ci/docker/linux-apt-python-3.dockerfile
@@ -15,8 +15,9 @@
# specific language governing permissions and limitations
# under the License.
+ARG arch
ARG base
-FROM ${base}
+FROM --platform=linux/${arch} ${base}
COPY python/requirements-build.txt \
python/requirements-test.txt \
diff --git a/ci/docker/linux-apt-r.dockerfile b/ci/docker/linux-apt-r.dockerfile
index 83a7b8b9ba..7809cf5542 100644
--- a/ci/docker/linux-apt-r.dockerfile
+++ b/ci/docker/linux-apt-r.dockerfile
@@ -15,8 +15,9 @@
# specific language governing permissions and limitations
# under the License.
+ARG arch
ARG base
-FROM ${base}
+FROM --platform=linux/${arch} ${base}
ARG tz="UTC"
ENV TZ=${tz}
diff --git a/ci/docker/linux-apt-ruby.dockerfile
b/ci/docker/linux-apt-ruby.dockerfile
index 58fd65bd57..9652751d75 100644
--- a/ci/docker/linux-apt-ruby.dockerfile
+++ b/ci/docker/linux-apt-ruby.dockerfile
@@ -16,8 +16,9 @@
# under the License.
# depends on a C GLib image
+ARG arch
ARG base
-FROM ${base}
+FROM --platform=linux/${arch} ${base}
COPY ruby/ /arrow/ruby/
RUN bundle install --gemfile /arrow/ruby/Gemfile
diff --git a/ci/docker/linux-dnf-python-3.dockerfile
b/ci/docker/linux-dnf-python-3.dockerfile
index 98f9f64885..6c89ebf5eb 100644
--- a/ci/docker/linux-dnf-python-3.dockerfile
+++ b/ci/docker/linux-dnf-python-3.dockerfile
@@ -15,8 +15,9 @@
# specific language governing permissions and limitations
# under the License.
+ARG arch
ARG base
-FROM ${base}
+FROM --platform=linux/${arch} ${base}
RUN dnf install -y \
python3 \
diff --git a/ci/docker/python-wheel-manylinux-test.dockerfile
b/ci/docker/python-wheel-manylinux-test.dockerfile
index 4b84117a1c..f79973d887 100644
--- a/ci/docker/python-wheel-manylinux-test.dockerfile
+++ b/ci/docker/python-wheel-manylinux-test.dockerfile
@@ -17,7 +17,7 @@
ARG arch
ARG python_image_tag
-FROM ${arch}/python:${python_image_tag}
+FROM --platform=linux/${arch} python:${python_image_tag}
# pandas doesn't provide wheel for aarch64 yet, so cache the compiled
# test dependencies in a docker image
diff --git a/ci/docker/ubuntu-22.04-cpp-minimal.dockerfile
b/ci/docker/ubuntu-22.04-cpp-minimal.dockerfile
index 80e97c440a..e77675b8a8 100644
--- a/ci/docker/ubuntu-22.04-cpp-minimal.dockerfile
+++ b/ci/docker/ubuntu-22.04-cpp-minimal.dockerfile
@@ -15,8 +15,9 @@
# specific language governing permissions and limitations
# under the License.
-ARG base=amd64/ubuntu:22.04
-FROM ${base}
+ARG arch=amd64
+ARG base=ubuntu:22.04
+FROM --platform=linux/${arch} ${base}
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
diff --git a/ci/docker/ubuntu-22.04-cpp.dockerfile
b/ci/docker/ubuntu-22.04-cpp.dockerfile
index 3572f156ba..f9966b7a8b 100644
--- a/ci/docker/ubuntu-22.04-cpp.dockerfile
+++ b/ci/docker/ubuntu-22.04-cpp.dockerfile
@@ -15,8 +15,9 @@
# specific language governing permissions and limitations
# under the License.
-ARG base=amd64/ubuntu:22.04
-FROM ${base}
+ARG arch=amd64
+ARG base=ubuntu:22.04
+FROM --platform=linux/${arch} ${base}
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
diff --git a/ci/docker/ubuntu-22.04-verify-rc.dockerfile
b/ci/docker/ubuntu-22.04-verify-rc.dockerfile
index b9f130d24e..596410a539 100644
--- a/ci/docker/ubuntu-22.04-verify-rc.dockerfile
+++ b/ci/docker/ubuntu-22.04-verify-rc.dockerfile
@@ -16,7 +16,8 @@
# under the License.
ARG arch=amd64
-FROM ${arch}/ubuntu:22.04
+ARG base=ubuntu:22.04
+FROM --platform=linux/${arch} ${base}
ENV DEBIAN_FRONTEND=noninteractive
COPY dev/release/setup-ubuntu.sh /
diff --git a/ci/docker/ubuntu-24.04-cpp-minimal.dockerfile
b/ci/docker/ubuntu-24.04-cpp-minimal.dockerfile
index 904cfa99df..4ba362f826 100644
--- a/ci/docker/ubuntu-24.04-cpp-minimal.dockerfile
+++ b/ci/docker/ubuntu-24.04-cpp-minimal.dockerfile
@@ -15,8 +15,9 @@
# specific language governing permissions and limitations
# under the License.
-ARG base=amd64/ubuntu:24.04
-FROM ${base}
+ARG arch=amd64
+ARG base=ubuntu:24.04
+FROM --platform=linux/${arch} ${base}
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
diff --git a/ci/docker/ubuntu-24.04-cpp.dockerfile
b/ci/docker/ubuntu-24.04-cpp.dockerfile
index 3798e08173..e7a3d47ebd 100644
--- a/ci/docker/ubuntu-24.04-cpp.dockerfile
+++ b/ci/docker/ubuntu-24.04-cpp.dockerfile
@@ -15,8 +15,9 @@
# specific language governing permissions and limitations
# under the License.
-ARG base=amd64/ubuntu:24.04
-FROM ${base}
+ARG arch=amd64
+ARG base=ubuntu:24.04
+FROM --platform=linux/${arch} ${base}
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
diff --git a/ci/docker/ubuntu-24.04-verify-rc.dockerfile
b/ci/docker/ubuntu-24.04-verify-rc.dockerfile
index 42d71afcb0..07714016a0 100644
--- a/ci/docker/ubuntu-24.04-verify-rc.dockerfile
+++ b/ci/docker/ubuntu-24.04-verify-rc.dockerfile
@@ -16,7 +16,8 @@
# under the License.
ARG arch=amd64
-FROM ${arch}/ubuntu:24.04
+ARG base=ubuntu:24.04
+FROM --platform=linux/${arch} ${base}
ENV DEBIAN_FRONTEND=noninteractive
COPY dev/release/setup-ubuntu.sh /
diff --git a/compose.yaml b/compose.yaml
index 4a4cf60cce..c13bd831ec 100644
--- a/compose.yaml
+++ b/compose.yaml
@@ -22,8 +22,8 @@
# defaults are set in .env file.
#
# Example:
-# $ ARCH=arm64v8 docker compose build ubuntu-cpp
-# $ ARCH=arm64v8 docker compose run ubuntu-cpp
+# $ ARCH=arm64/v8 docker compose build ubuntu-cpp
+# $ ARCH=arm64/v8 docker compose run ubuntu-cpp
#
#
# Coredumps
@@ -183,17 +183,17 @@ x-hierarchy:
volumes:
almalinux-ccache:
- name: ${ARCH}-almalinux-ccache
+ name: ${ARCH_SHORT}-almalinux-ccache
alpine-linux-ccache:
- name: ${ARCH}-alpine-linux-ccache
+ name: ${ARCH_SHORT}-alpine-linux-ccache
conda-ccache:
- name: ${ARCH}-conda-ccache
+ name: ${ARCH_SHORT}-conda-ccache
cpp-jni-ccache:
- name: ${ARCH}-cpp-jni-ccache
+ name: ${ARCH_SHORT}-cpp-jni-ccache
debian-ccache:
- name: ${ARCH}-debian-${DEBIAN}-ccache
+ name: ${ARCH_SHORT}-debian-${DEBIAN}-ccache
fedora-ccache:
- name: ${ARCH}-fedora-${FEDORA}-ccache
+ name: ${ARCH_SHORT}-fedora-${FEDORA}-ccache
maven-cache:
name: maven-cache
python-wheel-manylinux-2-28-ccache:
@@ -201,7 +201,7 @@ volumes:
python-wheel-musllinux-1-2-ccache:
name: python-wheel-musllinux-1-2-ccache
ubuntu-ccache:
- name: ${ARCH}-ubuntu-${UBUNTU}-ccache
+ name: ${ARCH_SHORT}-ubuntu-${UBUNTU}-ccache
services:
@@ -222,13 +222,13 @@ services:
# docker compose run --rm alpine-linux-cpp
# Parameters:
# ALPINE_LINUX: 3.22
- # ARCH: amd64, arm64v8, ...
- image: ${REPO}:${ARCH}-alpine-linux-${ALPINE_LINUX}-cpp
+ # ARCH: amd64, arm64/v8, ...
+ image: ${REPO}:${ARCH_SHORT}-alpine-linux-${ALPINE_LINUX}-cpp
build:
context: .
dockerfile: ci/docker/alpine-linux-${ALPINE_LINUX}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-alpine-linux-${ALPINE_LINUX}-cpp
+ - ${REPO}:${ARCH_SHORT}-alpine-linux-${ALPINE_LINUX}-cpp
args:
arch: ${ARCH}
shm_size: &shm-size 2G
@@ -253,13 +253,13 @@ services:
# docker compose build conda
# docker compose run --rm conda
# Parameters:
- # ARCH: amd64, arm32v7
- image: ${REPO}:${ARCH}-conda
+ # ARCH: amd64, arm/v7
+ image: ${REPO}:${ARCH_SHORT}-conda
build:
context: .
dockerfile: ci/docker/conda.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda
+ - ${REPO}:${ARCH_SHORT}-conda
args:
arch: ${ARCH}
volumes:
@@ -273,16 +273,17 @@ services:
# docker compose build conda-cpp
# docker compose run --rm conda-cpp
# Parameters:
- # ARCH: amd64, arm32v7
- image: ${REPO}:${ARCH}-conda-cpp
+ # ARCH: amd64, arm/v7
+ image: ${REPO}:${ARCH_SHORT}-conda-cpp
build:
context: .
dockerfile: ci/docker/conda-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-cpp
+ - ${REPO}:${ARCH_SHORT}-conda-cpp
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
shm_size: *shm-size
ulimits: *ulimits
environment:
@@ -308,16 +309,17 @@ services:
# docker compose build conda-cpp
# docker compose run --rm conda-cpp-valgrind
# Parameters:
- # ARCH: amd64, arm32v7
- image: ${REPO}:${ARCH}-conda-cpp
+ # ARCH: amd64, arm/v7
+ image: ${REPO}:${ARCH_SHORT}-conda-cpp
build:
context: .
dockerfile: ci/docker/conda-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-cpp
+ - ${REPO}:${ARCH_SHORT}-conda-cpp
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
shm_size: *shm-size
environment:
<<: [*common, *ccache, *sccache, *cpp]
@@ -344,14 +346,14 @@ services:
# docker compose build debian-cpp
# docker compose run --rm debian-cpp
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# DEBIAN: 12, experimental
- image: ${REPO}:${ARCH}-debian-${DEBIAN}-cpp
+ image: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-cpp
build:
context: .
dockerfile: ci/docker/debian-${DEBIAN}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-debian-${DEBIAN}-cpp
+ - ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-cpp
args:
arch: ${ARCH}
gcc: ${GCC}
@@ -375,17 +377,17 @@ services:
# docker compose build ubuntu-cpp
# docker compose run --rm ubuntu-cpp
# Parameters:
- # ARCH: amd64, arm64v8, s390x, ...
+ # ARCH: amd64, arm64/v8, s390x, ...
# UBUNTU: 22.04, 24.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
args:
arch: ${ARCH}
- base: "${ARCH}/ubuntu:${UBUNTU}"
+ base: "ubuntu:${UBUNTU}"
clang_tools: ${CLANG_TOOLS}
cmake: ${CMAKE}
gcc: ${GCC}
@@ -412,17 +414,17 @@ services:
# docker compose build ubuntu-cpp-static
# docker compose run --rm ubuntu-cpp-static
# Parameters:
- # ARCH: amd64, arm64v8, s390x, ...
+ # ARCH: amd64, arm64/v8, s390x, ...
# UBUNTU: 22.04, 24.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-static
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp-static
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-static
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp-static
args:
arch: ${ARCH}
- base: "${ARCH}/ubuntu:${UBUNTU}"
+ base: "ubuntu:${UBUNTU}"
clang_tools: ${CLANG_TOOLS}
cmake: ${CMAKE}
gcc: ${GCC}
@@ -451,15 +453,15 @@ services:
ubuntu-cpp-bundled:
# Arrow build with BUNDLED dependencies
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-minimal
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp-minimal
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp-minimal.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-minimal
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp-minimal
args:
arch: ${ARCH}
- base: "${ARCH}/ubuntu:${UBUNTU}"
+ base: "ubuntu:${UBUNTU}"
cmake: ${CMAKE}
llvm: ${LLVM}
shm_size: *shm-size
@@ -473,15 +475,15 @@ services:
ubuntu-cpp-bundled-offline:
# Arrow build with BUNDLED dependencies with downloaded dependencies.
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-minimal
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp-minimal
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp-minimal.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-minimal
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp-minimal
args:
arch: ${ARCH}
- base: "${ARCH}/ubuntu:${UBUNTU}"
+ base: "ubuntu:${UBUNTU}"
llvm: ${LLVM}
shm_size: *shm-size
ulimits: *ulimits
@@ -524,15 +526,15 @@ services:
ubuntu-cpp-minimal:
# Arrow build with minimal components/dependencies
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-minimal
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp-minimal
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp-minimal.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-minimal
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp-minimal
args:
arch: ${ARCH}
- base: "${ARCH}/ubuntu:${UBUNTU}"
+ base: "ubuntu:${UBUNTU}"
llvm: ${LLVM}
shm_size: *shm-size
ulimits: *ulimits
@@ -573,12 +575,12 @@ services:
# ARCH: amd64
# UBUNTU: 22.04, 24.04
# CUDA: <depends on your nvidia driver, should match system CUDA>
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp
args:
arch: ${ARCH}
base: nvidia/cuda:${CUDA}-devel-ubuntu${UBUNTU}
@@ -624,9 +626,9 @@ services:
# docker compose build ubuntu-cpp-sanitizer
# docker compose run --rm ubuntu-cpp-sanitizer
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# UBUNTU: 22.04, ...
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
cap_add:
# For LeakSanitizer
- SYS_PTRACE
@@ -634,7 +636,7 @@ services:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
args:
arch: ${ARCH}
clang_tools: ${CLANG_TOOLS}
@@ -673,14 +675,14 @@ services:
# docker compose build ubuntu-cpp-thread-sanitizer
# docker compose run --rm ubuntu-cpp-thread-sanitizer
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# UBUNTU: 22.04, 24.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
args:
arch: ${ARCH}
clang_tools: ${CLANG_TOOLS}
@@ -707,14 +709,14 @@ services:
# docker compose build ubuntu-cpp-emscripten
# docker compose run --rm ubuntu-cpp-emscripten
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# UBUNTU: 22.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
args:
arch: ${ARCH}
clang_tools: ${CLANG_TOOLS}
@@ -733,14 +735,14 @@ services:
# docker compose build fedora-cpp
# docker compose run --rm fedora-cpp
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# FEDORA: 42
- image: ${REPO}:${ARCH}-fedora-${FEDORA}-cpp
+ image: ${REPO}:${ARCH_SHORT}-fedora-${FEDORA}-cpp
build:
context: .
dockerfile: ci/docker/fedora-${FEDORA}-cpp.dockerfile
cache_from:
- - ${REPO}:${ARCH}-fedora-${FEDORA}-cpp
+ - ${REPO}:${ARCH_SHORT}-fedora-${FEDORA}-cpp
args:
arch: ${ARCH}
llvm: ${LLVM}
@@ -761,10 +763,10 @@ services:
# Usage:
# docker compose run --rm cpp-jni
# Parameters:
- # ARCH: amd64, arm64v8
+ # ARCH: amd64, arm64/v8
# ARCH_ALIAS: x86_64, aarch64
# ARCH_SHORT: amd64, arm64
- image: ${REPO}:${ARCH}-cpp-jni-${VCPKG}
+ image: ${REPO}:${ARCH_SHORT}-cpp-jni-${VCPKG}
build:
args:
arch: ${ARCH}
@@ -777,7 +779,7 @@ services:
context: .
dockerfile: ci/docker/cpp-jni.dockerfile
cache_from:
- - ${REPO}:${ARCH}-cpp-jni-${VCPKG}
+ - ${REPO}:${ARCH_SHORT}-cpp-jni-${VCPKG}
secrets: *vcpkg-build-secrets
environment:
<<: [*common, *ccache]
@@ -794,16 +796,17 @@ services:
# docker compose build debian-c-glib
# docker compose run --rm debian-c-glib
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# DEBIAN: 12
- image: ${REPO}:${ARCH}-debian-${DEBIAN}-c-glib
+ image: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-c-glib
build:
context: .
dockerfile: ci/docker/linux-apt-c-glib.dockerfile
cache_from:
- - ${REPO}:${ARCH}-debian-${DEBIAN}-c-glib
+ - ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-c-glib
args:
- base: ${REPO}:${ARCH}-debian-${DEBIAN}-cpp
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-cpp
shm_size: *shm-size
ulimits: *ulimits
environment:
@@ -822,16 +825,17 @@ services:
# docker compose build ubuntu-c-glib
# docker compose run --rm ubuntu-c-glib
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# UBUNTU: 22.04, 24.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-c-glib
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-c-glib
build:
context: .
dockerfile: ci/docker/linux-apt-c-glib.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-c-glib
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-c-glib
args:
- base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
shm_size: *shm-size
ulimits: *ulimits
environment:
@@ -852,16 +856,17 @@ services:
# docker compose build debian-ruby
# docker compose run --rm debian-ruby
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# DEBIAN: 12
- image: ${REPO}:${ARCH}-debian-${DEBIAN}-ruby
+ image: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-ruby
build:
context: .
dockerfile: ci/docker/linux-apt-ruby.dockerfile
cache_from:
- - ${REPO}:${ARCH}-debian-${DEBIAN}-ruby
+ - ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-ruby
args:
- base: ${REPO}:${ARCH}-debian-${DEBIAN}-c-glib
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-c-glib
shm_size: *shm-size
ulimits: *ulimits
environment:
@@ -882,16 +887,17 @@ services:
# docker compose build ubuntu-ruby
# docker compose run --rm ubuntu-ruby
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# UBUNTU: 22.04, 24.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-ruby
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-ruby
build:
context: .
dockerfile: ci/docker/linux-apt-ruby.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-ruby
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-ruby
args:
- base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-c-glib
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-c-glib
shm_size: *shm-size
ulimits: *ulimits
environment:
@@ -908,17 +914,18 @@ services:
# docker compose build conda-python
# docker compose run --rm conda-python
# Parameters:
- # ARCH: amd64, arm32v7
+ # ARCH: amd64, arm/v7
# PYTHON: 3.10, 3.11, 3.12, 3.13
- image: ${REPO}:${ARCH}-conda-python-${PYTHON}
+ image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}
build:
context: .
dockerfile: ci/docker/conda-python.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-python-${PYTHON}
+ - ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
python: ${PYTHON}
shm_size: *shm-size
environment:
@@ -936,17 +943,18 @@ services:
# docker compose build conda-python-emscripten
# docker compose run --rm conda-python-emscripten
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# UBUNTU: 22.04
- image: ${REPO}:${ARCH}-conda-python-emscripten
+ image: ${REPO}:${ARCH_SHORT}-conda-python-emscripten
build:
context: .
dockerfile: ci/docker/conda-python-emscripten.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-python-${PYTHON}
+ - ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
clang_tools: ${CLANG_TOOLS}
llvm: ${LLVM}
pyodide_version: "0.26.0"
@@ -974,14 +982,15 @@ services:
# UBUNTU: 22.04, 24.04
# NUMBA: master, latest, <version>
# NUMBA_CUDA: master, latest, <version>
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-python-3
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cuda-${CUDA}-python-3
build:
context: .
dockerfile: ci/docker/linux-apt-python-3.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-python-3
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cuda-${CUDA}-python-3
args:
- base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp
numba: ${NUMBA}
numba_cuda: ${NUMBA_CUDA}
cuda: ${CUDA}
@@ -1021,16 +1030,17 @@ services:
# docker compose build debian-python
# docker compose run --rm debian-python
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# DEBIAN: 12
- image: ${REPO}:${ARCH}-debian-${DEBIAN}-python-3
+ image: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-python-3
build:
context: .
dockerfile: ci/docker/linux-apt-python-3.dockerfile
cache_from:
- - ${REPO}:${ARCH}-debian-${DEBIAN}-python-3
+ - ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-python-3
args:
- base: ${REPO}:${ARCH}-debian-${DEBIAN}-cpp
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-cpp
shm_size: *shm-size
environment:
<<: [*common, *ccache]
@@ -1043,16 +1053,17 @@ services:
# docker compose build ubuntu-python
# docker compose run --rm ubuntu-python
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# UBUNTU: 22.04, 24.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-python-3
build:
context: .
dockerfile: ci/docker/linux-apt-python-3.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-python-3
args:
- base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
shm_size: *shm-size
environment:
<<: [*common, *ccache]
@@ -1065,16 +1076,17 @@ services:
# docker compose build fedora-python
# docker compose run --rm fedora-python
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# FEDORA: 42
- image: ${REPO}:${ARCH}-fedora-${FEDORA}-python-3
+ image: ${REPO}:${ARCH_SHORT}-fedora-${FEDORA}-python-3
build:
context: .
dockerfile: ci/docker/linux-dnf-python-3.dockerfile
cache_from:
- - ${REPO}:${ARCH}-fedora-${FEDORA}-python-3
+ - ${REPO}:${ARCH_SHORT}-fedora-${FEDORA}-python-3
args:
- base: ${REPO}:${ARCH}-fedora-${FEDORA}-cpp
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-fedora-${FEDORA}-cpp
shm_size: *shm-size
environment:
<<: [*common, *ccache]
@@ -1107,17 +1119,18 @@ services:
# docker compose build ubuntu-python-sdist-test
# docker compose run --rm ubuntu-python-sdist-test
# Parameters:
- # ARCH: amd64, arm64v8, ...
+ # ARCH: amd64, arm64/v8, ...
# PYARROW_VERSION: The test target pyarrow version such as "3.0.0"
# UBUNTU: 22.04, 24.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-python-3
build:
context: .
dockerfile: ci/docker/linux-apt-python-3.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-python-3
args:
- base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ arch: ${ARCH}
+ base: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
shm_size: *shm-size
environment:
<<: [*common, *ccache]
@@ -1136,7 +1149,7 @@ services:
# See available versions at:
# https://quay.io/repository/pypa/manylinux_2_28_x86_64?tab=tags
python-wheel-manylinux-2-28:
- image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2-28-vcpkg-${VCPKG}
+ image:
${REPO}:${ARCH_SHORT}-python-${PYTHON}-wheel-manylinux-2-28-vcpkg-${VCPKG}
build:
args:
arch: ${ARCH}
@@ -1149,7 +1162,7 @@ services:
context: .
dockerfile: ci/docker/python-wheel-manylinux.dockerfile
cache_from:
- - ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2-28-vcpkg-${VCPKG}
+ -
${REPO}:${ARCH_SHORT}-python-${PYTHON}-wheel-manylinux-2-28-vcpkg-${VCPKG}
secrets: *vcpkg-build-secrets
environment:
<<: [*common, *ccache]
@@ -1161,7 +1174,7 @@ services:
# See available versions at:
# https://quay.io/repository/pypa/musllinux_1_2_x86_64?tab=tags
python-wheel-musllinux-1-2:
- image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-musllinux-1-2-vcpkg-${VCPKG}
+ image:
${REPO}:${ARCH_SHORT}-python-${PYTHON}-wheel-musllinux-1-2-vcpkg-${VCPKG}
build:
args:
arch: ${ARCH}
@@ -1174,7 +1187,7 @@ services:
context: .
dockerfile: ci/docker/python-wheel-musllinux.dockerfile
cache_from:
- - ${REPO}:${ARCH}-python-${PYTHON}-wheel-musllinux-1-2-vcpkg-${VCPKG}
+ -
${REPO}:${ARCH_SHORT}-python-${PYTHON}-wheel-musllinux-1-2-vcpkg-${VCPKG}
secrets: *vcpkg-build-secrets
environment:
<<: [ *common, *ccache ]
@@ -1202,17 +1215,17 @@ services:
# TODO: Remove this when the official Docker Python image supports the
free-threaded build.
# See https://github.com/docker-library/python/issues/947 for more info.
python-free-threaded-wheel-musllinux-test-imports:
- image:
${REPO}:${ARCH}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-musllinux-test-imports
+ image:
${REPO}:${ARCH_SHORT}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-musllinux-test-imports
build:
args:
- base: "${ARCH}/alpine:${ALPINE_LINUX}"
+ base: "alpine:${ALPINE_LINUX}"
python_version: ${PYTHON}
build_date: "20260510" # python-build-standalone release date
arch: ${ARCH_ALIAS}
context: .
dockerfile:
ci/docker/python-free-threaded-wheel-musllinux-test-imports.dockerfile
cache_from:
- -
${REPO}:${ARCH}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-musllinux-test-imports
+ -
${REPO}:${ARCH_SHORT}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-musllinux-test-imports
shm_size: 2G
volumes:
- .:/arrow:delegated
@@ -1224,7 +1237,7 @@ services:
command: /arrow/ci/scripts/python_wheel_unix_test.sh /arrow
python-wheel-musllinux-test-unittests:
- image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-musllinux-test
+ image: ${REPO}:${ARCH_SHORT}-python-${PYTHON}-wheel-musllinux-test
build:
args:
alpine_linux: ${ALPINE_LINUX}
@@ -1232,7 +1245,7 @@ services:
context: .
dockerfile: ci/docker/python-wheel-musllinux-test.dockerfile
cache_from:
- - ${REPO}:${ARCH}-python-${PYTHON}-wheel-musllinux-test
+ - ${REPO}:${ARCH_SHORT}-python-${PYTHON}-wheel-musllinux-test
shm_size: 2G
volumes:
- .:/arrow:delegated
@@ -1246,17 +1259,17 @@ services:
# TODO: Remove this when the official Docker Python image supports the
free-threaded build.
# See https://github.com/docker-library/python/issues/947 for more info.
python-free-threaded-wheel-musllinux-test-unittests:
- image:
${REPO}:${ARCH}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-musllinux-test-unittests
+ image:
${REPO}:${ARCH_SHORT}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-musllinux-test-unittests
build:
args:
- base: "${ARCH}/alpine:${ALPINE_LINUX}"
+ base: "alpine:${ALPINE_LINUX}"
python_version: ${PYTHON}
build_date: "20260510" # python-build-standalone release date
arch: ${ARCH_ALIAS}
context: .
dockerfile:
ci/docker/python-free-threaded-wheel-musllinux-test-unittests.dockerfile
cache_from:
- -
${REPO}:${ARCH}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-musllinux-test-unittests
+ -
${REPO}:${ARCH_SHORT}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-musllinux-test-unittests
shm_size: 2G
volumes:
- .:/arrow:delegated
@@ -1268,7 +1281,8 @@ services:
command: /arrow/ci/scripts/python_wheel_unix_test.sh /arrow
python-wheel-manylinux-test-imports:
- image: ${ARCH}/python:${PYTHON_IMAGE_TAG}
+ image: python:${PYTHON_IMAGE_TAG}
+ platform: linux/${ARCH}
shm_size: 2G
volumes:
- .:/arrow:delegated
@@ -1282,15 +1296,15 @@ services:
# TODO: Remove this when the official Docker Python image supports the
free-threaded build.
# See https://github.com/docker-library/python/issues/947 for more info.
python-free-threaded-wheel-manylinux-test-imports:
- image:
${REPO}:${ARCH}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-manylinux-test-imports
+ image:
${REPO}:${ARCH_SHORT}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-manylinux-test-imports
build:
args:
- base: "${ARCH}/ubuntu:${UBUNTU}"
+ base: "ubuntu:${UBUNTU}"
python_version: ${PYTHON}
context: .
dockerfile:
ci/docker/python-free-threaded-wheel-manylinux-test-imports.dockerfile
cache_from:
- -
${REPO}:${ARCH}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-manylinux-test-imports
+ -
${REPO}:${ARCH_SHORT}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-manylinux-test-imports
shm_size: 2G
volumes:
- .:/arrow:delegated
@@ -1302,7 +1316,7 @@ services:
command: /arrow/ci/scripts/python_wheel_unix_test.sh /arrow
python-wheel-manylinux-test-unittests:
- image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-test
+ image: ${REPO}:${ARCH_SHORT}-python-${PYTHON}-wheel-manylinux-test
build:
args:
arch: ${ARCH}
@@ -1311,7 +1325,7 @@ services:
context: .
dockerfile: ci/docker/python-wheel-manylinux-test.dockerfile
cache_from:
- - ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-test
+ - ${REPO}:${ARCH_SHORT}-python-${PYTHON}-wheel-manylinux-test
shm_size: 2G
volumes:
- .:/arrow:delegated
@@ -1325,15 +1339,15 @@ services:
# TODO: Remove this when the official Docker Python image supports the
free-threaded build.
# See https://github.com/docker-library/python/issues/947 for more info.
python-free-threaded-wheel-manylinux-test-unittests:
- image:
${REPO}:${ARCH}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-manylinux-test-unittests
+ image:
${REPO}:${ARCH_SHORT}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-manylinux-test-unittests
build:
args:
- base: "${ARCH}/ubuntu:${UBUNTU}"
+ base: "ubuntu:${UBUNTU}"
python_version: ${PYTHON}
context: .
dockerfile:
ci/docker/python-free-threaded-wheel-manylinux-test-unittests.dockerfile
cache_from:
- -
${REPO}:${ARCH}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-manylinux-test-unittests
+ -
${REPO}:${ARCH_SHORT}-python-${PYTHON_IMAGE_TAG}-free-threaded-wheel-manylinux-test-unittests
shm_size: 2G
volumes:
- .:/arrow:delegated
@@ -1436,15 +1450,16 @@ services:
# docker compose build conda-python
# docker compose build conda-python-pandas
# docker compose run --rm conda-python-pandas
- image: ${REPO}:${ARCH}-conda-python-${PYTHON}-pandas-${PANDAS}
+ image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-pandas-${PANDAS}
build:
context: .
dockerfile: ci/docker/conda-python-pandas.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-python-${PYTHON}-pandas-${PANDAS}
+ - ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-pandas-${PANDAS}
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
python: ${PYTHON}
numpy: ${NUMPY}
pandas: ${PANDAS}
@@ -1466,15 +1481,16 @@ services:
# docker compose build conda-python
# docker compose build conda-python-no-numpy
# docker compose run --rm conda-python-no-numpy
- image: ${REPO}:${ARCH}-conda-python-${PYTHON}-no-numpy
+ image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-no-numpy
build:
context: .
dockerfile: ci/docker/conda-python.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-python-${PYTHON}
+ - ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
python: ${PYTHON}
shm_size: *shm-size
environment:
@@ -1497,7 +1513,7 @@ services:
# Only a single rule is enabled for now to check undocumented arguments.
# We should extend the list of enabled rules after adding this build to
# the CI pipeline.
- image: ${REPO}:${ARCH}-conda-python-${PYTHON}-pandas-${PANDAS}
+ image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-pandas-${PANDAS}
cap_add:
- SYS_ADMIN
environment:
@@ -1529,15 +1545,16 @@ services:
# docker compose build conda-python
# docker compose build conda-python-dask
# docker compose run --rm conda-python-dask
- image: ${REPO}:${ARCH}-conda-python-${PYTHON}-dask-${DASK}
+ image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-dask-${DASK}
build:
context: .
dockerfile: ci/docker/conda-python-dask.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-python-${PYTHON}-dask-${DASK}
+ - ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-dask-${DASK}
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
python: ${PYTHON}
dask: ${DASK}
shm_size: *shm-size
@@ -1556,15 +1573,16 @@ services:
# docker compose build conda-python
# docker compose build conda-python-cpython-debug
# docker compose run --rm conda-python-cpython-debug
- image: ${REPO}:${ARCH}-conda-python-${PYTHON}-cpython-debug
+ image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-cpython-debug
build:
context: .
dockerfile: ci/docker/conda-python-cpython-debug.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-python-${PYTHON}-cpython-debug
+ - ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-cpython-debug
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
python: ${PYTHON}
shm_size: *shm-size
environment:
@@ -1580,15 +1598,15 @@ services:
# docker compose build ubuntu-cpp
# docker compose build ubuntu-r
# docker compose run ubuntu-r
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-r-${R}
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-r-${R}
build:
context: .
dockerfile: ci/docker/linux-apt-r.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-r-${R}
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-r-${R}
args:
arch: ${ARCH}
- base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
+ base: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-cpp
gcc: ${GCC}
r: ${R}
r_duckdb_dev: ${R_DUCKDB_DEV:-}
@@ -1747,13 +1765,13 @@ services:
# Parameters:
# ALPINE_LINUX: 3.22
# R: 4.5 (Alpine's R version)
- # ARCH: amd64, arm64v8, ...
- image: ${REPO}:${ARCH}-alpine-linux-${ALPINE_LINUX}-r
+ # ARCH: amd64, arm64/v8, ...
+ image: ${REPO}:${ARCH_SHORT}-alpine-linux-${ALPINE_LINUX}-r
build:
context: .
dockerfile: ci/docker/alpine-linux-${ALPINE_LINUX}-r.dockerfile
cache_from:
- - ${REPO}:${ARCH}-alpine-linux-${ALPINE_LINUX}-r
+ - ${REPO}:${ARCH_SHORT}-alpine-linux-${ALPINE_LINUX}-r
args:
arch: ${ARCH}
shm_size: *shm-size
@@ -1780,12 +1798,12 @@ services:
# Parameters:
# FEDORA: 42
# ARCH: amd64
- image: ${REPO}:${ARCH}-fedora-${FEDORA}-r-clang
+ image: ${REPO}:${ARCH_SHORT}-fedora-${FEDORA}-r-clang
build:
context: .
dockerfile: ci/docker/fedora-${FEDORA}-r-clang.dockerfile
cache_from:
- - ${REPO}:${ARCH}-fedora-${FEDORA}-r-clang
+ - ${REPO}:${ARCH_SHORT}-fedora-${FEDORA}-r-clang
args:
arch: ${ARCH}
shm_size: *shm-size
@@ -1807,15 +1825,16 @@ services:
# docker compose build conda-cpp
# docker compose build conda-integration
# docker compose run conda-integration
- image: ${REPO}:${ARCH}-conda-integration
+ image: ${REPO}:${ARCH_SHORT}-conda-integration
build:
context: .
dockerfile: ci/docker/conda-integration.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-integration
+ - ${REPO}:${ARCH_SHORT}-conda-integration
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
# Use a newer JDK as it seems to improve stability
jdk: 17
maven: ${MAVEN}
@@ -1843,16 +1862,16 @@ services:
# docker compose build debian-python
# docker compose build debian-docs
# docker compose run --rm debian-docs
- image: ${REPO}:${ARCH}-debian-${DEBIAN}-docs
+ image: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-docs
build:
context: .
dockerfile: ci/docker/linux-apt-docs.dockerfile
cache_from:
- - ${REPO}:${ARCH}-debian-${DEBIAN}-docs
+ - ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-docs
args:
r: ${R}
node: ${NODE}
- base: ${REPO}:${ARCH}-debian-${DEBIAN}-python-3
+ base: ${REPO}:${ARCH_SHORT}-debian-${DEBIAN}-python-3
# This is for Chromium used by Mermaid. Chromium uses namespace
# isolation for security by default.
cap_add:
@@ -1919,15 +1938,16 @@ services:
# docker compose build conda-python
# docker compose build conda-python-hdfs
# docker compose run conda-python-hdfs
- image: ${REPO}:${ARCH}-conda-python-${PYTHON}-hdfs-${HDFS}
+ image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-hdfs-${HDFS}
build:
context: .
dockerfile: ci/docker/conda-python-hdfs.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-python-${PYTHON}-hdfs-${HDFS}
+ - ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-hdfs-${HDFS}
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
python: ${PYTHON}
jdk: ${JDK}
maven: ${MAVEN}
@@ -1960,15 +1980,16 @@ services:
# docker compose build conda-python
# docker compose build conda-python-spark
# docker compose run conda-python-spark
- image: ${REPO}:${ARCH}-conda-python-${PYTHON}-spark-${SPARK}
+ image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-spark-${SPARK}
build:
context: .
dockerfile: ci/docker/conda-python-spark.dockerfile
cache_from:
- - ${REPO}:${ARCH}-conda-python-${PYTHON}-spark-${SPARK}
+ - ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}-spark-${SPARK}
args:
repo: ${REPO}
arch: ${ARCH}
+ arch_short: ${ARCH_SHORT}
python: ${PYTHON}
jdk: ${JDK}
maven: ${MAVEN}
@@ -2011,12 +2032,12 @@ services:
# docker compose run -e VERIFY_VERSION=6.0.1 -e VERIFY_RC=1
almalinux-verify-rc
# Parameters:
# ALMALINUX: 8
- image: ${REPO}:${ARCH}-almalinux-${ALMALINUX}-verify-rc
+ image: ${REPO}:${ARCH_SHORT}-almalinux-${ALMALINUX}-verify-rc
build:
context: .
dockerfile: ci/docker/almalinux-${ALMALINUX}-verify-rc.dockerfile
cache_from:
- - ${REPO}:${ARCH}-almalinux-${ALMALINUX}-verify-rc
+ - ${REPO}:${ARCH_SHORT}-almalinux-${ALMALINUX}-verify-rc
args:
repo: ${REPO}
arch: ${ARCH}
@@ -2040,12 +2061,12 @@ services:
# docker compose run -e VERIFY_VERSION=6.0.1 -e VERIFY_RC=1
ubuntu-verify-rc
# Parameters:
# UBUNTU: 22.04, 24.04
- image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-verify-rc
+ image: ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-verify-rc
build:
context: .
dockerfile: ci/docker/ubuntu-${UBUNTU}-verify-rc.dockerfile
cache_from:
- - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-verify-rc
+ - ${REPO}:${ARCH_SHORT}-ubuntu-${UBUNTU}-verify-rc
args:
arch: ${ARCH}
cmake: ${CMAKE}
diff --git a/dev/archery/archery/docker/core.py
b/dev/archery/archery/docker/core.py
index bfb1e89f98..80658629e6 100644
--- a/dev/archery/archery/docker/core.py
+++ b/dev/archery/archery/docker/core.py
@@ -45,11 +45,11 @@ def flatten(node, parents=None):
_arch_short_mapping = {
- 'arm64v8': 'arm64',
+ 'arm64/v8': 'arm64',
}
_arch_alias_mapping = {
'amd64': 'x86_64',
- 'arm64v8': 'aarch64',
+ 'arm64/v8': 'aarch64',
}
diff --git a/dev/tasks/python-wheels/github.linux.yml
b/dev/tasks/python-wheels/github.linux.yml
index df5648f9e9..e211343953 100644
--- a/dev/tasks/python-wheels/github.linux.yml
+++ b/dev/tasks/python-wheels/github.linux.yml
@@ -38,7 +38,7 @@ jobs:
{% if arch == "amd64" %}
ARCH: amd64
{% else %}
- ARCH: arm64v8
+ ARCH: arm64/v8
{% endif %}
PYTHON: "{{ python_version }}"
PYTHON_ABI_TAG: "{{ python_abi_tag }}"