diff --git a/r/R/arrow-info.R b/r/R/arrow-info.R index 916b6683fbc..ddeb0f04efa 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 825a230e78e..fc3a173294b 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 def4d35f825..fc79e063280 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.