This is an automated email from the ASF dual-hosted git repository.
jonkeane pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 67bbf846d0 GH-41952: [R] Turn S3 and ZSTD on by default for macOS
(#42210)
67bbf846d0 is described below
commit 67bbf846d0d47075e1711b3fb4cf8fb05c74bd09
Author: Jonathan Keane <[email protected]>
AuthorDate: Sun Jun 23 16:03:41 2024 -0500
GH-41952: [R] Turn S3 and ZSTD on by default for macOS (#42210)
Changeup `nixlibs.R` so that we enable S3 and ZSTD by default on CRAN. I've
checked this against the CRAN macbuilder to confirm it does work (that's not a
guarantee it'll work on other CRAN maintained macOS builders, but a good
indication).
It also removes gcs from the list of features we expect to be on and warn
folks about if it is not.
### Rationale for this change
So that our builds are more fully featured.
### What changes are included in this PR?
Enable `ARROW_S3` by default when building form source on macOS.
### Are these changes tested?
Existing CI should not fail.
### Are there any user-facing changes?
Getting Arrow from the canonical repository would be more fully featured.
* GitHub Issue: #41952
Lead-authored-by: Jonathan Keane <[email protected]>
Co-authored-by: Neal Richardson <[email protected]>
Signed-off-by: Jonathan Keane <[email protected]>
---
r/R/arrow-info.R | 2 +-
r/inst/build_arrow_static.sh | 1 +
r/tools/nixlibs.R | 26 +++++++++++++++++++++-----
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/r/R/arrow-info.R b/r/R/arrow-info.R
index 916b6683fb..ddeb0f04ef 100644
--- a/r/R/arrow-info.R
+++ b/r/R/arrow-info.R
@@ -140,7 +140,7 @@ some_features_are_off <- function(features) {
# `features` is a named logical vector (as in arrow_info()$capabilities)
# Let's exclude some less relevant ones
# jemalloc is only included because it is sometimes disabled in our build
process
- blocklist <- c("lzo", "bz2", "brotli", "substrait", "jemalloc")
+ blocklist <- c("lzo", "bz2", "brotli", "substrait", "jemalloc", "gcs")
# Return TRUE if any of the other features are FALSE
!all(features[setdiff(names(features), blocklist)])
}
diff --git a/r/inst/build_arrow_static.sh b/r/inst/build_arrow_static.sh
index 825a230e78..fc3a173294 100755
--- a/r/inst/build_arrow_static.sh
+++ b/r/inst/build_arrow_static.sh
@@ -65,6 +65,7 @@ esac
mkdir -p "${BUILD_DIR}"
pushd "${BUILD_DIR}"
${CMAKE} -DARROW_BOOST_USE_SHARED=OFF \
+ -DARROW_SNAPPY_USE_SHARED=OFF \
-DARROW_BUILD_TESTS=OFF \
-DARROW_BUILD_SHARED=OFF \
-DARROW_BUILD_STATIC=ON \
diff --git a/r/tools/nixlibs.R b/r/tools/nixlibs.R
index def4d35f82..fc79e06328 100644
--- a/r/tools/nixlibs.R
+++ b/r/tools/nixlibs.R
@@ -536,7 +536,7 @@ build_libarrow <- function(src_dir, dst_dir) {
}
cleanup(build_dir)
- env_var_list <- c(
+ env_var_list <- list(
SOURCE_DIR = src_dir,
BUILD_DIR = build_dir,
DEST_DIR = dst_dir,
@@ -574,6 +574,14 @@ build_libarrow <- function(src_dir, dst_dir) {
env_var_list <- c(env_var_list, setNames("BUNDLED", env_var))
}
}
+ # We also _do_ want to enable S3 and ZSTD by default
+ # so that binaries built on CRAN from source are fully featured
+ # but defer to the env vars if those are set
+ env_var_list <- c(
+ env_var_list,
+ ARROW_S3 = Sys.getenv("ARROW_S3", "ON"),
+ ARROW_WITH_ZSTD = Sys.getenv("ARROW_WITH_ZSTD", "ON")
+ )
}
env_var_list <- with_cloud_support(env_var_list)
@@ -814,8 +822,16 @@ set_thirdparty_urls <- function(env_var_list) {
env_var_list
}
-is_feature_requested <- function(env_varname, default =
env_is("LIBARROW_MINIMAL", "false")) {
- env_value <- tolower(Sys.getenv(env_varname))
+# this is generally about features that people asked for via environment
variables, but
+# for some cases (like S3 when we override it in this script) we might find
those in
+# env_var_list
+is_feature_requested <- function(env_varname, env_var_list, default =
env_is("LIBARROW_MINIMAL", "false")) {
+ # look in the environment first, but then use the env_var_list if nothing is
found
+ env_var_list_value <- env_var_list[[env_varname]]
+ if (is.null(env_var_list_value)) {
+ env_var_list_value <- ""
+ }
+ env_value <- tolower(Sys.getenv(env_varname, env_var_list_value))
if (identical(env_value, "off")) {
# If e.g. ARROW_MIMALLOC=OFF explicitly, override default
requested <- FALSE
@@ -828,8 +844,8 @@ is_feature_requested <- function(env_varname, default =
env_is("LIBARROW_MINIMAL
}
with_cloud_support <- function(env_var_list) {
- arrow_s3 <- is_feature_requested("ARROW_S3")
- arrow_gcs <- is_feature_requested("ARROW_GCS")
+ arrow_s3 <- is_feature_requested("ARROW_S3", env_var_list)
+ arrow_gcs <- is_feature_requested("ARROW_GCS", env_var_list)
if (arrow_s3 || arrow_gcs) {
# User wants S3 or GCS support.