From fe6ac09ebac39fef9bbb173090bb19196f4708ee Mon Sep 17 00:00:00 2001 From: Jonathan Keane Date: Sat, 7 Feb 2026 14:07:57 -0600 Subject: [PATCH 1/3] use macos14 to see if that replicate issues on CRAN --- dev/tasks/r/github.macos.cran.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tasks/r/github.macos.cran.yml b/dev/tasks/r/github.macos.cran.yml index dda8ac7fd78..2cadbbbd5e3 100644 --- a/dev/tasks/r/github.macos.cran.yml +++ b/dev/tasks/r/github.macos.cran.yml @@ -22,7 +22,7 @@ jobs: macos-cran: name: "macOS similar to CRAN" - runs-on: macOS-latest + runs-on: macOS-14 strategy: fail-fast: false From c208f7331de4341a9b41333276c0fbd07389d046 Mon Sep 17 00:00:00 2001 From: Jonathan Keane Date: Sat, 7 Feb 2026 15:36:41 -0600 Subject: [PATCH 2/3] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Álvaro Kothe --- dev/tasks/r/github.macos.cran.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/tasks/r/github.macos.cran.yml b/dev/tasks/r/github.macos.cran.yml index 2cadbbbd5e3..6d464a78c55 100644 --- a/dev/tasks/r/github.macos.cran.yml +++ b/dev/tasks/r/github.macos.cran.yml @@ -31,7 +31,7 @@ jobs: - name: Configure dependencies (macos) run: | - brew install openssl + brew install openssl llvm@14 # disable sccache on macos as it times out for unknown reasons # see GH-33721 # brew install sccache @@ -61,7 +61,7 @@ jobs: - name: Install env: _R_CHECK_CRAN_INCOMING_: false - CXX: "clang++ -mmacos-version-min=14.6" + CXX: "clang++-14 -mmacos-version-min=14.6" CFLAGS: "-falign-functions=8 -g -O2 -Wall -pedantic -Wconversion -Wno-sign-conversion -Wstrict-prototypes" CXXFLAGS: "-g -O2 -Wall -pedantic -Wconversion -Wno-sign-conversion" NOT_CRAN: false From 3da844efe73e99de4071b1b9db2230bc7ad40992 Mon Sep 17 00:00:00 2001 From: Jonathan Keane Date: Sat, 7 Feb 2026 16:11:05 -0600 Subject: [PATCH 3/3] Try clang 14 on ubuntu --- ci/docker/linux-r.dockerfile | 3 +++ ci/scripts/r_docker_configure.sh | 28 ++++++++++++++++++++++++++++ compose.yaml | 1 + dev/tasks/r/github.linux.cran.yml | 2 ++ dev/tasks/r/github.macos.cran.yml | 6 +++--- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/ci/docker/linux-r.dockerfile b/ci/docker/linux-r.dockerfile index c0d5a69a94e..e089ce30cb6 100644 --- a/ci/docker/linux-r.dockerfile +++ b/ci/docker/linux-r.dockerfile @@ -36,6 +36,9 @@ ENV R_CUSTOM_CCACHE=${r_custom_ccache} ARG r_update_clang=false ENV R_UPDATE_CLANG=${r_update_clang} +ARG r_old_clang=false +ENV R_OLD_CLANG=${r_old_clang} + ARG tz="UTC" ENV TZ=${tz} diff --git a/ci/scripts/r_docker_configure.sh b/ci/scripts/r_docker_configure.sh index b42b444e0b5..851117cb8b4 100755 --- a/ci/scripts/r_docker_configure.sh +++ b/ci/scripts/r_docker_configure.sh @@ -97,5 +97,33 @@ if [ "$R_UPDATE_CLANG" = true ]; then apt install -y clang-20 lld-20 fi +# Use an old clang version to simulate CRAN's macos clang-14 environment. +# This is only for rhub/clang20. If we change the base image from rhub/clang20, +# we need to update this part too. +if [ "$R_OLD_CLANG" = true ]; then + apt update -y --allow-releaseinfo-change # flag needed for when debian version changes + apt install -y clang-14 lld-14 g++-12 libstdc++-12-dev + + update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 100 + update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-14 100 + update-alternatives --install /usr/bin/lld lld /usr/bin/lld-14 100 + + clang --version + clang++ --version + + mkdir -p ~/.R + cat <<'EOF' > ~/.R/Makevars +CC=clang-14 +CXX=clang++-14 + +CXX11=clang++-14 +CXX14=clang++-14 +CXX17=clang++-14 +CXX20=clang++-14 + +LDFLAGS=-fuse-ld=lld +EOF +fi + # Workaround for html help install failure; see https://github.com/r-lib/devtools/issues/2084#issuecomment-530912786 Rscript -e 'x <- file.path(R.home("doc"), "html"); if (!file.exists(x)) {dir.create(x, recursive=TRUE); file.copy(system.file("html/R.css", package="stats"), x)}' diff --git a/compose.yaml b/compose.yaml index 87b79300011..ed1a5a06077 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1667,6 +1667,7 @@ services: r_prune_deps: ${R_PRUNE_DEPS} r_custom_ccache: ${R_CUSTOM_CCACHE} r_update_clang: ${R_UPDATE_CLANG} + r_old_clang: ${R_OLD_CLANG} shm_size: *shm-size environment: <<: [*common, *sccache] diff --git a/dev/tasks/r/github.linux.cran.yml b/dev/tasks/r/github.linux.cran.yml index 8e073db775f..af258118d12 100644 --- a/dev/tasks/r/github.linux.cran.yml +++ b/dev/tasks/r/github.linux.cran.yml @@ -34,12 +34,14 @@ jobs: - { r_image: "ubuntu-next" } # ~ r-patched-linux-x86_64 - { r_image: "ubuntu-release" } # ~ r-release-linux-x86_64 - { r_image: "clang20", skip_vignettes: true, r_update_clang: true } # ~ r-devel-linux-x86_64-fedora-clang + - { r_image: "clang16", skip_vignettes: true, r_old_clang: true } # ~ r-devel-linux-x86_64-fedora-clang env: R_ORG: "rhub" R_IMAGE: {{ '${{ matrix.config.r_image }}' }} R_TAG: "latest" ARROW_R_DEV: "FALSE" R_UPDATE_CLANG: {{ '${{ matrix.config.r_update_clang }}' }} + R_OLD_CLANG: {{ '${{ matrix.config.r_old_clang }}' }} steps: {{ macros.github_checkout_arrow()|indent }} {{ macros.github_install_archery()|indent }} diff --git a/dev/tasks/r/github.macos.cran.yml b/dev/tasks/r/github.macos.cran.yml index 6d464a78c55..dda8ac7fd78 100644 --- a/dev/tasks/r/github.macos.cran.yml +++ b/dev/tasks/r/github.macos.cran.yml @@ -22,7 +22,7 @@ jobs: macos-cran: name: "macOS similar to CRAN" - runs-on: macOS-14 + runs-on: macOS-latest strategy: fail-fast: false @@ -31,7 +31,7 @@ jobs: - name: Configure dependencies (macos) run: | - brew install openssl llvm@14 + brew install openssl # disable sccache on macos as it times out for unknown reasons # see GH-33721 # brew install sccache @@ -61,7 +61,7 @@ jobs: - name: Install env: _R_CHECK_CRAN_INCOMING_: false - CXX: "clang++-14 -mmacos-version-min=14.6" + CXX: "clang++ -mmacos-version-min=14.6" CFLAGS: "-falign-functions=8 -g -O2 -Wall -pedantic -Wconversion -Wno-sign-conversion -Wstrict-prototypes" CXXFLAGS: "-g -O2 -Wall -pedantic -Wconversion -Wno-sign-conversion" NOT_CRAN: false