From 8ba5029676f0af76dd0dede644791717f1f7c2e8 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 5 May 2026 15:06:02 -0400 Subject: [PATCH 01/18] Remove unused variables --- dev/tasks/macros.jinja | 2 -- 1 file changed, 2 deletions(-) diff --git a/dev/tasks/macros.jinja b/dev/tasks/macros.jinja index 4edcfad3aecd..8e9a41b46b75 100644 --- a/dev/tasks/macros.jinja +++ b/dev/tasks/macros.jinja @@ -277,8 +277,6 @@ env: {# use filter to cast to string and convert to lowercase to match yaml boolean #} {% set is_fork = (not is_upstream_b)|lower %} -{% set r_release = {"ver": "4.2", "rt" : "42"} %} -{% set r_oldrel = {"ver": "4.1", "rt" : "40"} %} {%- macro github_set_env(env) -%} {% if env is defined %} From 68b6f69e65eaa57ed4e963b842bcbe429f070031 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 5 May 2026 15:06:56 -0400 Subject: [PATCH 02/18] Ditch 4.1 --- dev/tasks/r/github.linux.versions.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/dev/tasks/r/github.linux.versions.yml b/dev/tasks/r/github.linux.versions.yml index 612d84b185fe..644494bfbae6 100644 --- a/dev/tasks/r/github.linux.versions.yml +++ b/dev/tasks/r/github.linux.versions.yml @@ -30,7 +30,6 @@ jobs: r_version: # We test devel, release, and oldrel in regular CI. # This is for older versions - - "4.1" - "4.2" - "4.3" - "4.4" From dadc34c17f85bfdf9de2892b89f96648cc3d4897 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 5 May 2026 15:07:22 -0400 Subject: [PATCH 03/18] Bump 4.1 to 4.2 --- dev/tasks/r/github.linux.arrow.version.back.compat.yml | 8 ++++---- r/DESCRIPTION | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dev/tasks/r/github.linux.arrow.version.back.compat.yml b/dev/tasks/r/github.linux.arrow.version.back.compat.yml index 7c2695f95638..2043f44c54b6 100644 --- a/dev/tasks/r/github.linux.arrow.version.back.compat.yml +++ b/dev/tasks/r/github.linux.arrow.version.back.compat.yml @@ -90,10 +90,10 @@ jobs: - { old_arrow_version: '10.0.1', r: '4.2' } - { old_arrow_version: '9.0.0', r: '4.2' } - { old_arrow_version: '8.0.0', r: '4.2' } - - { old_arrow_version: '7.0.0', r: '4.1' } - - { old_arrow_version: '6.0.1', r: '4.1' } - - { old_arrow_version: '5.0.0', r: '4.1' } - - { old_arrow_version: '4.0.0', r: '4.1' } + - { old_arrow_version: '7.0.0', r: '4.2' } + - { old_arrow_version: '6.0.1', r: '4.2' } + - { old_arrow_version: '5.0.0', r: '4.2' } + - { old_arrow_version: '4.0.0', r: '4.2' } env: ARROW_R_DEV: "TRUE" OLD_ARROW_VERSION: {{ '${{ matrix.config.old_arrow_version }}' }} diff --git a/r/DESCRIPTION b/r/DESCRIPTION index c76dfc5572fe..f9aa93d474b2 100644 --- a/r/DESCRIPTION +++ b/r/DESCRIPTION @@ -22,7 +22,7 @@ Description: 'Apache' 'Arrow' is a cross-language language-independent columnar memory format for flat and hierarchical data, organized for efficient analytic operations on modern hardware. This package provides an interface to the 'Arrow C++' library. -Depends: R (>= 4.1) +Depends: R (>= 4.2) License: Apache License (>= 2.0) URL: https://github.com/apache/arrow/, https://arrow.apache.org/docs/r/ BugReports: https://github.com/apache/arrow/issues From 682fe0aa8077906235dffd0f6276bc167e1af097 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 5 May 2026 15:08:06 -0400 Subject: [PATCH 04/18] Bump rtools version --- .github/workflows/r.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/r.yml b/.github/workflows/r.yml index f4c5d8a5bd2d..481b0a3a47a0 100644 --- a/.github/workflows/r.yml +++ b/.github/workflows/r.yml @@ -205,7 +205,7 @@ jobs: fail-fast: false matrix: config: - - { rtools: 40, arch: 'ucrt64' } + - { rtools: 42, arch: 'ucrt64' } steps: - run: git config --global core.autocrlf false - name: Checkout Arrow @@ -228,10 +228,10 @@ jobs: r-${{ matrix.config.rtools }}-ccache-mingw-${{ matrix.config.arch }}- - uses: r-lib/actions/setup-r@v2 with: - # Note: RTools must be 40 here because RTools40 + ucrt is how we build the Arrow C++ - # static library. The R is not used here but R 4.1 was the last R to use - # Rtools40. - r-version: "4.1" + # Note: RTools must be 42 here because RTools42 + ucrt is how we build the Arrow C++ + # static library. The R is not used here but R 4.2 was the last R to use + # Rtools42. + r-version: "4.2" rtools-version: ${{ matrix.config.rtools }} Ncpus: 2 - name: Build Arrow C++ @@ -284,14 +284,13 @@ jobs: - name: Download Timezone Database shell: bash run: | - # RTools 40 uses GCC 8.x which does not support C++20 chrono timezones, - # so Arrow uses the vendored date library which requires tzdata + # Download tzdata in case the vendored date library is used for timezones ci/scripts/download_tz_database.sh - run: mkdir r/windows - name: Download artifacts uses: actions/download-artifact@v8 with: - name: libarrow-rtools40-ucrt64.zip + name: libarrow-rtools42-ucrt64.zip path: r/windows - name: Unzip and rezip libarrows shell: bash From 7782075c64a4d193f9afdd3543c9fdfd910c5928 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 5 May 2026 17:27:28 -0400 Subject: [PATCH 05/18] Remove pre 4.1 versions --- dev/tasks/r/github.linux.arrow.version.back.compat.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/dev/tasks/r/github.linux.arrow.version.back.compat.yml b/dev/tasks/r/github.linux.arrow.version.back.compat.yml index 2043f44c54b6..41a4274df3d8 100644 --- a/dev/tasks/r/github.linux.arrow.version.back.compat.yml +++ b/dev/tasks/r/github.linux.arrow.version.back.compat.yml @@ -92,8 +92,6 @@ jobs: - { old_arrow_version: '8.0.0', r: '4.2' } - { old_arrow_version: '7.0.0', r: '4.2' } - { old_arrow_version: '6.0.1', r: '4.2' } - - { old_arrow_version: '5.0.0', r: '4.2' } - - { old_arrow_version: '4.0.0', r: '4.2' } env: ARROW_R_DEV: "TRUE" OLD_ARROW_VERSION: {{ '${{ matrix.config.old_arrow_version }}' }} From ce6d92987766ec76a118c6f9460623dcebe9ca1b Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 5 May 2026 17:30:26 -0400 Subject: [PATCH 06/18] Ensure CA certificates for pacman are installed --- ci/scripts/r_windows_build.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index ef9c58f6afca..07fcb290c69d 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -23,6 +23,18 @@ set -ex # Make sure it is absolute and exported export ARROW_HOME="$(cd "${ARROW_HOME}" && pwd)" +# Ensure CA certificates are available for pacman (Rtools42+ may not bundle them) +if [ ! -f /usr/ssl/certs/ca-bundle.crt ]; then + mkdir -p /usr/ssl/certs + for src in /c/rtools45/usr/ssl/certs/ca-bundle.crt \ + "/c/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt"; do + if [ -f "$src" ]; then + cp "$src" /usr/ssl/certs/ca-bundle.crt + break + fi + done +fi + pacman --noconfirm -Syy RWINLIB_LIB_DIR="lib" From 2ea2bde819200472526408368af8460f24af51a5 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 6 May 2026 10:57:22 -0400 Subject: [PATCH 07/18] Update comment --- .github/workflows/r.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/r.yml b/.github/workflows/r.yml index 481b0a3a47a0..d60e08b1f989 100644 --- a/.github/workflows/r.yml +++ b/.github/workflows/r.yml @@ -284,7 +284,8 @@ jobs: - name: Download Timezone Database shell: bash run: | - # Download tzdata in case the vendored date library is used for timezones + # MinGW (non-MSVC) builds use the vendored date library for timezone + # handling, which requires a local copy of the IANA tzdata database. ci/scripts/download_tz_database.sh - run: mkdir r/windows - name: Download artifacts From c3599c71b6be8f449d8d5e3714104b503a7af1cd Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 6 May 2026 14:50:45 -0400 Subject: [PATCH 08/18] Use Git for Windows CA bundle --- ci/scripts/r_windows_build.sh | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index 07fcb290c69d..a050ccfc0636 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -26,13 +26,7 @@ export ARROW_HOME="$(cd "${ARROW_HOME}" && pwd)" # Ensure CA certificates are available for pacman (Rtools42+ may not bundle them) if [ ! -f /usr/ssl/certs/ca-bundle.crt ]; then mkdir -p /usr/ssl/certs - for src in /c/rtools45/usr/ssl/certs/ca-bundle.crt \ - "/c/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt"; do - if [ -f "$src" ]; then - cp "$src" /usr/ssl/certs/ca-bundle.crt - break - fi - done + cp "/c/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt" /usr/ssl/certs/ca-bundle.crt fi pacman --noconfirm -Syy From 4270ba7ef35f56b74d25b9662b20e16f7e7c609b Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 6 May 2026 15:08:37 -0400 Subject: [PATCH 09/18] add key bits to PATH --- ci/scripts/r_windows_build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index a050ccfc0636..62c68daef75f 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -29,6 +29,9 @@ if [ ! -f /usr/ssl/certs/ca-bundle.crt ]; then cp "/c/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt" /usr/ssl/certs/ca-bundle.crt fi +# RTools42+ needs its toolchain on PATH for makepkg-mingw to find strip etc. +export PATH="/c/rtools${RTOOLS_VERSION}/ucrt64/bin:$PATH" + pacman --noconfirm -Syy RWINLIB_LIB_DIR="lib" From 41acb2e76a1c43f995187eccadea8833da8760f6 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Wed, 6 May 2026 16:54:10 -0400 Subject: [PATCH 10/18] dump output to see what's going on --- ci/scripts/r_windows_build.sh | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index 62c68daef75f..b94b8e4db732 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -23,14 +23,21 @@ set -ex # Make sure it is absolute and exported export ARROW_HOME="$(cd "${ARROW_HOME}" && pwd)" -# Ensure CA certificates are available for pacman (Rtools42+ may not bundle them) -if [ ! -f /usr/ssl/certs/ca-bundle.crt ]; then - mkdir -p /usr/ssl/certs - cp "/c/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt" /usr/ssl/certs/ca-bundle.crt -fi - -# RTools42+ needs its toolchain on PATH for makepkg-mingw to find strip etc. -export PATH="/c/rtools${RTOOLS_VERSION}/ucrt64/bin:$PATH" +# Debug: understand the RTools environment on this runner +echo "=== RTools debug info ===" +echo "Shell: $SHELL / BASH: $BASH" +echo "MSYSTEM: $MSYSTEM" +echo "RTOOLS_VERSION: $RTOOLS_VERSION" +echo "which bash: $(which bash)" +echo "which pacman: $(which pacman)" +echo "which strip: $(which strip 2>/dev/null || echo 'not found')" +echo "which makepkg-mingw: $(which makepkg-mingw 2>/dev/null || echo 'not found')" +ls -la /usr/ssl/certs/ 2>/dev/null || echo "/usr/ssl/certs/ does not exist" +ls -la /etc/pki/ca-trust/ 2>/dev/null || echo "/etc/pki/ca-trust/ does not exist" +ls /c/rtools42/ 2>/dev/null || echo "/c/rtools42/ does not exist" +ls /c/rtools45/ 2>/dev/null || echo "/c/rtools45/ does not exist" +echo "cygpath /: $(cygpath -w /)" +echo "=== end debug ===" pacman --noconfirm -Syy From 442bf4adb269240546597a0ddf630efb5eca3270 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Thu, 7 May 2026 16:16:48 -0400 Subject: [PATCH 11/18] Update certs if missing --- ci/scripts/r_windows_build.sh | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index b94b8e4db732..b5dd780d2b2d 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -23,21 +23,12 @@ set -ex # Make sure it is absolute and exported export ARROW_HOME="$(cd "${ARROW_HOME}" && pwd)" -# Debug: understand the RTools environment on this runner -echo "=== RTools debug info ===" -echo "Shell: $SHELL / BASH: $BASH" -echo "MSYSTEM: $MSYSTEM" -echo "RTOOLS_VERSION: $RTOOLS_VERSION" -echo "which bash: $(which bash)" -echo "which pacman: $(which pacman)" -echo "which strip: $(which strip 2>/dev/null || echo 'not found')" -echo "which makepkg-mingw: $(which makepkg-mingw 2>/dev/null || echo 'not found')" -ls -la /usr/ssl/certs/ 2>/dev/null || echo "/usr/ssl/certs/ does not exist" -ls -la /etc/pki/ca-trust/ 2>/dev/null || echo "/etc/pki/ca-trust/ does not exist" -ls /c/rtools42/ 2>/dev/null || echo "/c/rtools42/ does not exist" -ls /c/rtools45/ 2>/dev/null || echo "/c/rtools45/ does not exist" -echo "cygpath /: $(cygpath -w /)" -echo "=== end debug ===" +# The RTools42 release (r-hub/rtools42) ships with 0-byte ca-bundle.crt files +# due to an MSYS2 build bug (msys2/msys2-installer#40). Regenerate them from +# the trust anchors that are already installed. +if [ ! -s /usr/ssl/certs/ca-bundle.crt ]; then + update-ca-trust +fi pacman --noconfirm -Syy From a6c6c048e7e40c26ca0f518f343fb5457a30b3a9 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Thu, 7 May 2026 16:48:05 -0400 Subject: [PATCH 12/18] Set MSYSTEM if not set --- ci/scripts/r_windows_build.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index b5dd780d2b2d..5843064d898c 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -30,6 +30,11 @@ if [ ! -s /usr/ssl/certs/ca-bundle.crt ]; then update-ca-trust fi +# MSYSTEM must be set so makepkg-mingw can find the toolchain (strip etc.). +# The CI shell runs bash directly without --login, so MSYSTEM is unset. +# Use UCRT64 to match the arch we're building. +export MSYSTEM=${MSYSTEM:-UCRT64} + pacman --noconfirm -Syy RWINLIB_LIB_DIR="lib" From 53bee13981f1e1d402689fa4de9a9000f22ad942 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Thu, 7 May 2026 17:23:04 -0400 Subject: [PATCH 13/18] try to fix path --- ci/scripts/r_windows_build.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index 5843064d898c..11bf46588b2a 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -30,10 +30,10 @@ if [ ! -s /usr/ssl/certs/ca-bundle.crt ]; then update-ca-trust fi -# MSYSTEM must be set so makepkg-mingw can find the toolchain (strip etc.). -# The CI shell runs bash directly without --login, so MSYSTEM is unset. -# Use UCRT64 to match the arch we're building. +# The CI shell runs bash directly without --login, so MSYSTEM is unset and +# the ucrt64 toolchain isn't on PATH. Both are needed for makepkg-mingw. export MSYSTEM=${MSYSTEM:-UCRT64} +export PATH="/${MSYSTEM,,}/bin:$PATH" pacman --noconfirm -Syy From d2c12e15b5bde85c78e0fae112b5c9b675b9832e Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Thu, 7 May 2026 17:29:51 -0400 Subject: [PATCH 14/18] debug strip location --- ci/scripts/r_windows_build.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index 11bf46588b2a..b51e9eef8ada 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -35,6 +35,13 @@ fi export MSYSTEM=${MSYSTEM:-UCRT64} export PATH="/${MSYSTEM,,}/bin:$PATH" +# Debug strip location +echo "=== strip debug ===" +ls -la /${MSYSTEM,,}/bin/strip* 2>/dev/null || echo "no strip in /${MSYSTEM,,}/bin/" +which strip 2>/dev/null || echo "strip not on PATH" +type -a strip 2>/dev/null || echo "no strip found at all" +echo "=== end strip debug ===" + pacman --noconfirm -Syy RWINLIB_LIB_DIR="lib" From 7e607e6e53dc7f9baf307f4048e4b7e88b03b4a2 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Thu, 7 May 2026 17:30:11 -0400 Subject: [PATCH 15/18] more debug commands --- ci/scripts/r_windows_build.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index b51e9eef8ada..6c8e604087f6 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -40,6 +40,8 @@ echo "=== strip debug ===" ls -la /${MSYSTEM,,}/bin/strip* 2>/dev/null || echo "no strip in /${MSYSTEM,,}/bin/" which strip 2>/dev/null || echo "strip not on PATH" type -a strip 2>/dev/null || echo "no strip found at all" +grep -n "strip" /etc/makepkg.conf 2>/dev/null || echo "no makepkg.conf" +grep -n "strip" /etc/makepkg_mingw.conf 2>/dev/null || echo "no makepkg_mingw.conf" echo "=== end strip debug ===" pacman --noconfirm -Syy From 64763bc6cecd86e2f15662565995292e430e542b Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Thu, 7 May 2026 17:38:32 -0400 Subject: [PATCH 16/18] install strip --- ci/scripts/r_windows_build.sh | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index 6c8e604087f6..cbe23b1ca967 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -35,17 +35,11 @@ fi export MSYSTEM=${MSYSTEM:-UCRT64} export PATH="/${MSYSTEM,,}/bin:$PATH" -# Debug strip location -echo "=== strip debug ===" -ls -la /${MSYSTEM,,}/bin/strip* 2>/dev/null || echo "no strip in /${MSYSTEM,,}/bin/" -which strip 2>/dev/null || echo "strip not on PATH" -type -a strip 2>/dev/null || echo "no strip found at all" -grep -n "strip" /etc/makepkg.conf 2>/dev/null || echo "no makepkg.conf" -grep -n "strip" /etc/makepkg_mingw.conf 2>/dev/null || echo "no makepkg_mingw.conf" -echo "=== end strip debug ===" - pacman --noconfirm -Syy +# RTools42's ucrt64 toolchain doesn't include strip; install it for makepkg-mingw. +pacman --noconfirm -S mingw-w64-ucrt-x86_64-binutils + RWINLIB_LIB_DIR="lib" : ${MINGW_ARCH:="mingw32 mingw64 ucrt64"} From ccce85e5de4461749290809b7a1c6cf5b164d5bb Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Thu, 7 May 2026 17:45:31 -0400 Subject: [PATCH 17/18] update keyring --- ci/scripts/r_windows_build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index cbe23b1ca967..71b6d46a897e 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -35,6 +35,9 @@ fi export MSYSTEM=${MSYSTEM:-UCRT64} export PATH="/${MSYSTEM,,}/bin:$PATH" +# RTools42's frozen MSYS2 keyring is too old for current mirror signatures. +pacman-key --init +pacman-key --populate msys2 pacman --noconfirm -Syy # RTools42's ucrt64 toolchain doesn't include strip; install it for makepkg-mingw. From cbf047c1c1c40e75fccd98ca452c05aa97acd32c Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Thu, 7 May 2026 18:24:01 -0400 Subject: [PATCH 18/18] fix compression --- ci/scripts/r_windows_build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index 71b6d46a897e..9eebb33c628f 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -64,8 +64,8 @@ cd build # This may vary by system/CI provider MSYS_LIB_DIR="/c/rtools${RTOOLS_VERSION}" -# Untar the builds we made -ls *.xz | xargs -n 1 tar -xJf +# Untar the builds we made (RTools42+ uses zstd compression instead of xz) +ls *.zst *.xz 2>/dev/null | xargs -n 1 tar -xf mkdir -p $DST_DIR # Grab the headers from one, either one is fine # (if we're building twice to combine old and new toolchains, this may already exist)