From ca514ccea4773d63ac0369fe1e97e37e3daaeadb Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 3 Nov 2025 11:26:27 -0500 Subject: [PATCH 01/24] Add Alpine Linux R Dockerfile --- ci/docker/alpine-linux-3.22-r.dockerfile | 65 ++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 ci/docker/alpine-linux-3.22-r.dockerfile diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile new file mode 100644 index 000000000000..954c23b2d108 --- /dev/null +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -0,0 +1,65 @@ +# 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. + +# Minimal Alpine Linux container with R for testing Arrow R package +# on musl libc (CRAN runs checks on Alpine Linux 3.22) +# Replicates CRAN's Alpine environment as closely as possible + +ARG arch=amd64 +FROM ${arch}/alpine:3.22 + +# Install R and essential build tools +# Keep minimal to match CRAN's setup (no bash - CRAN uses BusyBox) +RUN apk add \ + R \ + R-dev \ + R-doc \ + cmake \ + curl-dev \ + g++ \ + gcc \ + git \ + make \ + musl-locales \ + openssl-dev \ + pkgconfig \ + re2-dev \ + zlib-dev && \ + rm -rf /var/cache/apk/* && \ + ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ + echo "Etc/UTC" > /etc/timezone + +# Set locale and timezone +ENV LANG=C.UTF-8 \ + LC_COLLATE=C \ + MUSL_LOCPATH=/usr/share/i18n/locales/musl + +# Set CRAN repo +RUN echo 'options(repos = c(CRAN = "https://cran.rstudio.com"))' >> /usr/lib/R/etc/Rprofile.site + +# Install pak for package management (following rhub pattern) +RUN R -q -e 'install.packages("pak", repos = sprintf("https://r-lib.github.io/p/pak/%s/%s/%s/%s", "devel", .Platform$pkgType, R.Version()$os, R.Version()$arch))' + +# Enable automatic system requirements installation +ENV PKG_SYSREQS=true \ + R_PKG_SYSREQS2=true + +# Set up parallel compilation +RUN echo "MAKEFLAGS=-j$(R -s -e 'cat(parallel::detectCores())')" >> /usr/lib/R/etc/Renviron.site + +# Verify R works and this is musl +RUN R --version && ldd --version 2>&1 | grep -q musl From 786095df9466690010870f231964e42cae1fa4fb Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 3 Nov 2025 11:27:24 -0500 Subject: [PATCH 02/24] Remove RE2 --- ci/docker/alpine-linux-3.22-r.dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index 954c23b2d108..ace3ebf8089f 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -37,7 +37,6 @@ RUN apk add \ musl-locales \ openssl-dev \ pkgconfig \ - re2-dev \ zlib-dev && \ rm -rf /var/cache/apk/* && \ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ From a9b2fad38caa9ad420f45a75f44c0d2ab21495a4 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 3 Nov 2025 11:35:23 -0500 Subject: [PATCH 03/24] Add more docker CI boilerpate --- compose.yaml | 29 +++++++++++++++++++++++++++++ dev/tasks/tasks.yml | 6 ++++++ 2 files changed, 35 insertions(+) diff --git a/compose.yaml b/compose.yaml index e83f1446cd4c..25a334211c79 100644 --- a/compose.yaml +++ b/compose.yaml @@ -246,6 +246,35 @@ services: /arrow/ci/scripts/cpp_build.sh /arrow /build && /arrow/ci/scripts/cpp_test.sh /arrow /build" + alpine-linux-r: + # Usage: + # docker compose build alpine-linux-r + # docker compose run alpine-linux-r + # Tests R package installation on musl (Alpine Linux) for CRAN checks. + # R package builds C++ from source (bundled RE2 2023-03-01 supports musl). + # Parameters: + # ALPINE_LINUX: 3.22 + # R: 4.5 (Alpine's R version) + # ARCH: amd64, arm64v8, ... + image: ${REPO}:${ARCH}-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 + args: + arch: ${ARCH} + shm_size: *shm-size + environment: + <<: [*common, *sccache] + LIBARROW_BINARY: "false" + ARROW_SOURCE_HOME: "/arrow" + ARROW_R_DEV: "TRUE" + ARROW_USE_PKG_CONFIG: "false" + volumes: + - .:/arrow:delegated + command: /arrow/ci/scripts/r_test.sh /arrow + conda: # Base image for conda builds. # diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml index e2bd5c6d8e5a..c5032f2e91cf 100644 --- a/dev/tasks/tasks.yml +++ b/dev/tasks/tasks.yml @@ -669,6 +669,12 @@ tasks: ci: github template: r/github.linux.cran.yml + test-r-alpine-linux: + ci: github + template: docker-tests/github.linux.yml + params: + image: alpine-linux-r + test-r-macos-as-cran: ci: github template: r/github.macos.cran.yml From 1266ee266d630ab70e0e96c0c49a9f3d0030294a Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 3 Nov 2025 11:50:48 -0500 Subject: [PATCH 04/24] Add stuff to actually install Arrow --- ci/docker/alpine-linux-3.22-r.dockerfile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index ace3ebf8089f..bd67d72e0a14 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -60,5 +60,22 @@ ENV PKG_SYSREQS=true \ # Set up parallel compilation RUN echo "MAKEFLAGS=-j$(R -s -e 'cat(parallel::detectCores())')" >> /usr/lib/R/etc/Renviron.site +# Configure image and install Arrow-specific tooling +COPY ci/scripts/r_docker_configure.sh /arrow/ci/scripts/ +COPY ci/etc/rprofile /arrow/ci/etc/ +COPY ci/scripts/r_install_system_dependencies.sh /arrow/ci/scripts/ +COPY ci/scripts/install_minio.sh /arrow/ci/scripts/ +COPY ci/scripts/install_gcs_testbench.sh /arrow/ci/scripts/ +RUN /arrow/ci/scripts/r_docker_configure.sh + +# Install sccache +COPY ci/scripts/install_sccache.sh /arrow/ci/scripts/ +RUN /arrow/ci/scripts/install_sccache.sh unknown-linux-musl /usr/local/bin + +# Install R package dependencies +COPY ci/scripts/r_deps.sh /arrow/ci/scripts/ +COPY r/DESCRIPTION /arrow/r/ +RUN /arrow/ci/scripts/r_deps.sh /arrow + # Verify R works and this is musl RUN R --version && ldd --version 2>&1 | grep -q musl From 1f3482054fa159ca33fcb2b103da3c0ed54a9602 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 3 Nov 2025 12:09:47 -0500 Subject: [PATCH 05/24] Add image to compose file --- compose.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/compose.yaml b/compose.yaml index 25a334211c79..cd948aa53142 100644 --- a/compose.yaml +++ b/compose.yaml @@ -114,6 +114,7 @@ x-hierarchy: # service entry, so any new image/service must be listed here. - almalinux-verify-rc - alpine-linux-cpp + - alpine-linux-r - centos-cpp-static - conda: - conda-cpp: From 4282113d4e51b1cb17c8d65e21fb3801e1ce9c0d Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 3 Nov 2025 12:24:52 -0500 Subject: [PATCH 06/24] Add bash --- ci/docker/alpine-linux-3.22-r.dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index bd67d72e0a14..5a6206a2da2a 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -23,11 +23,12 @@ ARG arch=amd64 FROM ${arch}/alpine:3.22 # Install R and essential build tools -# Keep minimal to match CRAN's setup (no bash - CRAN uses BusyBox) +# Note: bash is needed for Arrow CI scripts, even though CRAN's Alpine uses BusyBox RUN apk add \ R \ R-dev \ R-doc \ + bash \ cmake \ curl-dev \ g++ \ From 0e3a348accf4366e49387020d950ad6a8f1e75aa Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Sat, 29 Nov 2025 09:31:15 +0000 Subject: [PATCH 07/24] Add alpine-specific commands --- ci/scripts/r_docker_configure.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/ci/scripts/r_docker_configure.sh b/ci/scripts/r_docker_configure.sh index 3039291ebbd8..b42b444e0b5a 100755 --- a/ci/scripts/r_docker_configure.sh +++ b/ci/scripts/r_docker_configure.sh @@ -39,6 +39,8 @@ elif [ "`which yum`" ]; then PACKAGE_MANAGER=yum elif [ "`which zypper`" ]; then PACKAGE_MANAGER=zypper +elif [ "`which apk`" ]; then + PACKAGE_MANAGER=apk else PACKAGE_MANAGER=apt-get apt-get update --allow-releaseinfo-change # flag needed for when debian version changes @@ -49,8 +51,12 @@ fi R_CUSTOM_CCACHE=`echo $R_CUSTOM_CCACHE | tr '[:upper:]' '[:lower:]'` if [ ${R_CUSTOM_CCACHE} = "true" ]; then # install ccache - $PACKAGE_MANAGER install -y epel-release || true - $PACKAGE_MANAGER install -y ccache + if [ "$PACKAGE_MANAGER" = "apk" ]; then + $PACKAGE_MANAGER add ccache + else + $PACKAGE_MANAGER install -y epel-release || true + $PACKAGE_MANAGER install -y ccache + fi mkdir -p ~/.R echo "VER= @@ -73,7 +79,11 @@ fi # Install rsync for bundling cpp source and curl to make sure it is installed on all images, # cmake is now a listed sys req. -$PACKAGE_MANAGER install -y rsync cmake curl +if [ "$PACKAGE_MANAGER" = "apk" ]; then + $PACKAGE_MANAGER add rsync cmake curl +else + $PACKAGE_MANAGER install -y rsync cmake curl +fi # Update clang version to latest available. # This is only for rhub/clang20. If we change the base image from rhub/clang20, From 22fadf7a31daa2d57b655c56b0e8d859c88e2dea Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Sat, 29 Nov 2025 09:39:15 +0000 Subject: [PATCH 08/24] Add to system dependencies script too --- ci/scripts/r_install_system_dependencies.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ci/scripts/r_install_system_dependencies.sh b/ci/scripts/r_install_system_dependencies.sh index c9795d0ec6f2..bc3f5a80d1e8 100755 --- a/ci/scripts/r_install_system_dependencies.sh +++ b/ci/scripts/r_install_system_dependencies.sh @@ -28,6 +28,8 @@ elif [ "`which yum`" ]; then PACKAGE_MANAGER=yum elif [ "`which zypper`" ]; then PACKAGE_MANAGER=zypper +elif [ "`which apk`" ]; then + PACKAGE_MANAGER=apk else PACKAGE_MANAGER=apt-get apt-get update @@ -39,6 +41,9 @@ case "$PACKAGE_MANAGER" in apt-get) apt-get install -y libcurl4-openssl-dev libssl-dev ;; + apk) + $PACKAGE_MANAGER add curl-dev openssl-dev + ;; *) $PACKAGE_MANAGER install -y libcurl-devel openssl-devel ;; @@ -59,6 +64,11 @@ if [ "$ARROW_S3" == "ON" ] || [ "$ARROW_GCS" == "ON" ] || [ "$ARROW_R_DEV" == "T ln -s /usr/bin/python3.10 /usr/local/bin/python ln -s /usr/bin/pip3.10 /usr/local/bin/pip ;; + apk) + $PACKAGE_MANAGER add py3-pip + ln -s /usr/bin/python3 /usr/local/bin/python + ln -s /usr/bin/pip3 /usr/local/bin/pip + ;; *) $PACKAGE_MANAGER install -y python3-pip ln -s /usr/bin/python3 /usr/local/bin/python From c45e0f78c14cca8c52f92eb41d000d48befd36b2 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Sat, 29 Nov 2025 09:52:09 +0000 Subject: [PATCH 09/24] add linux headers --- ci/docker/alpine-linux-3.22-r.dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index 5a6206a2da2a..2819c1c252fe 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -34,6 +34,7 @@ RUN apk add \ g++ \ gcc \ git \ + linux-headers \ make \ musl-locales \ openssl-dev \ From ecbbdca705fa9d3f76bc99257db757c9315319ef Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Sat, 29 Nov 2025 10:49:55 +0000 Subject: [PATCH 10/24] Add python deps --- ci/docker/alpine-linux-3.22-r.dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index 2819c1c252fe..2bb07eabd75b 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -39,6 +39,8 @@ RUN apk add \ musl-locales \ openssl-dev \ pkgconfig \ + python3 \ + python3-dev \ zlib-dev && \ rm -rf /var/cache/apk/* && \ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ From 8f2a047b6f46fc356f78d7cb7443cfa46187102d Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Sat, 29 Nov 2025 11:43:29 +0000 Subject: [PATCH 11/24] remove python dep --- ci/docker/alpine-linux-3.22-r.dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index 2bb07eabd75b..2819c1c252fe 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -39,8 +39,6 @@ RUN apk add \ musl-locales \ openssl-dev \ pkgconfig \ - python3 \ - python3-dev \ zlib-dev && \ rm -rf /var/cache/apk/* && \ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ From 37a7aac22b5567d5dbc3e3c32e4331a5b5567f43 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Sat, 29 Nov 2025 12:46:31 +0000 Subject: [PATCH 12/24] Add not_cran and move to next to other R builds --- compose.yaml | 59 ++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/compose.yaml b/compose.yaml index cd948aa53142..ca21cacaecbb 100644 --- a/compose.yaml +++ b/compose.yaml @@ -247,35 +247,6 @@ services: /arrow/ci/scripts/cpp_build.sh /arrow /build && /arrow/ci/scripts/cpp_test.sh /arrow /build" - alpine-linux-r: - # Usage: - # docker compose build alpine-linux-r - # docker compose run alpine-linux-r - # Tests R package installation on musl (Alpine Linux) for CRAN checks. - # R package builds C++ from source (bundled RE2 2023-03-01 supports musl). - # Parameters: - # ALPINE_LINUX: 3.22 - # R: 4.5 (Alpine's R version) - # ARCH: amd64, arm64v8, ... - image: ${REPO}:${ARCH}-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 - args: - arch: ${ARCH} - shm_size: *shm-size - environment: - <<: [*common, *sccache] - LIBARROW_BINARY: "false" - ARROW_SOURCE_HOME: "/arrow" - ARROW_R_DEV: "TRUE" - ARROW_USE_PKG_CONFIG: "false" - volumes: - - .:/arrow:delegated - command: /arrow/ci/scripts/r_test.sh /arrow - conda: # Base image for conda builds. # @@ -1804,6 +1775,36 @@ services: command: > /bin/bash -c "/arrow/ci/scripts/r_revdepcheck.sh /arrow" + alpine-linux-r: + # Usage: + # docker compose build alpine-linux-r + # docker compose run alpine-linux-r + # Tests R package installation on musl (Alpine Linux) for CRAN checks. + # R package builds C++ from source (bundled RE2 2023-03-01 supports musl). + # Parameters: + # ALPINE_LINUX: 3.22 + # R: 4.5 (Alpine's R version) + # ARCH: amd64, arm64v8, ... + image: ${REPO}:${ARCH}-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 + args: + arch: ${ARCH} + shm_size: *shm-size + environment: + <<: [*common, *sccache] + LIBARROW_BINARY: "false" + ARROW_SOURCE_HOME: "/arrow" + ARROW_R_DEV: "TRUE" + ARROW_USE_PKG_CONFIG: "false" + NOT_CRAN: "false" + volumes: + - .:/arrow:delegated + command: /arrow/ci/scripts/r_test.sh /arrow + ############################## Integration ################################## conda-integration: From 528de01270e5306ce83f142b21842e6e105d813b Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Sat, 29 Nov 2025 12:52:31 +0000 Subject: [PATCH 13/24] pass in not_cran=false and rername --- compose.yaml | 1 - dev/tasks/tasks.yml | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/compose.yaml b/compose.yaml index ca21cacaecbb..faa16bbfa872 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1800,7 +1800,6 @@ services: ARROW_SOURCE_HOME: "/arrow" ARROW_R_DEV: "TRUE" ARROW_USE_PKG_CONFIG: "false" - NOT_CRAN: "false" volumes: - .:/arrow:delegated command: /arrow/ci/scripts/r_test.sh /arrow diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml index c5032f2e91cf..3af141c16da8 100644 --- a/dev/tasks/tasks.yml +++ b/dev/tasks/tasks.yml @@ -669,11 +669,12 @@ tasks: ci: github template: r/github.linux.cran.yml - test-r-alpine-linux: + test-r-alpine-linux-cran: ci: github template: docker-tests/github.linux.yml params: image: alpine-linux-r + flags: -e NOT_CRAN=false test-r-macos-as-cran: ci: github From b1336060dde25a1b67787c7096aeba9d2b6b613b Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 1 Dec 2025 10:23:05 +0000 Subject: [PATCH 14/24] add texlive dependency --- ci/docker/alpine-linux-3.22-r.dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index 2819c1c252fe..57c72a9c9657 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -39,6 +39,7 @@ RUN apk add \ musl-locales \ openssl-dev \ pkgconfig \ + texlive \ zlib-dev && \ rm -rf /var/cache/apk/* && \ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ From 4153585b772f2a263645b7a1f882548dea73041a Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 1 Dec 2025 12:10:51 +0000 Subject: [PATCH 15/24] Add extra tex dependencies --- ci/docker/alpine-linux-3.22-r.dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index 57c72a9c9657..98d5d3e0d813 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -40,6 +40,9 @@ RUN apk add \ openssl-dev \ pkgconfig \ texlive \ + texlive-xetex \ + texmf-dist-fontsextra \ + texmf-dist-most \ zlib-dev && \ rm -rf /var/cache/apk/* && \ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ From 6d465be16a781a8c4c2eaa00edcad5eb027bf87d Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 1 Dec 2025 14:08:27 +0000 Subject: [PATCH 16/24] add devscripts for checkbashims --- ci/docker/alpine-linux-3.22-r.dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index 98d5d3e0d813..eb160c8372c4 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -31,6 +31,7 @@ RUN apk add \ bash \ cmake \ curl-dev \ + devscripts \ g++ \ gcc \ git \ From bc22b4637f8f1aef7c23e155b32118ee84041c97 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 1 Dec 2025 14:25:29 +0000 Subject: [PATCH 17/24] Add bash --- ci/docker/alpine-linux-3.22-r.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index eb160c8372c4..e3271818e851 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -29,9 +29,9 @@ RUN apk add \ R-dev \ R-doc \ bash \ + checkbashisms \ cmake \ curl-dev \ - devscripts \ g++ \ gcc \ git \ From 82c40c07735a0b693d65b44423ae3f95291e0588 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Mon, 1 Dec 2025 14:33:48 +0000 Subject: [PATCH 18/24] Remove bashism --- r/src/Makevars.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/r/src/Makevars.in b/r/src/Makevars.in index f91fe503f3cf..af0826faacb4 100644 --- a/r/src/Makevars.in +++ b/r/src/Makevars.in @@ -31,4 +31,4 @@ PKG_LIBS=@libs@ all: $(SHLIB) purify purify: $(SHLIB) - @rm -rf ../{libarrow,windows} || true + @rm -rf ../libarrow ../windows || true From cf0c8545f617d6a3da0e4244ddefeac7f4e10393 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 17 Dec 2025 11:47:42 +0000 Subject: [PATCH 19/24] Set ARROW_R_DEV to whatever has been passed in --- compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yaml b/compose.yaml index faa16bbfa872..20fbaf9f37a4 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1798,7 +1798,7 @@ services: <<: [*common, *sccache] LIBARROW_BINARY: "false" ARROW_SOURCE_HOME: "/arrow" - ARROW_R_DEV: "TRUE" + ARROW_R_DEV: ${ARROW_R_DEV} ARROW_USE_PKG_CONFIG: "false" volumes: - .:/arrow:delegated From 4a3e26505022bb5d94967df40910f7645aa73e6f Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 17 Dec 2025 11:49:37 +0000 Subject: [PATCH 20/24] Remove unnecessary NOT_CRAN flag --- dev/tasks/tasks.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml index 3af141c16da8..a1f5d27256dd 100644 --- a/dev/tasks/tasks.yml +++ b/dev/tasks/tasks.yml @@ -674,8 +674,6 @@ tasks: template: docker-tests/github.linux.yml params: image: alpine-linux-r - flags: -e NOT_CRAN=false - test-r-macos-as-cran: ci: github template: r/github.macos.cran.yml From a63c4789faac2878d677638c961235c8a968e159 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 17 Dec 2025 11:50:09 +0000 Subject: [PATCH 21/24] Fix spacing --- dev/tasks/tasks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml index a1f5d27256dd..0db87207440d 100644 --- a/dev/tasks/tasks.yml +++ b/dev/tasks/tasks.yml @@ -674,6 +674,7 @@ tasks: template: docker-tests/github.linux.yml params: image: alpine-linux-r + test-r-macos-as-cran: ci: github template: r/github.macos.cran.yml From b4f611c488551d6f56fd993ec455bbc3381f0ee3 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 17 Dec 2025 12:03:50 +0000 Subject: [PATCH 22/24] Don't build vignettes --- ci/docker/alpine-linux-3.22-r.dockerfile | 4 ---- compose.yaml | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/ci/docker/alpine-linux-3.22-r.dockerfile b/ci/docker/alpine-linux-3.22-r.dockerfile index e3271818e851..887cb6445e7d 100644 --- a/ci/docker/alpine-linux-3.22-r.dockerfile +++ b/ci/docker/alpine-linux-3.22-r.dockerfile @@ -40,10 +40,6 @@ RUN apk add \ musl-locales \ openssl-dev \ pkgconfig \ - texlive \ - texlive-xetex \ - texmf-dist-fontsextra \ - texmf-dist-most \ zlib-dev && \ rm -rf /var/cache/apk/* && \ ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \ diff --git a/compose.yaml b/compose.yaml index 20fbaf9f37a4..87322b5ae8fc 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1800,6 +1800,7 @@ services: ARROW_SOURCE_HOME: "/arrow" ARROW_R_DEV: ${ARROW_R_DEV} ARROW_USE_PKG_CONFIG: "false" + SKIP_VIGNETTES: "true" volumes: - .:/arrow:delegated command: /arrow/ci/scripts/r_test.sh /arrow From 9a816055703d7d72ea64261e40e37ed5b217487b Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 17 Dec 2025 14:57:26 +0000 Subject: [PATCH 23/24] Add missing parentheses --- ci/scripts/r_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/r_test.sh b/ci/scripts/r_test.sh index 34bef3cc157f..9c0873e5efe2 100755 --- a/ci/scripts/r_test.sh +++ b/ci/scripts/r_test.sh @@ -101,7 +101,7 @@ SCRIPT="as_cran <- !identical(tolower(Sys.getenv('NOT_CRAN')), 'true') build_args <- '--no-build-vignettes' } - if (!as_cran && requireNamespace('reticulate', quietly = TRUE) && reticulate::py_module_available('pyarrow')) { + if (!as_cran && (requireNamespace('reticulate', quietly = TRUE)) && reticulate::py_module_available('pyarrow')) { message('Running flight demo server for tests.') pid_flight <- sys::exec_background( 'python', From 5fa4d16832ada83b59901d9bcc080b6b59db2887 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 17 Dec 2025 16:18:36 +0000 Subject: [PATCH 24/24] Revert unnecessary brace and manually set 'NOT_CRAN' --- ci/scripts/r_test.sh | 2 +- compose.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/scripts/r_test.sh b/ci/scripts/r_test.sh index 9c0873e5efe2..34bef3cc157f 100755 --- a/ci/scripts/r_test.sh +++ b/ci/scripts/r_test.sh @@ -101,7 +101,7 @@ SCRIPT="as_cran <- !identical(tolower(Sys.getenv('NOT_CRAN')), 'true') build_args <- '--no-build-vignettes' } - if (!as_cran && (requireNamespace('reticulate', quietly = TRUE)) && reticulate::py_module_available('pyarrow')) { + if (!as_cran && requireNamespace('reticulate', quietly = TRUE) && reticulate::py_module_available('pyarrow')) { message('Running flight demo server for tests.') pid_flight <- sys::exec_background( 'python', diff --git a/compose.yaml b/compose.yaml index 87322b5ae8fc..e7bf7ccc14d1 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1801,6 +1801,7 @@ services: ARROW_R_DEV: ${ARROW_R_DEV} ARROW_USE_PKG_CONFIG: "false" SKIP_VIGNETTES: "true" + NOT_CRAN: "false" volumes: - .:/arrow:delegated command: /arrow/ci/scripts/r_test.sh /arrow