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.

Reply via email to