diff --git a/.github/workflows/r.yml b/.github/workflows/r.yml index f4c5d8a5bd2d..d60e08b1f989 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,14 @@ 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 + # 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 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 diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index ef9c58f6afca..9eebb33c628f 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -23,8 +23,26 @@ set -ex # Make sure it is absolute and exported export ARROW_HOME="$(cd "${ARROW_HOME}" && pwd)" +# 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 + +# 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" + +# 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. +pacman --noconfirm -S mingw-w64-ucrt-x86_64-binutils + RWINLIB_LIB_DIR="lib" : ${MINGW_ARCH:="mingw32 mingw64 ucrt64"} @@ -46,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) 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 %} 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..41a4274df3d8 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,8 @@ 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' } env: ARROW_R_DEV: "TRUE" OLD_ARROW_VERSION: {{ '${{ matrix.config.old_arrow_version }}' }} 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" 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