diff --git a/.github/workflows/r.yml b/.github/workflows/r.yml index 4f706e3e5b11..f1bafbef3b71 100644 --- a/.github/workflows/r.yml +++ b/.github/workflows/r.yml @@ -170,8 +170,6 @@ jobs: fail-fast: false matrix: config: - - { rtools: 35, arch: 'mingw32' } - - { rtools: 35, arch: 'mingw64' } - { rtools: 40, arch: 'mingw32' } - { rtools: 40, arch: 'mingw64' } - { rtools: 40, arch: 'ucrt64' } @@ -199,19 +197,11 @@ jobs: restore-keys: | r-${{ matrix.config.rtools }}-ccache-mingw-${{ matrix.config.arch }}-${{ hashFiles('cpp/src/**/*.cc','cpp/src/**/*.h)') }}- r-${{ matrix.config.rtools }}-ccache-mingw-${{ matrix.config.arch }}- - # We use the makepkg-mingw setup that is included in rtools40 even when - # we use the rtools35 compilers, so we always install R 4.0/Rtools40 - uses: r-lib/actions/setup-r@v2 with: r-version: "4.1" rtools-version: 40 Ncpus: 2 - - uses: r-lib/actions/setup-r@v2 - if: ${{ matrix.config.rtools == 35 }} - with: - rtools-version: 35 - r-version: "3.6" - Ncpus: 2 - name: Build Arrow C++ shell: bash env: @@ -226,11 +216,6 @@ jobs: with: name: libarrow-rtools${{ matrix.config.rtools }}-${{ matrix.config.arch }}.zip path: libarrow-rtools${{ matrix.config.rtools }}-${{ matrix.config.arch }}.zip - # We can remove this when we drop support for Rtools 3.5. - - name: Ensure using system tar in actions/cache - run: | - Write-Output "${Env:windir}\System32" | ` - Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append windows-r: needs: [windows-cpp] @@ -242,7 +227,6 @@ jobs: fail-fast: false matrix: config: - - { rtools: 35, rversion: "3.6" } - { rtools: 40, rversion: "4.1" } - { rtools: 42, rversion: "4.2" } - { rtools: 42, rversion: "devel" } diff --git a/ci/scripts/PKGBUILD b/ci/scripts/PKGBUILD index f0a09bab7f0e..81822cc4eb4f 100644 --- a/ci/scripts/PKGBUILD +++ b/ci/scripts/PKGBUILD @@ -73,27 +73,6 @@ build() { # set the appropriate compiler definition. export CPPFLAGS="-DUTF8PROC_STATIC" - # This is the difference between rtools-packages and rtools-backports - # Remove this when submitting to rtools-packages - if [ "$RTOOLS_VERSION" = "35" ]; then - export CC="/C/Rtools${MINGW_PREFIX/mingw/mingw_}/bin/gcc" - export CXX="/C/Rtools${MINGW_PREFIX/mingw/mingw_}/bin/g++" - export PATH="/C/Rtools${MINGW_PREFIX/mingw/mingw_}/bin:$PATH" - export CPPFLAGS="${CPPFLAGS} -I${MINGW_PREFIX}/include" - export LIBS="-L${MINGW_PREFIX}/libs" - export ARROW_GCS=OFF - export ARROW_S3=OFF - export ARROW_WITH_RE2=OFF - # Without this, some dataset functionality segfaults - export CMAKE_UNITY_BUILD=ON - else - export ARROW_GCS=ON - export ARROW_S3=ON - export ARROW_WITH_RE2=ON - # Without this, some compute functionality segfaults in tests - export CMAKE_UNITY_BUILD=OFF - fi - MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake.exe \ ${ARROW_CPP_DIR} \ @@ -105,7 +84,7 @@ build() { -DARROW_CSV=ON \ -DARROW_DATASET=ON \ -DARROW_FILESYSTEM=ON \ - -DARROW_GCS="${ARROW_GCS}" \ + -DARROW_GCS=ON \ -DARROW_HDFS=OFF \ -DARROW_JEMALLOC=OFF \ -DARROW_JSON=ON \ @@ -113,13 +92,13 @@ build() { -DARROW_MIMALLOC=ON \ -DARROW_PACKAGE_PREFIX="${MINGW_PREFIX}" \ -DARROW_PARQUET=ON \ - -DARROW_S3="${ARROW_S3}" \ + -DARROW_S3=ON \ -DARROW_SNAPPY_USE_SHARED=OFF \ -DARROW_USE_GLOG=OFF \ -DARROW_UTF8PROC_USE_SHARED=OFF \ -DARROW_VERBOSE_THIRDPARTY_BUILD=ON \ -DARROW_WITH_LZ4=ON \ - -DARROW_WITH_RE2="${ARROW_WITH_RE2}" \ + -DARROW_WITH_RE2=ON \ -DARROW_WITH_SNAPPY=ON \ -DARROW_WITH_ZLIB=ON \ -DARROW_WITH_ZSTD=ON \ @@ -129,7 +108,7 @@ build() { -DARROW_CXXFLAGS="${CPPFLAGS}" \ -DCMAKE_BUILD_TYPE="release" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ - -DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD} \ + -DCMAKE_UNITY_BUILD=OFF \ -DCMAKE_VERBOSE_MAKEFILE=ON make -j3 diff --git a/r/R/arrow-info.R b/r/R/arrow-info.R index 55d07b77cb4a..52e0cf3009f5 100644 --- a/r/R/arrow-info.R +++ b/r/R/arrow-info.R @@ -82,12 +82,6 @@ arrow_available <- function() { #' @rdname arrow_info #' @export arrow_with_dataset <- function() { - if (on_old_windows()) { - # 32-bit rtools 3.5 does not properly implement the std::thread expectations - # but we can't just disable ARROW_DATASET in that build, - # so report it as "off" here. - return(FALSE) - } tryCatch(.Call(`_dataset_available`), error = function(e) { return(FALSE) }) diff --git a/r/R/arrow-package.R b/r/R/arrow-package.R index e8aa93f95346..53fb0280a50a 100644 --- a/r/R/arrow-package.R +++ b/r/R/arrow-package.R @@ -117,14 +117,6 @@ configure_tzdb <- function() { }) } -on_old_windows <- function() { - is_32bit <- .Machine$sizeof.pointer < 8 - is_old_r <- getRversion() < "4.0.0" - is_windows <- tolower(Sys.info()[["sysname"]]) == "windows" - - is_32bit && is_old_r && is_windows -} - # True when the OS is linux + and the R version is development # helpful for skipping on Valgrind, and the sanitizer checks (clang + gcc) on cran diff --git a/r/README.md b/r/README.md index 1509ae7793f6..2a85a82aeb3e 100644 --- a/r/README.md +++ b/r/README.md @@ -65,12 +65,8 @@ packages that contain the Arrow C++ library. On Linux, source package installation will also build necessary C++ dependencies. For a faster, more complete installation, set the environment variable `NOT_CRAN=true`. See `vignette("install", package = "arrow")` for -details. - -For Windows users of R 3.6 and earlier, note that support for AWS S3 is not -available, and the 32-bit version does not support Arrow Datasets. -These features are only supported by the `rtools40` toolchain on Windows -and thus are only available in R >= 4.0. +details. Note that version 9.0.0 was the last version to support +R 3.6 and lower on Windows. ### Installing a development version diff --git a/r/src/safe-call-into-r-impl.cpp b/r/src/safe-call-into-r-impl.cpp index 4eec3a85df89..6b3ebc9fccbf 100644 --- a/r/src/safe-call-into-r-impl.cpp +++ b/r/src/safe-call-into-r-impl.cpp @@ -32,13 +32,7 @@ void InitializeMainRThread() { GetMainRThread().Initialize(); } // [[arrow::export]] bool CanRunWithCapturedR() { #if defined(HAS_UNWIND_PROTECT) - static int on_old_windows = -1; - if (on_old_windows == -1) { - cpp11::function on_old_windows_fun = cpp11::package("arrow")["on_old_windows"]; - on_old_windows = on_old_windows_fun(); - } - - return !on_old_windows && GetMainRThread().Executor() == nullptr; + return GetMainRThread().Executor() == nullptr; #else return false; #endif diff --git a/r/src/safe-call-into-r.h b/r/src/safe-call-into-r.h index 08e8a8c11b6c..5e24a3892b18 100644 --- a/r/src/safe-call-into-r.h +++ b/r/src/safe-call-into-r.h @@ -28,8 +28,7 @@ #include // Unwind protection was added in R 3.5 and some calls here use it -// and crash R in older versions (ARROW-16201). Crashes also occur -// on 32-bit R builds on R 3.6 and lower. Implementation provided +// and crash R in older versions (ARROW-16201). Implementation provided // in safe-call-into-r-impl.cpp so that we can skip some tests // when this feature is not provided. This also checks that there // is not already an event loop registered (via MainRThread::Executor()), @@ -163,8 +162,7 @@ static inline arrow::Status SafeCallIntoRVoid(std::function fun, template arrow::Result RunWithCapturedR(std::function()> make_arrow_call) { if (!CanRunWithCapturedR()) { - return arrow::Status::NotImplemented( - "RunWithCapturedR() without UnwindProtect or on 32-bit Windows + R <= 3.6"); + return arrow::Status::NotImplemented("RunWithCapturedR() without UnwindProtect"); } if (GetMainRThread().Executor() != nullptr) { diff --git a/r/tests/testthat/test-dataset-csv.R b/r/tests/testthat/test-dataset-csv.R index b718bce2ffdd..0718746624ef 100644 --- a/r/tests/testthat/test-dataset-csv.R +++ b/r/tests/testthat/test-dataset-csv.R @@ -42,10 +42,8 @@ test_that("CSV dataset", { expect_r6_class(ds$format, "CsvFileFormat") expect_r6_class(ds$filesystem, "LocalFileSystem") expect_identical(names(ds), c(names(df1), "part")) - if (getRversion() >= "4.0.0") { - # CountRows segfaults on RTools35/R 3.6, so don't test it there - expect_identical(dim(ds), c(20L, 7L)) - } + expect_identical(dim(ds), c(20L, 7L)) + expect_equal( ds %>% select(string = chr, integer = int, part) %>% diff --git a/r/tests/testthat/test-dplyr-arrange.R b/r/tests/testthat/test-dplyr-arrange.R index e6e361483a46..fee1475a44e2 100644 --- a/r/tests/testthat/test-dplyr-arrange.R +++ b/r/tests/testthat/test-dplyr-arrange.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) # randomize order of rows in test data diff --git a/r/tests/testthat/test-dplyr-collapse.R b/r/tests/testthat/test-dplyr-collapse.R index f1b4f9cea3a4..1809cb6e388f 100644 --- a/r/tests/testthat/test-dplyr-collapse.R +++ b/r/tests/testthat/test-dplyr-collapse.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - withr::local_options(list(arrow.summarise.sort = TRUE)) library(dplyr, warn.conflicts = FALSE) diff --git a/r/tests/testthat/test-dplyr-count.R b/r/tests/testthat/test-dplyr-count.R index b94cc10753f1..d263a7576f52 100644 --- a/r/tests/testthat/test-dplyr-count.R +++ b/r/tests/testthat/test-dplyr-count.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) tbl <- example_data diff --git a/r/tests/testthat/test-dplyr-distinct.R b/r/tests/testthat/test-dplyr-distinct.R index 8b42614084a3..c679794d419d 100644 --- a/r/tests/testthat/test-dplyr-distinct.R +++ b/r/tests/testthat/test-dplyr-distinct.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) tbl <- example_data diff --git a/r/tests/testthat/test-dplyr-filter.R b/r/tests/testthat/test-dplyr-filter.R index aed46d801ce4..e019a91cac45 100644 --- a/r/tests/testthat/test-dplyr-filter.R +++ b/r/tests/testthat/test-dplyr-filter.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) library(stringr) diff --git a/r/tests/testthat/test-dplyr-funcs-conditional.R b/r/tests/testthat/test-dplyr-funcs-conditional.R index 4898d1e9e3e7..e1dcd7bb091a 100644 --- a/r/tests/testthat/test-dplyr-funcs-conditional.R +++ b/r/tests/testthat/test-dplyr-funcs-conditional.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) suppressPackageStartupMessages(library(bit64)) diff --git a/r/tests/testthat/test-dplyr-funcs-datetime.R b/r/tests/testthat/test-dplyr-funcs-datetime.R index 25fe23a28dbf..1f13eda74fec 100644 --- a/r/tests/testthat/test-dplyr-funcs-datetime.R +++ b/r/tests/testthat/test-dplyr-funcs-datetime.R @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) # In 3.4 the lack of tzone attribute causes spurious failures skip_on_r_older_than("3.5") diff --git a/r/tests/testthat/test-dplyr-funcs-math.R b/r/tests/testthat/test-dplyr-funcs-math.R index 5f7da4523957..b9a6a3707d42 100644 --- a/r/tests/testthat/test-dplyr-funcs-math.R +++ b/r/tests/testthat/test-dplyr-funcs-math.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) diff --git a/r/tests/testthat/test-dplyr-funcs-string.R b/r/tests/testthat/test-dplyr-funcs-string.R index 4574e33e7488..229347372aed 100644 --- a/r/tests/testthat/test-dplyr-funcs-string.R +++ b/r/tests/testthat/test-dplyr-funcs-string.R @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) skip_if_not_available("utf8proc") library(dplyr, warn.conflicts = FALSE) diff --git a/r/tests/testthat/test-dplyr-funcs-type.R b/r/tests/testthat/test-dplyr-funcs-type.R index 3f274b97f7f1..5770e6ff4397 100644 --- a/r/tests/testthat/test-dplyr-funcs-type.R +++ b/r/tests/testthat/test-dplyr-funcs-type.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) suppressPackageStartupMessages(library(bit64)) suppressPackageStartupMessages(library(lubridate)) diff --git a/r/tests/testthat/test-dplyr-group-by.R b/r/tests/testthat/test-dplyr-group-by.R index 08d6a77d3d15..c7380e96ec30 100644 --- a/r/tests/testthat/test-dplyr-group-by.R +++ b/r/tests/testthat/test-dplyr-group-by.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) library(stringr) diff --git a/r/tests/testthat/test-dplyr-join.R b/r/tests/testthat/test-dplyr-join.R index 9d8e22596a6a..74ad5fa328ec 100644 --- a/r/tests/testthat/test-dplyr-join.R +++ b/r/tests/testthat/test-dplyr-join.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) left <- example_data diff --git a/r/tests/testthat/test-dplyr-mutate.R b/r/tests/testthat/test-dplyr-mutate.R index f1de5c70454a..a6f4e49be346 100644 --- a/r/tests/testthat/test-dplyr-mutate.R +++ b/r/tests/testthat/test-dplyr-mutate.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) library(stringr) diff --git a/r/tests/testthat/test-dplyr-query.R b/r/tests/testthat/test-dplyr-query.R index 1a5b6ec8a7c7..b08016f21703 100644 --- a/r/tests/testthat/test-dplyr-query.R +++ b/r/tests/testthat/test-dplyr-query.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) library(stringr) diff --git a/r/tests/testthat/test-dplyr-select.R b/r/tests/testthat/test-dplyr-select.R index fa5af734cb18..98dcd6396d93 100644 --- a/r/tests/testthat/test-dplyr-select.R +++ b/r/tests/testthat/test-dplyr-select.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - library(dplyr, warn.conflicts = FALSE) library(stringr) diff --git a/r/tests/testthat/test-dplyr-summarize.R b/r/tests/testthat/test-dplyr-summarize.R index 0ee0c5739dbb..283d5d778378 100644 --- a/r/tests/testthat/test-dplyr-summarize.R +++ b/r/tests/testthat/test-dplyr-summarize.R @@ -15,8 +15,6 @@ # specific language governing permissions and limitations # under the License. -skip_if(on_old_windows()) - withr::local_options(list( arrow.summarise.sort = TRUE, rlib_warning_verbosity = "verbose", diff --git a/r/tests/testthat/test-dplyr-union.R b/r/tests/testthat/test-dplyr-union.R index 5cc6f8eea57c..1bf8610c560c 100644 --- a/r/tests/testthat/test-dplyr-union.R +++ b/r/tests/testthat/test-dplyr-union.R @@ -13,9 +13,6 @@ # "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. - -skip_if(on_old_windows()) library(dplyr, warn.conflicts = FALSE) diff --git a/r/vignettes/dataset.Rmd b/r/vignettes/dataset.Rmd index 0890d36ff42e..e58922c23a00 100644 --- a/r/vignettes/dataset.Rmd +++ b/r/vignettes/dataset.Rmd @@ -24,7 +24,7 @@ The total file size is around 37 gigabytes, even in the efficient Parquet file format. That's bigger than memory on most people's computers, so you can't just read it all in and stack it into a single data frame. -In Windows (for R > 3.6) and macOS binary packages, S3 support is included. +In Windows and macOS binary packages, S3 support is included. On Linux, when installing from source, S3 support is not enabled by default, and it has additional system requirements. See `vignette("install", package = "arrow")` for details.