Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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