Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ repos:
?^ci/scripts/ccache_setup\.sh$|
?^ci/scripts/conan_build\.sh$|
?^ci/scripts/conan_setup\.sh$|
?^ci/scripts/cpp_build\.sh$|
?^ci/scripts/cpp_test\.sh$|
?^ci/scripts/download_tz_database\.sh$|
?^ci/scripts/install_azurite\.sh$|
Expand Down
257 changes: 131 additions & 126 deletions ci/scripts/cpp_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ set -ex
source_dir=${1}/cpp
build_dir=${2}/cpp

: ${ARROW_OFFLINE:=OFF}
: ${ARROW_USE_CCACHE:=OFF}
: ${BUILD_DOCS_CPP:=OFF}
: "${ARROW_OFFLINE:=OFF}"
: "${ARROW_USE_CCACHE:=OFF}"
: "${BUILD_DOCS_CPP:=OFF}"

if [ -x "$(command -v git)" ]; then
git config --global --add safe.directory ${1}
git config --global --add safe.directory "${1}"
fi

# TODO(kszucs): consider to move these to CMake
if [ ! -z "${CONDA_PREFIX}" ] && [ "${ARROW_EMSCRIPTEN:-OFF}" = "OFF" ]; then
if [ -n "${CONDA_PREFIX}" ] && [ "${ARROW_EMSCRIPTEN:-OFF}" = "OFF" ]; then
echo -e "===\n=== Conda environment for build\n==="
conda list

Expand All @@ -42,17 +42,19 @@ if [ ! -z "${CONDA_PREFIX}" ] && [ "${ARROW_EMSCRIPTEN:-OFF}" = "OFF" ]; then
ARROW_CMAKE_ARGS+=" -DCMAKE_RANLIB=${RANLIB}"
fi
export ARROW_CMAKE_ARGS
export ARROW_GANDIVA_PC_CXX_FLAGS=$(echo | ${CXX} -E -Wp,-v -xc++ - 2>&1 | grep '^ ' | awk '{print "-isystem;" substr($1, 1)}' | tr '\n' ';')
ARROW_GANDIVA_PC_CXX_FLAGS=$(echo | ${CXX} -E -Wp,-v -xc++ - 2>&1 | grep '^ ' | awk '{print "-isystem;" substr($1, 1)}' | tr '\n' ';')
export ARROW_GANDIVA_PC_CXX_FLAGS
elif [ -x "$(command -v xcrun)" ]; then
export ARROW_GANDIVA_PC_CXX_FLAGS="-isysroot;$(xcrun --show-sdk-path)"
ARROW_GANDIVA_PC_CXX_FLAGS="-isysroot;$(xcrun --show-sdk-path)"
export ARROW_GANDIVA_PC_CXX_FLAGS
fi

if [ "${GITHUB_ACTIONS:-false}" = "true" ]; then
case "$(uname)" in
Linux|Darwin|MINGW*)
if [ "${ARROW_GDB:-OFF}" != "ON" ]; then
: ${ARROW_C_FLAGS_DEBUG:=-g1}
: ${ARROW_CXX_FLAGS_DEBUG:=-g1}
: "${ARROW_C_FLAGS_DEBUG:=-g1}"
: "${ARROW_CXX_FLAGS_DEBUG:=-g1}"
fi
;;
*)
Expand Down Expand Up @@ -97,12 +99,13 @@ case "$(uname)" in
;;
esac

mkdir -p ${build_dir}
pushd ${build_dir}
mkdir -p "${build_dir}"
pushd "${build_dir}"

if [ "${ARROW_OFFLINE}" = "ON" ]; then
${source_dir}/thirdparty/download_dependencies.sh ${PWD}/thirdparty > \
"${source_dir}"/thirdparty/download_dependencies.sh "${PWD}"/thirdparty > \
enable_offline_build.sh
# shellcheck source=/dev/null
. enable_offline_build.sh
# We can't use mv because we can't remove /etc/resolv.conf in Docker
# container.
Expand Down Expand Up @@ -141,164 +144,166 @@ if [ "${ARROW_USE_MESON:-OFF}" = "ON" ]; then
fi
fi
meson setup \
--prefix=${MESON_PREFIX:-${ARROW_HOME}} \
--buildtype=${ARROW_BUILD_TYPE:-debug} \
--prefix="${MESON_PREFIX:-${ARROW_HOME}}" \
--buildtype="${ARROW_BUILD_TYPE:-debug}" \
--pkg-config-path="${CONDA_PREFIX}/lib/pkgconfig/" \
-Dauto_features=enabled \
-Dfuzzing=disabled \
-Ds3=disabled \
. \
${source_dir}
"${source_dir}"

CC="${ORIGINAL_CC}"
CXX="${ORIGINAL_CXX}"
elif [ "${ARROW_EMSCRIPTEN:-OFF}" = "ON" ]; then
if [ "${UBUNTU}" = "20.04" ]; then
echo "arrow emscripten build is not supported on Ubuntu 20.04, run with UBUNTU=22.04"
exit -1
exit 1
fi
n_jobs=2 # Emscripten build fails on docker unless this is set really low
# shellcheck source=/dev/null
source ~/emsdk/emsdk_env.sh
export CMAKE_INSTALL_PREFIX=$(em-config CACHE)/sysroot
CMAKE_INSTALL_PREFIX=$(em-config CACHE)/sysroot
export CMAKE_INSTALL_PREFIX
# conda sets LDFLAGS / CFLAGS etc. which break
# emcmake so we unset them
unset LDFLAGS CFLAGS CXXFLAGS CPPFLAGS
emcmake cmake \
--preset=ninja-${ARROW_BUILD_TYPE:-debug}-emscripten \
-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE:-OFF} \
--preset=ninja-"${ARROW_BUILD_TYPE:-debug}"-emscripten \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
--preset=ninja-"${ARROW_BUILD_TYPE:-debug}"-emscripten \
--preset="ninja-${ARROW_BUILD_TYPE:-debug}-emscripten" \

-DCMAKE_VERBOSE_MAKEFILE="${CMAKE_VERBOSE_MAKEFILE:-OFF}" \
-DCMAKE_C_FLAGS="${CFLAGS:-}" \
-DCMAKE_CXX_FLAGS="${CXXFLAGS:-}" \
-DCMAKE_CXX_STANDARD="${CMAKE_CXX_STANDARD:-17}" \
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR:-lib} \
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX:-${ARROW_HOME}} \
-DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD:-OFF} \
${ARROW_CMAKE_ARGS} \
${source_dir}
-DCMAKE_INSTALL_LIBDIR="${CMAKE_INSTALL_LIBDIR:-lib}" \
-DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX:-${ARROW_HOME}}" \
-DCMAKE_UNITY_BUILD="${CMAKE_UNITY_BUILD:-OFF}" \
"${ARROW_CMAKE_ARGS}" \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this safe?

ARROW_CMAKE_ARGS may have multiple arguments such as -DXXX=111 -DYYY=222.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

Deos ARROW_CMAKE_ARGS set via Environment variables? (A caller pass ARROW_CMAKE_ARGS from out side of a script)?

Should we convert ARROW_CMAKE_ARGS to ARROW_CMAKE_ARG_ARRAY using
read -r -a ARROW_CMAKE_ARG_ARRAY <<< "$ARROW_CMAKE_ARGS" ?

and Extract the variable using "${ARROW_CMAKE_ARG_ARRAY[@]}"

rg 'ARROW_CMAKE_ARGS' ci/scripts/cpp_build.sh
39:    ARROW_CMAKE_ARGS+=" -DCMAKE_AR=${AR}"
42:    ARROW_CMAKE_ARGS+=" -DCMAKE_RANLIB=${RANLIB}"
44:  export ARROW_CMAKE_ARGS
180:    "${ARROW_CMAKE_ARGS}" \
185:    "${ARROW_CMAKE_ARGS}" \
292:    "${ARROW_CMAKE_ARGS}" \
rg ARROW_CMAKE_ARGS
matlab/CMakeLists.txt
40:  set(ARROW_CMAKE_ARGS
94:                      CMAKE_ARGS "${ARROW_CMAKE_ARGS}"

ci/scripts/cpp_build.sh
39:    ARROW_CMAKE_ARGS+=" -DCMAKE_AR=${AR}"
42:    ARROW_CMAKE_ARGS+=" -DCMAKE_RANLIB=${RANLIB}"
44:  export ARROW_CMAKE_ARGS
180:    "${ARROW_CMAKE_ARGS}" \
185:    "${ARROW_CMAKE_ARGS}" \
292:    "${ARROW_CMAKE_ARGS}" \

ci/docker/cpp-jni.dockerfile
110:    ARROW_CMAKE_ARGS="-DARROW_BUILD_TESTS=ON" \

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The MinGW failures seem related to this expansion:

cmake -Dabsl_SOURCE= -DARROW_ACERO=OFF -DARROW_AZURE=OFF -DARROW_BOOST_USE_SHARED=ON -DARROW_BUILD_BENCHMARKS_REFERENCE=OFF -DARROW_BUILD_BENCHMARKS=OFF -DARROW_BUILD_EXAMPLES=OFF -DARROW_BUILD_INTEGRATION=OFF -DARROW_BUILD_SHARED=ON -DARROW_BUILD_STATIC=OFF -DARROW_BUILD_TESTS=ON -DARROW_BUILD_UTILITIES=ON -DARROW_COMPUTE=ON -DARROW_CSV=ON -DARROW_CUDA=OFF -DARROW_CXXFLAGS= -DARROW_CXX_FLAGS_DEBUG=-g1 -DARROW_CXX_FLAGS_RELEASE= -DARROW_CXX_FLAGS_RELWITHDEBINFO= -DARROW_C_FLAGS_DEBUG=-g1 -DARROW_C_FLAGS_RELEASE= -DARROW_C_FLAGS_RELWITHDEBINFO= -DARROW_DATASET=ON -DARROW_DEPENDENCY_SOURCE=AUTO -DARROW_DEPENDENCY_USE_SHARED=ON -DARROW_ENABLE_THREADING=ON -DARROW_ENABLE_TIMING_TESTS=OFF -DARROW_EXTRA_ERROR_CONTEXT=OFF -DARROW_FILESYSTEM=ON -DARROW_FLIGHT=ON -DARROW_FLIGHT_SQL=ON -DARROW_FLIGHT_SQL_ODBC=OFF -DARROW_FUZZING=OFF -DARROW_GANDIVA_PC_CXX_FLAGS= -DARROW_GANDIVA=ON -DARROW_GCS=ON -DARROW_HDFS=OFF -DARROW_INSTALL_NAME_RPATH=ON -DARROW_JEMALLOC=OFF -DARROW_JSON=ON -DARROW_LARGE_MEMORY_TESTS=OFF -DARROW_MIMALLOC=ON -DARROW_ORC=OFF -DARROW_PARQUET=ON -DARROW_RUNTIME_SIMD_LEVEL=MAX -DARROW_S3=ON -DARROW_SIMD_LEVEL=DEFAULT -DARROW_SUBSTRAIT=ON -DARROW_TEST_LINKAGE=shared -DARROW_TEST_MEMCHECK=OFF -DARROW_USE_ASAN=OFF -DARROW_USE_CCACHE=ON -DARROW_USE_GLOG=OFF -DARROW_USE_LLD=OFF -DARROW_USE_MOLD=OFF -DARROW_USE_STATIC_CRT=OFF -DARROW_USE_TSAN=OFF -DARROW_USE_UBSAN=OFF -DARROW_VERBOSE_THIRDPARTY_BUILD=OFF -DARROW_WITH_BROTLI=ON -DARROW_WITH_BZ2=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_OPENTELEMETRY=OFF -DARROW_WITH_MUSL=OFF -DARROW_WITH_SNAPPY=ON -DARROW_WITH_UTF8PROC=ON -DARROW_WITH_ZLIB=ON -DARROW_WITH_ZSTD=ON -DAWSSDK_SOURCE= -DAzure_SOURCE= -Dbenchmark_SOURCE= -DBOOST_SOURCE= -DBrotli_SOURCE= -DBUILD_WARNING_LEVEL=CHECKIN -Dc-ares_SOURCE= -DCMAKE_BUILD_TYPE=release -DCMAKE_VERBOSE_MAKEFILE=OFF -DCMAKE_C_FLAGS= -DCMAKE_CXX_FLAGS= -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX=/mingw64 -DCMAKE_UNITY_BUILD=OFF -DCUDAToolkit_ROOT= -Dgflags_SOURCE= -Dgoogle_cloud_cpp_storage_SOURCE= -DgRPC_SOURCE= -DGTest_SOURCE= -Dlz4_SOURCE= -Dopentelemetry-cpp_SOURCE= -DORC_SOURCE= -DPARQUET_BUILD_EXAMPLES=OFF -DPARQUET_BUILD_EXECUTABLES=OFF -DPARQUET_REQUIRE_ENCRYPTION=ON -DProtobuf_SOURCE= -DRapidJSON_SOURCE= -Dre2_SOURCE= -DSnappy_SOURCE= -DThrift_SOURCE= -Dutf8proc_SOURCE= -Dzstd_SOURCE= -Dxsimd_SOURCE= -G Ninja '-DARROW_PACKAGE_PREFIX=/mingw64 -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' /d/a/arrow/arrow/cpp

See:

ARROW_CMAKE_ARGS: >-
-DARROW_PACKAGE_PREFIX=/${{ matrix.msystem_lower}}
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@raulcd Thanks I'll check it.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kou Could you comment about the ARROW_CMAKE_ARGS?

#48223 (comment)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we avoid using " here?

"${source_dir}"
elif [ -n "${CMAKE_PRESET}" ]; then
cmake \
--preset="${CMAKE_PRESET}" \
${ARROW_CMAKE_ARGS} \
${source_dir}
"${ARROW_CMAKE_ARGS}" \
"${source_dir}"
else
cmake \
-Dabsl_SOURCE=${absl_SOURCE:-} \
-DARROW_ACERO=${ARROW_ACERO:-OFF} \
-DARROW_AZURE=${ARROW_AZURE:-OFF} \
-DARROW_BOOST_USE_SHARED=${ARROW_BOOST_USE_SHARED:-ON} \
-DARROW_BUILD_BENCHMARKS_REFERENCE=${ARROW_BUILD_BENCHMARKS:-OFF} \
-DARROW_BUILD_BENCHMARKS=${ARROW_BUILD_BENCHMARKS:-OFF} \
-DARROW_BUILD_EXAMPLES=${ARROW_BUILD_EXAMPLES:-OFF} \
-DARROW_BUILD_INTEGRATION=${ARROW_BUILD_INTEGRATION:-OFF} \
-DARROW_BUILD_SHARED=${ARROW_BUILD_SHARED:-ON} \
-DARROW_BUILD_STATIC=${ARROW_BUILD_STATIC:-ON} \
-DARROW_BUILD_TESTS=${ARROW_BUILD_TESTS:-OFF} \
-DARROW_BUILD_UTILITIES=${ARROW_BUILD_UTILITIES:-ON} \
-DARROW_COMPUTE=${ARROW_COMPUTE:-ON} \
-DARROW_CSV=${ARROW_CSV:-ON} \
-DARROW_CUDA=${ARROW_CUDA:-OFF} \
-DARROW_CXXFLAGS=${ARROW_CXXFLAGS:-} \
-Dabsl_SOURCE="${absl_SOURCE:-}" \
-DARROW_ACERO="${ARROW_ACERO:-OFF}" \
-DARROW_AZURE="${ARROW_AZURE:-OFF}" \
-DARROW_BOOST_USE_SHARED="${ARROW_BOOST_USE_SHARED:-ON}" \
-DARROW_BUILD_BENCHMARKS_REFERENCE="${ARROW_BUILD_BENCHMARKS:-OFF}" \
-DARROW_BUILD_BENCHMARKS="${ARROW_BUILD_BENCHMARKS:-OFF}" \
-DARROW_BUILD_EXAMPLES="${ARROW_BUILD_EXAMPLES:-OFF}" \
-DARROW_BUILD_INTEGRATION="${ARROW_BUILD_INTEGRATION:-OFF}" \
-DARROW_BUILD_SHARED="${ARROW_BUILD_SHARED:-ON}" \
-DARROW_BUILD_STATIC="${ARROW_BUILD_STATIC:-ON}" \
-DARROW_BUILD_TESTS="${ARROW_BUILD_TESTS:-OFF}" \
-DARROW_BUILD_UTILITIES="${ARROW_BUILD_UTILITIES:-ON}" \
-DARROW_COMPUTE="${ARROW_COMPUTE:-ON}" \
-DARROW_CSV="${ARROW_CSV:-ON}" \
-DARROW_CUDA="${ARROW_CUDA:-OFF}" \
-DARROW_CXXFLAGS="${ARROW_CXXFLAGS:-}" \
-DARROW_CXX_FLAGS_DEBUG="${ARROW_CXX_FLAGS_DEBUG:-}" \
-DARROW_CXX_FLAGS_RELEASE="${ARROW_CXX_FLAGS_RELEASE:-}" \
-DARROW_CXX_FLAGS_RELWITHDEBINFO="${ARROW_CXX_FLAGS_RELWITHDEBINFO:-}" \
-DARROW_C_FLAGS_DEBUG="${ARROW_C_FLAGS_DEBUG:-}" \
-DARROW_C_FLAGS_RELEASE="${ARROW_C_FLAGS_RELEASE:-}" \
-DARROW_C_FLAGS_RELWITHDEBINFO="${ARROW_C_FLAGS_RELWITHDEBINFO:-}" \
-DARROW_DATASET=${ARROW_DATASET:-OFF} \
-DARROW_DEPENDENCY_SOURCE=${ARROW_DEPENDENCY_SOURCE:-AUTO} \
-DARROW_DEPENDENCY_USE_SHARED=${ARROW_DEPENDENCY_USE_SHARED:-ON} \
-DARROW_ENABLE_THREADING=${ARROW_ENABLE_THREADING:-ON} \
-DARROW_ENABLE_TIMING_TESTS=${ARROW_ENABLE_TIMING_TESTS:-ON} \
-DARROW_EXTRA_ERROR_CONTEXT=${ARROW_EXTRA_ERROR_CONTEXT:-OFF} \
-DARROW_FILESYSTEM=${ARROW_FILESYSTEM:-ON} \
-DARROW_FLIGHT=${ARROW_FLIGHT:-OFF} \
-DARROW_FLIGHT_SQL=${ARROW_FLIGHT_SQL:-OFF} \
-DARROW_FLIGHT_SQL_ODBC=${ARROW_FLIGHT_SQL_ODBC:-OFF} \
-DARROW_FUZZING=${ARROW_FUZZING:-OFF} \
-DARROW_GANDIVA_PC_CXX_FLAGS=${ARROW_GANDIVA_PC_CXX_FLAGS:-} \
-DARROW_GANDIVA=${ARROW_GANDIVA:-OFF} \
-DARROW_GCS=${ARROW_GCS:-OFF} \
-DARROW_HDFS=${ARROW_HDFS:-ON} \
-DARROW_INSTALL_NAME_RPATH=${ARROW_INSTALL_NAME_RPATH:-ON} \
-DARROW_JEMALLOC=${ARROW_JEMALLOC:-OFF} \
-DARROW_JSON=${ARROW_JSON:-ON} \
-DARROW_LARGE_MEMORY_TESTS=${ARROW_LARGE_MEMORY_TESTS:-OFF} \
-DARROW_MIMALLOC=${ARROW_MIMALLOC:-ON} \
-DARROW_ORC=${ARROW_ORC:-OFF} \
-DARROW_PARQUET=${ARROW_PARQUET:-OFF} \
-DARROW_RUNTIME_SIMD_LEVEL=${ARROW_RUNTIME_SIMD_LEVEL:-MAX} \
-DARROW_S3=${ARROW_S3:-OFF} \
-DARROW_SIMD_LEVEL=${ARROW_SIMD_LEVEL:-DEFAULT} \
-DARROW_SUBSTRAIT=${ARROW_SUBSTRAIT:-OFF} \
-DARROW_TEST_LINKAGE=${ARROW_TEST_LINKAGE:-shared} \
-DARROW_TEST_MEMCHECK=${ARROW_TEST_MEMCHECK:-OFF} \
-DARROW_USE_ASAN=${ARROW_USE_ASAN:-OFF} \
-DARROW_USE_CCACHE=${ARROW_USE_CCACHE:-ON} \
-DARROW_USE_GLOG=${ARROW_USE_GLOG:-OFF} \
-DARROW_USE_LLD=${ARROW_USE_LLD:-OFF} \
-DARROW_USE_MOLD=${ARROW_USE_MOLD:-OFF} \
-DARROW_USE_STATIC_CRT=${ARROW_USE_STATIC_CRT:-OFF} \
-DARROW_USE_TSAN=${ARROW_USE_TSAN:-OFF} \
-DARROW_USE_UBSAN=${ARROW_USE_UBSAN:-OFF} \
-DARROW_VERBOSE_THIRDPARTY_BUILD=${ARROW_VERBOSE_THIRDPARTY_BUILD:-OFF} \
-DARROW_WITH_BROTLI=${ARROW_WITH_BROTLI:-OFF} \
-DARROW_WITH_BZ2=${ARROW_WITH_BZ2:-OFF} \
-DARROW_WITH_LZ4=${ARROW_WITH_LZ4:-OFF} \
-DARROW_WITH_OPENTELEMETRY=${ARROW_WITH_OPENTELEMETRY:-OFF} \
-DARROW_WITH_MUSL=${ARROW_WITH_MUSL:-OFF} \
-DARROW_WITH_SNAPPY=${ARROW_WITH_SNAPPY:-OFF} \
-DARROW_WITH_UTF8PROC=${ARROW_WITH_UTF8PROC:-ON} \
-DARROW_WITH_ZLIB=${ARROW_WITH_ZLIB:-OFF} \
-DARROW_WITH_ZSTD=${ARROW_WITH_ZSTD:-OFF} \
-DAWSSDK_SOURCE=${AWSSDK_SOURCE:-} \
-DAzure_SOURCE=${Azure_SOURCE:-} \
-Dbenchmark_SOURCE=${benchmark_SOURCE:-} \
-DBOOST_SOURCE=${BOOST_SOURCE:-} \
-DBrotli_SOURCE=${Brotli_SOURCE:-} \
-DBUILD_WARNING_LEVEL=${BUILD_WARNING_LEVEL:-CHECKIN} \
-Dc-ares_SOURCE=${cares_SOURCE:-} \
-DCMAKE_BUILD_TYPE=${ARROW_BUILD_TYPE:-debug} \
-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE:-OFF} \
-DARROW_DATASET="${ARROW_DATASET:-OFF}" \
-DARROW_DEPENDENCY_SOURCE="${ARROW_DEPENDENCY_SOURCE:-AUTO}" \
-DARROW_DEPENDENCY_USE_SHARED="${ARROW_DEPENDENCY_USE_SHARED:-ON}" \
-DARROW_ENABLE_THREADING="${ARROW_ENABLE_THREADING:-ON}" \
-DARROW_ENABLE_TIMING_TESTS="${ARROW_ENABLE_TIMING_TESTS:-ON}" \
-DARROW_EXTRA_ERROR_CONTEXT="${ARROW_EXTRA_ERROR_CONTEXT:-OFF}" \
-DARROW_FILESYSTEM="${ARROW_FILESYSTEM:-ON}" \
-DARROW_FLIGHT="${ARROW_FLIGHT:-OFF}" \
-DARROW_FLIGHT_SQL="${ARROW_FLIGHT_SQL:-OFF}" \
-DARROW_FLIGHT_SQL_ODBC="${ARROW_FLIGHT_SQL_ODBC:-OFF}" \
-DARROW_FUZZING="${ARROW_FUZZING:-OFF}" \
-DARROW_GANDIVA_PC_CXX_FLAGS="${ARROW_GANDIVA_PC_CXX_FLAGS:-}" \
-DARROW_GANDIVA="${ARROW_GANDIVA:-OFF}" \
-DARROW_GCS="${ARROW_GCS:-OFF}" \
-DARROW_HDFS="${ARROW_HDFS:-ON}" \
-DARROW_INSTALL_NAME_RPATH="${ARROW_INSTALL_NAME_RPATH:-ON}" \
-DARROW_JEMALLOC="${ARROW_JEMALLOC:-OFF}" \
-DARROW_JSON="${ARROW_JSON:-ON}" \
-DARROW_LARGE_MEMORY_TESTS="${ARROW_LARGE_MEMORY_TESTS:-OFF}" \
-DARROW_MIMALLOC="${ARROW_MIMALLOC:-ON}" \
-DARROW_ORC="${ARROW_ORC:-OFF}" \
-DARROW_PARQUET="${ARROW_PARQUET:-OFF}" \
-DARROW_RUNTIME_SIMD_LEVEL="${ARROW_RUNTIME_SIMD_LEVEL:-MAX}" \
-DARROW_S3="${ARROW_S3:-OFF}" \
-DARROW_SIMD_LEVEL="${ARROW_SIMD_LEVEL:-DEFAULT}" \
-DARROW_SUBSTRAIT="${ARROW_SUBSTRAIT:-OFF}" \
-DARROW_TEST_LINKAGE="${ARROW_TEST_LINKAGE:-shared}" \
-DARROW_TEST_MEMCHECK="${ARROW_TEST_MEMCHECK:-OFF}" \
-DARROW_USE_ASAN="${ARROW_USE_ASAN:-OFF}" \
-DARROW_USE_CCACHE="${ARROW_USE_CCACHE:-ON}" \
-DARROW_USE_GLOG="${ARROW_USE_GLOG:-OFF}" \
-DARROW_USE_LLD="${ARROW_USE_LLD:-OFF}" \
-DARROW_USE_MOLD="${ARROW_USE_MOLD:-OFF}" \
-DARROW_USE_STATIC_CRT="${ARROW_USE_STATIC_CRT:-OFF}" \
-DARROW_USE_TSAN="${ARROW_USE_TSAN:-OFF}" \
-DARROW_USE_UBSAN="${ARROW_USE_UBSAN:-OFF}" \
-DARROW_VERBOSE_THIRDPARTY_BUILD="${ARROW_VERBOSE_THIRDPARTY_BUILD:-OFF}" \
-DARROW_WITH_BROTLI="${ARROW_WITH_BROTLI:-OFF}" \
-DARROW_WITH_BZ2="${ARROW_WITH_BZ2:-OFF}" \
-DARROW_WITH_LZ4="${ARROW_WITH_LZ4:-OFF}" \
-DARROW_WITH_OPENTELEMETRY="${ARROW_WITH_OPENTELEMETRY:-OFF}" \
-DARROW_WITH_MUSL="${ARROW_WITH_MUSL:-OFF}" \
-DARROW_WITH_SNAPPY="${ARROW_WITH_SNAPPY:-OFF}" \
-DARROW_WITH_UTF8PROC="${ARROW_WITH_UTF8PROC:-ON}" \
-DARROW_WITH_ZLIB="${ARROW_WITH_ZLIB:-OFF}" \
-DARROW_WITH_ZSTD="${ARROW_WITH_ZSTD:-OFF}" \
-DAWSSDK_SOURCE="${AWSSDK_SOURCE:-}" \
-DAzure_SOURCE="${Azure_SOURCE:-}" \
-Dbenchmark_SOURCE="${benchmark_SOURCE:-}" \
-DBOOST_SOURCE="${BOOST_SOURCE:-}" \
-DBrotli_SOURCE="${Brotli_SOURCE:-}" \
-DBUILD_WARNING_LEVEL="${BUILD_WARNING_LEVEL:-CHECKIN}" \
-Dc-ares_SOURCE="${cares_SOURCE:-}" \
-DCMAKE_BUILD_TYPE="${ARROW_BUILD_TYPE:-debug}" \
-DCMAKE_VERBOSE_MAKEFILE="${CMAKE_VERBOSE_MAKEFILE:-OFF}" \
-DCMAKE_C_FLAGS="${CFLAGS:-}" \
-DCMAKE_CXX_FLAGS="${CXXFLAGS:-}" \
-DCMAKE_CXX_STANDARD="${CMAKE_CXX_STANDARD:-17}" \
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR:-lib} \
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX:-${ARROW_HOME}} \
-DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD:-OFF} \
-DCUDAToolkit_ROOT=${CUDAToolkit_ROOT:-} \
-Dgflags_SOURCE=${gflags_SOURCE:-} \
-Dgoogle_cloud_cpp_storage_SOURCE=${google_cloud_cpp_storage_SOURCE:-} \
-DgRPC_SOURCE=${gRPC_SOURCE:-} \
-DGTest_SOURCE=${GTest_SOURCE:-} \
-Dlz4_SOURCE=${lz4_SOURCE:-} \
-Dopentelemetry-cpp_SOURCE=${opentelemetry_cpp_SOURCE:-} \
-DORC_SOURCE=${ORC_SOURCE:-} \
-DPARQUET_BUILD_EXAMPLES=${PARQUET_BUILD_EXAMPLES:-OFF} \
-DPARQUET_BUILD_EXECUTABLES=${PARQUET_BUILD_EXECUTABLES:-OFF} \
-DPARQUET_REQUIRE_ENCRYPTION=${PARQUET_REQUIRE_ENCRYPTION:-ON} \
-DProtobuf_SOURCE=${Protobuf_SOURCE:-} \
-DRapidJSON_SOURCE=${RapidJSON_SOURCE:-} \
-Dre2_SOURCE=${re2_SOURCE:-} \
-DSnappy_SOURCE=${Snappy_SOURCE:-} \
-DThrift_SOURCE=${Thrift_SOURCE:-} \
-Dutf8proc_SOURCE=${utf8proc_SOURCE:-} \
-Dzstd_SOURCE=${zstd_SOURCE:-} \
-Dxsimd_SOURCE=${xsimd_SOURCE:-} \
-DCMAKE_INSTALL_LIBDIR="${CMAKE_INSTALL_LIBDIR:-lib}" \
-DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX:-${ARROW_HOME}}" \
-DCMAKE_UNITY_BUILD="${CMAKE_UNITY_BUILD:-OFF}" \
-DCUDAToolkit_ROOT="${CUDAToolkit_ROOT:-}" \
-Dgflags_SOURCE="${gflags_SOURCE:-}" \
-Dgoogle_cloud_cpp_storage_SOURCE="${google_cloud_cpp_storage_SOURCE:-}" \
-DgRPC_SOURCE="${gRPC_SOURCE:-}" \
-DGTest_SOURCE="${GTest_SOURCE:-}" \
-Dlz4_SOURCE="${lz4_SOURCE:-}" \
-Dopentelemetry-cpp_SOURCE="${opentelemetry_cpp_SOURCE:-}" \
-DORC_SOURCE="${ORC_SOURCE:-}" \
-DPARQUET_BUILD_EXAMPLES="${PARQUET_BUILD_EXAMPLES:-OFF}" \
-DPARQUET_BUILD_EXECUTABLES="${PARQUET_BUILD_EXECUTABLES:-OFF}" \
-DPARQUET_REQUIRE_ENCRYPTION="${PARQUET_REQUIRE_ENCRYPTION:-ON}" \
-DProtobuf_SOURCE="${Protobuf_SOURCE:-}" \
-DRapidJSON_SOURCE="${RapidJSON_SOURCE:-}" \
-Dre2_SOURCE="${re2_SOURCE:-}" \
-DSnappy_SOURCE="${Snappy_SOURCE:-}" \
-DThrift_SOURCE="${Thrift_SOURCE:-}" \
-Dutf8proc_SOURCE="${utf8proc_SOURCE:-}" \
-Dzstd_SOURCE="${zstd_SOURCE:-}" \
-Dxsimd_SOURCE="${xsimd_SOURCE:-}" \
-G "${CMAKE_GENERATOR:-Ninja}" \
${ARROW_CMAKE_ARGS} \
${source_dir}
"${ARROW_CMAKE_ARGS}" \
"${source_dir}"
fi

: ${ARROW_BUILD_PARALLEL:=$[${n_jobs} + 1]}
: "${ARROW_BUILD_PARALLEL:=$((n_jobs + 1))}"
if [ "${ARROW_USE_MESON:-OFF}" = "ON" ]; then
time meson compile -j ${ARROW_BUILD_PARALLEL}
time meson compile -j "${ARROW_BUILD_PARALLEL}"
meson install
# Remove all added files in cpp/subprojects/ because they may have
# unreadable permissions on Docker host.
pushd "${source_dir}"
meson subprojects purge --confirm --include-cache
popd
else
: ${CMAKE_BUILD_PARALLEL_LEVEL:=${ARROW_BUILD_PARALLEL}}
: "${CMAKE_BUILD_PARALLEL_LEVEL:=${ARROW_BUILD_PARALLEL}}"
export CMAKE_BUILD_PARALLEL_LEVEL
time cmake --build . --target install
fi
Expand All @@ -322,7 +327,7 @@ if [ -x "$(command -v ldconfig)" ]; then
SUDO=
fi
fi
${SUDO} ldconfig ${ARROW_HOME}/${CMAKE_INSTALL_LIBDIR:-lib}
${SUDO} ldconfig "${ARROW_HOME}/${CMAKE_INSTALL_LIBDIR:-lib}"
fi

if [ "${ARROW_USE_CCACHE}" == "ON" ]; then
Expand All @@ -336,7 +341,7 @@ if command -v sccache &> /dev/null; then
fi

if [ "${BUILD_DOCS_CPP}" == "ON" ]; then
pushd ${source_dir}/apidoc
pushd "${source_dir}/apidoc"
OUTPUT_DIRECTORY=${build_dir}/apidoc doxygen
popd
fi
Loading