This is an automated email from the ASF dual-hosted git repository.
raulcd 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 7667f41324 GH-50575: [CI][Dev] Fix shellcheck errors in the
ci/scripts/python_wheel_xlinux_build.sh (#50577)
7667f41324 is described below
commit 7667f41324f4df79353019bbd323832ce67d6390
Author: Hiroyuki Sato <[email protected]>
AuthorDate: Wed Jul 22 18:47:38 2026 +0900
GH-50575: [CI][Dev] Fix shellcheck errors in the
ci/scripts/python_wheel_xlinux_build.sh (#50577)
### Rationale for this change
This is the sub issue #44748.
* SC2045: Use Bash file test operators instead of `ls`.
* SC2086: Double quote to prevent globbing and word splitting.
* SC2223: This default assignment may cause DoS due to globbing. Quote it.
```
shellcheck ci/scripts/python_wheel_xlinux_build.sh
In ci/scripts/python_wheel_xlinux_build.sh line 36:
if [[ -f visible_symbols.log && `cat visible_symbols.log | wc -l` -eq 0
]]; then
^-- SC2006 (style): Use $(...) notation
instead of legacy backticks `...`.
Did you mean:
if [[ -f visible_symbols.log && $(cat visible_symbols.log | wc -l) -eq
0 ]]; then
In ci/scripts/python_wheel_xlinux_build.sh line 57:
: ${ARROW_ACERO:=ON}
^----------------^ SC2223 (info): This default assignment may cause DoS
due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 58:
: ${ARROW_AZURE:=ON}
^----------------^ SC2223 (info): This default assignment may cause DoS
due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 59:
: ${ARROW_DATASET:=ON}
^------------------^ SC2223 (info): This default assignment may cause DoS
due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 60:
: ${ARROW_FLIGHT:=ON}
^-----------------^ SC2223 (info): This default assignment may cause DoS
due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 61:
: ${ARROW_GANDIVA:=OFF}
^-------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 62:
: ${ARROW_GCS:=ON}
^--------------^ SC2223 (info): This default assignment may cause DoS due
to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 63:
: ${ARROW_HDFS:=ON}
^---------------^ SC2223 (info): This default assignment may cause DoS
due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 64:
: ${ARROW_MIMALLOC:=ON}
^-------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 65:
: ${ARROW_ORC:=ON}
^--------------^ SC2223 (info): This default assignment may cause DoS due
to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 66:
: ${ARROW_PARQUET:=ON}
^------------------^ SC2223 (info): This default assignment may cause DoS
due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 67:
: ${PARQUET_REQUIRE_ENCRYPTION:=ON}
^-- SC2223 (info): This default assignment may cause DoS due to globbing.
Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 68:
: ${ARROW_SUBSTRAIT:=ON}
^--------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 69:
: ${ARROW_S3:=ON}
^-------------^ SC2223 (info): This default assignment may cause DoS due
to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 70:
: ${ARROW_TENSORFLOW:=ON}
^---------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 71:
: ${ARROW_USE_MOLD:=OFF}
^--------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 72:
: ${ARROW_WITH_BROTLI:=ON}
^----------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 73:
: ${ARROW_WITH_BZ2:=ON}
^-------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 74:
: ${ARROW_WITH_LZ4:=ON}
^-------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 75:
: ${ARROW_WITH_OPENTELEMETRY:=ON}
^-----------------------------^ SC2223 (info): This default assignment
may cause DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 76:
: ${ARROW_WITH_SNAPPY:=ON}
^----------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 77:
: ${ARROW_WITH_ZLIB:=ON}
^--------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 78:
: ${ARROW_WITH_ZSTD:=ON}
^--------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 79:
: ${CMAKE_BUILD_TYPE:=release}
^--------------------------^ SC2223 (info): This default assignment may
cause DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 80:
: ${CMAKE_UNITY_BUILD:=ON}
^----------------------^ SC2223 (info): This default assignment may cause
DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 81:
: ${CMAKE_GENERATOR:=Ninja}
^-----------------------^ SC2223 (info): This default assignment may
cause DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 82:
: ${VCPKG_ROOT:=/opt/vcpkg}
^-----------------------^ SC2223 (info): This default assignment may
cause DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 83:
: ${VCPKG_FEATURE_FLAGS:=-manifests}
^-- SC2223 (info): This default assignment may cause DoS due to globbing.
Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 84:
:
${VCPKG_TARGET_TRIPLET:=${VCPKG_DEFAULT_TRIPLET:-x64-linux-static-${CMAKE_BUILD_TYPE}}}
^-- SC2223 (info): This default assignment may cause DoS due to globbing.
Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 91:
: ${ARROW_JEMALLOC:=OFF}
^--------------------^ SC2223 (info): This default assignment may
cause DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 93:
: ${ARROW_JEMALLOC:=ON}
^-------------------^ SC2223 (info): This default assignment may
cause DoS due to globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 97:
: ${CMAKE_INTERPROCEDURAL_OPTIMIZATION:=OFF}
^-- SC2223 (info): This default assignment may cause DoS due to
globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 99:
: ${CMAKE_INTERPROCEDURAL_OPTIMIZATION:=ON}
^-- SC2223 (info): This default assignment may cause DoS due to
globbing. Quote it.
In ci/scripts/python_wheel_xlinux_build.sh line 106:
-DARROW_ACERO=${ARROW_ACERO} \
^------------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_ACERO="${ARROW_ACERO}" \
In ci/scripts/python_wheel_xlinux_build.sh line 107:
-DARROW_AZURE=${ARROW_AZURE} \
^------------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_AZURE="${ARROW_AZURE}" \
In ci/scripts/python_wheel_xlinux_build.sh line 113:
-DARROW_DATASET=${ARROW_DATASET} \
^--------------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_DATASET="${ARROW_DATASET}" \
In ci/scripts/python_wheel_xlinux_build.sh line 117:
-DARROW_FLIGHT=${ARROW_FLIGHT} \
^-------------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_FLIGHT="${ARROW_FLIGHT}" \
In ci/scripts/python_wheel_xlinux_build.sh line 118:
-DARROW_GANDIVA=${ARROW_GANDIVA} \
^--------------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_GANDIVA="${ARROW_GANDIVA}" \
In ci/scripts/python_wheel_xlinux_build.sh line 119:
-DARROW_GCS=${ARROW_GCS} \
^----------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_GCS="${ARROW_GCS}" \
In ci/scripts/python_wheel_xlinux_build.sh line 120:
-DARROW_HDFS=${ARROW_HDFS} \
^-----------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_HDFS="${ARROW_HDFS}" \
In ci/scripts/python_wheel_xlinux_build.sh line 121:
-DARROW_JEMALLOC=${ARROW_JEMALLOC} \
^---------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_JEMALLOC="${ARROW_JEMALLOC}" \
In ci/scripts/python_wheel_xlinux_build.sh line 123:
-DARROW_MIMALLOC=${ARROW_MIMALLOC} \
^---------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_MIMALLOC="${ARROW_MIMALLOC}" \
In ci/scripts/python_wheel_xlinux_build.sh line 124:
-DARROW_ORC=${ARROW_ORC} \
^----------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_ORC="${ARROW_ORC}" \
In ci/scripts/python_wheel_xlinux_build.sh line 126:
-DARROW_PARQUET=${ARROW_PARQUET} \
^--------------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
-DARROW_PARQUET="${ARROW_PARQUET}" \
In ci/scripts/python_wheel_xlinux_build.sh line 128:
-DARROW_S3=${ARROW_S3} \
^---------^ SC2086 (info): Double quote to prevent globbing
and word splitting.
Did you mean:
-DARROW_S3="${ARROW_S3}" \
In ci/scripts/python_wheel_xlinux_build.sh line 129:
-DARROW_SUBSTRAIT=${ARROW_SUBSTRAIT} \
^----------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_SUBSTRAIT="${ARROW_SUBSTRAIT}" \
In ci/scripts/python_wheel_xlinux_build.sh line 130:
-DARROW_TENSORFLOW=${ARROW_TENSORFLOW} \
^-----------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_TENSORFLOW="${ARROW_TENSORFLOW}" \
In ci/scripts/python_wheel_xlinux_build.sh line 132:
-DARROW_USE_MOLD=${ARROW_USE_MOLD} \
^---------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_USE_MOLD="${ARROW_USE_MOLD}" \
In ci/scripts/python_wheel_xlinux_build.sh line 133:
-DARROW_WITH_BROTLI=${ARROW_WITH_BROTLI} \
^------------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_WITH_BROTLI="${ARROW_WITH_BROTLI}" \
In ci/scripts/python_wheel_xlinux_build.sh line 134:
-DARROW_WITH_BZ2=${ARROW_WITH_BZ2} \
^---------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_WITH_BZ2="${ARROW_WITH_BZ2}" \
In ci/scripts/python_wheel_xlinux_build.sh line 135:
-DARROW_WITH_LZ4=${ARROW_WITH_LZ4} \
^---------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_WITH_LZ4="${ARROW_WITH_LZ4}" \
In ci/scripts/python_wheel_xlinux_build.sh line 136:
-DARROW_WITH_OPENTELEMETRY=${ARROW_WITH_OPENTELEMETRY} \
^-------------------------^ SC2086 (info):
Double quote to prevent globbing and word splitting.
Did you mean:
-DARROW_WITH_OPENTELEMETRY="${ARROW_WITH_OPENTELEMETRY}" \
In ci/scripts/python_wheel_xlinux_build.sh line 137:
-DARROW_WITH_SNAPPY=${ARROW_WITH_SNAPPY} \
^------------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_WITH_SNAPPY="${ARROW_WITH_SNAPPY}" \
In ci/scripts/python_wheel_xlinux_build.sh line 138:
-DARROW_WITH_ZLIB=${ARROW_WITH_ZLIB} \
^----------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_WITH_ZLIB="${ARROW_WITH_ZLIB}" \
In ci/scripts/python_wheel_xlinux_build.sh line 139:
-DARROW_WITH_ZSTD=${ARROW_WITH_ZSTD} \
^----------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DARROW_WITH_ZSTD="${ARROW_WITH_ZSTD}" \
In ci/scripts/python_wheel_xlinux_build.sh line 140:
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
^-----------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \
In ci/scripts/python_wheel_xlinux_build.sh line 143:
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=${CMAKE_INTERPROCEDURAL_OPTIMIZATION} \
^-- SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION="${CMAKE_INTERPROCEDURAL_OPTIMIZATION}" \
In ci/scripts/python_wheel_xlinux_build.sh line 144:
-DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD} \
^------------------^ SC2086 (info): Double quote to
prevent globbing and word splitting.
Did you mean:
-DCMAKE_UNITY_BUILD="${CMAKE_UNITY_BUILD}" \
In ci/scripts/python_wheel_xlinux_build.sh line 145:
-DPARQUET_REQUIRE_ENCRYPTION=${PARQUET_REQUIRE_ENCRYPTION} \
^---------------------------^ SC2086
(info): Double quote to prevent globbing and word splitting.
Did you mean:
-DPARQUET_REQUIRE_ENCRYPTION="${PARQUET_REQUIRE_ENCRYPTION}" \
In ci/scripts/python_wheel_xlinux_build.sh line 147:
-DVCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET} \
^---------------------^ SC2086 (info): Double
quote to prevent globbing and word splitting.
Did you mean:
-DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" \
In ci/scripts/python_wheel_xlinux_build.sh line 149:
${ARROW_EXTRA_CMAKE_FLAGS} \
^------------------------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
"${ARROW_EXTRA_CMAKE_FLAGS}" \
In ci/scripts/python_wheel_xlinux_build.sh line 150:
-G ${CMAKE_GENERATOR} \
^----------------^ SC2086 (info): Double quote to prevent globbing
and word splitting.
Did you mean:
-G "${CMAKE_GENERATOR}" \
In ci/scripts/python_wheel_xlinux_build.sh line 181:
-C cmake.build-type=${CMAKE_BUILD_TYPE:-Debug} \
^------------------------^ SC2086 (info): Double
quote to prevent globbing and word splitting.
Did you mean:
-C cmake.build-type="${CMAKE_BUILD_TYPE:-Debug}" \
In ci/scripts/python_wheel_xlinux_build.sh line 191:
unzip $wheel_name
^---------^ SC2086 (info): Double quote to prevent globbing and word
splitting.
Did you mean:
unzip "$wheel_name"
In ci/scripts/python_wheel_xlinux_build.sh line 192:
rm $wheel_name
^---------^ SC2086 (info): Double quote to prevent globbing and word
splitting.
Did you mean:
rm "$wheel_name"
In ci/scripts/python_wheel_xlinux_build.sh line 193:
for filename in $(ls pyarrow/*.so pyarrow/*.so.*); do
^-- SC2045 (error): Iterating over ls output is fragile.
Use globs.
In ci/scripts/python_wheel_xlinux_build.sh line 195:
strip --strip-debug $filename
^-------^ SC2086 (info): Double quote to prevent
globbing and word splitting.
Did you mean:
strip --strip-debug "$filename"
In ci/scripts/python_wheel_xlinux_build.sh line 198:
zip -r $wheel_name .
^---------^ SC2086 (info): Double quote to prevent globbing and word
splitting.
Did you mean:
zip -r "$wheel_name" .
In ci/scripts/python_wheel_xlinux_build.sh line 199:
mv $wheel_name ..
^---------^ SC2086 (info): Double quote to prevent globbing and word
splitting.
Did you mean:
mv "$wheel_name" ..
For more information:
https://www.shellcheck.net/wiki/SC2045 -- Iterating over ls output is
fragi...
https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent
globbing ...
https://www.shellcheck.net/wiki/SC2223 -- This default assignment may
cause...
```
### What changes are included in this PR?
* SC2045: Replace `ls` iteration with globs
* SC2086: Quote variable expansions
* SC2223: Quote default assignment
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #50575
Authored-by: Hiroyuki Sato <[email protected]>
Signed-off-by: Raúl Cumplido <[email protected]>
---
.pre-commit-config.yaml | 1 +
ci/scripts/python_wheel_xlinux_build.sh | 168 ++++++++++++++++----------------
2 files changed, 86 insertions(+), 83 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8e5726cb53..fa02e1c8e3 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -336,6 +336,7 @@ repos:
?^ci/scripts/python_test_type_annotations\.sh$|
?^ci/scripts/python_test\.sh$|
?^ci/scripts/python_wheel_macos_build\.sh$|
+ ?^ci/scripts/python_wheel_xlinux_build\.sh$|
?^ci/scripts/r_build\.sh$|
?^ci/scripts/r_revdepcheck\.sh$|
?^ci/scripts/release_test\.sh$|
diff --git a/ci/scripts/python_wheel_xlinux_build.sh
b/ci/scripts/python_wheel_xlinux_build.sh
index 2758e8f9df..b0e53a0532 100755
--- a/ci/scripts/python_wheel_xlinux_build.sh
+++ b/ci/scripts/python_wheel_xlinux_build.sh
@@ -33,7 +33,8 @@ function check_arrow_visibility {
fi
grep ' T ' nm_arrow.log | grep -v -E "${allowed_symbols}" | cat - >
visible_symbols.log
- if [[ -f visible_symbols.log && `cat visible_symbols.log | wc -l` -eq 0
]]; then
+ # Return early if the log file exists but is empty.
+ if [[ -f visible_symbols.log && ! -s visible_symbols.log ]]; then
return 0
else
echo "== Unexpected symbols exported by libarrow.so =="
@@ -54,100 +55,101 @@ rm -rf /arrow/python/pyarrow/*.so
rm -rf /arrow/python/pyarrow/*.so.*
echo "=== (${PYTHON_VERSION}) Building Arrow C++ libraries ==="
-: ${ARROW_ACERO:=ON}
-: ${ARROW_AZURE:=ON}
-: ${ARROW_DATASET:=ON}
-: ${ARROW_FLIGHT:=ON}
-: ${ARROW_GANDIVA:=OFF}
-: ${ARROW_GCS:=ON}
-: ${ARROW_HDFS:=ON}
-: ${ARROW_MIMALLOC:=ON}
-: ${ARROW_ORC:=ON}
-: ${ARROW_PARQUET:=ON}
-: ${PARQUET_REQUIRE_ENCRYPTION:=ON}
-: ${ARROW_SUBSTRAIT:=ON}
-: ${ARROW_S3:=ON}
-: ${ARROW_TENSORFLOW:=ON}
-: ${ARROW_USE_MOLD:=OFF}
-: ${ARROW_WITH_BROTLI:=ON}
-: ${ARROW_WITH_BZ2:=ON}
-: ${ARROW_WITH_LZ4:=ON}
-: ${ARROW_WITH_OPENTELEMETRY:=ON}
-: ${ARROW_WITH_SNAPPY:=ON}
-: ${ARROW_WITH_ZLIB:=ON}
-: ${ARROW_WITH_ZSTD:=ON}
-: ${CMAKE_BUILD_TYPE:=release}
-: ${CMAKE_UNITY_BUILD:=ON}
-: ${CMAKE_GENERATOR:=Ninja}
-: ${VCPKG_ROOT:=/opt/vcpkg}
-: ${VCPKG_FEATURE_FLAGS:=-manifests}
-:
${VCPKG_TARGET_TRIPLET:=${VCPKG_DEFAULT_TRIPLET:-x64-linux-static-${CMAKE_BUILD_TYPE}}}
-
+: "${ARROW_ACERO:=ON}"
+: "${ARROW_AZURE:=ON}"
+: "${ARROW_DATASET:=ON}"
+: "${ARROW_FLIGHT:=ON}"
+: "${ARROW_GANDIVA:=OFF}"
+: "${ARROW_GCS:=ON}"
+: "${ARROW_HDFS:=ON}"
+: "${ARROW_MIMALLOC:=ON}"
+: "${ARROW_ORC:=ON}"
+: "${ARROW_PARQUET:=ON}"
+: "${PARQUET_REQUIRE_ENCRYPTION:=ON}"
+: "${ARROW_SUBSTRAIT:=ON}"
+: "${ARROW_S3:=ON}"
+: "${ARROW_TENSORFLOW:=ON}"
+: "${ARROW_USE_MOLD:=OFF}"
+: "${ARROW_WITH_BROTLI:=ON}"
+: "${ARROW_WITH_BZ2:=ON}"
+: "${ARROW_WITH_LZ4:=ON}"
+: "${ARROW_WITH_OPENTELEMETRY:=ON}"
+: "${ARROW_WITH_SNAPPY:=ON}"
+: "${ARROW_WITH_ZLIB:=ON}"
+: "${ARROW_WITH_ZSTD:=ON}"
+: "${CMAKE_BUILD_TYPE:=release}"
+: "${CMAKE_UNITY_BUILD:=ON}"
+: "${CMAKE_GENERATOR:=Ninja}"
+: "${VCPKG_ROOT:=/opt/vcpkg}"
+: "${VCPKG_FEATURE_FLAGS:=-manifests}"
+:
"${VCPKG_TARGET_TRIPLET:=${VCPKG_DEFAULT_TRIPLET:-x64-linux-static-${CMAKE_BUILD_TYPE}}}"
+
+ARROW_EXTRA_CMAKE_FLAGS=()
if [[ "$(uname -m)" == arm* ]] || [[ "$(uname -m)" == aarch* ]]; then
# Build jemalloc --with-lg-page=16 in order to make the wheel work on both
# 4k and 64k page arm64 systems. For more context see
# https://github.com/apache/arrow/issues/10929
- export ARROW_EXTRA_CMAKE_FLAGS="-DARROW_JEMALLOC_LG_PAGE=16"
- : ${ARROW_JEMALLOC:=OFF}
+ ARROW_EXTRA_CMAKE_FLAGS+=("-DARROW_JEMALLOC_LG_PAGE=16")
+ : "${ARROW_JEMALLOC:=OFF}"
else
- : ${ARROW_JEMALLOC:=ON}
+ : "${ARROW_JEMALLOC:=ON}"
fi
if [[ "${LINUX_WHEEL_KIND:-}" == "musllinux" ]]; then
- : ${CMAKE_INTERPROCEDURAL_OPTIMIZATION:=OFF}
+ : "${CMAKE_INTERPROCEDURAL_OPTIMIZATION:=OFF}"
else
- : ${CMAKE_INTERPROCEDURAL_OPTIMIZATION:=ON}
+ : "${CMAKE_INTERPROCEDURAL_OPTIMIZATION:=ON}"
fi
mkdir /tmp/arrow-build
pushd /tmp/arrow-build
cmake \
- -DARROW_ACERO=${ARROW_ACERO} \
- -DARROW_AZURE=${ARROW_AZURE} \
+ -DARROW_ACERO="${ARROW_ACERO}" \
+ -DARROW_AZURE="${ARROW_AZURE}" \
-DARROW_BUILD_SHARED=ON \
-DARROW_BUILD_STATIC=OFF \
-DARROW_BUILD_TESTS=OFF \
-DARROW_COMPUTE=ON \
-DARROW_CSV=ON \
- -DARROW_DATASET=${ARROW_DATASET} \
+ -DARROW_DATASET="${ARROW_DATASET}" \
-DARROW_DEPENDENCY_SOURCE="VCPKG" \
-DARROW_DEPENDENCY_USE_SHARED=OFF \
-DARROW_FILESYSTEM=ON \
- -DARROW_FLIGHT=${ARROW_FLIGHT} \
- -DARROW_GANDIVA=${ARROW_GANDIVA} \
- -DARROW_GCS=${ARROW_GCS} \
- -DARROW_HDFS=${ARROW_HDFS} \
- -DARROW_JEMALLOC=${ARROW_JEMALLOC} \
+ -DARROW_FLIGHT="${ARROW_FLIGHT}" \
+ -DARROW_GANDIVA="${ARROW_GANDIVA}" \
+ -DARROW_GCS="${ARROW_GCS}" \
+ -DARROW_HDFS="${ARROW_HDFS}" \
+ -DARROW_JEMALLOC="${ARROW_JEMALLOC}" \
-DARROW_JSON=ON \
- -DARROW_MIMALLOC=${ARROW_MIMALLOC} \
- -DARROW_ORC=${ARROW_ORC} \
+ -DARROW_MIMALLOC="${ARROW_MIMALLOC}" \
+ -DARROW_ORC="${ARROW_ORC}" \
-DARROW_PACKAGE_KIND="python-wheel-${LINUX_WHEEL_KIND}${LINUX_WHEEL_VERSION}" \
- -DARROW_PARQUET=${ARROW_PARQUET} \
+ -DARROW_PARQUET="${ARROW_PARQUET}" \
-DARROW_RPATH_ORIGIN=ON \
- -DARROW_S3=${ARROW_S3} \
- -DARROW_SUBSTRAIT=${ARROW_SUBSTRAIT} \
- -DARROW_TENSORFLOW=${ARROW_TENSORFLOW} \
+ -DARROW_S3="${ARROW_S3}" \
+ -DARROW_SUBSTRAIT="${ARROW_SUBSTRAIT}" \
+ -DARROW_TENSORFLOW="${ARROW_TENSORFLOW}" \
-DARROW_USE_CCACHE=ON \
- -DARROW_USE_MOLD=${ARROW_USE_MOLD} \
- -DARROW_WITH_BROTLI=${ARROW_WITH_BROTLI} \
- -DARROW_WITH_BZ2=${ARROW_WITH_BZ2} \
- -DARROW_WITH_LZ4=${ARROW_WITH_LZ4} \
- -DARROW_WITH_OPENTELEMETRY=${ARROW_WITH_OPENTELEMETRY} \
- -DARROW_WITH_SNAPPY=${ARROW_WITH_SNAPPY} \
- -DARROW_WITH_ZLIB=${ARROW_WITH_ZLIB} \
- -DARROW_WITH_ZSTD=${ARROW_WITH_ZSTD} \
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
+ -DARROW_USE_MOLD="${ARROW_USE_MOLD}" \
+ -DARROW_WITH_BROTLI="${ARROW_WITH_BROTLI}" \
+ -DARROW_WITH_BZ2="${ARROW_WITH_BZ2}" \
+ -DARROW_WITH_LZ4="${ARROW_WITH_LZ4}" \
+ -DARROW_WITH_OPENTELEMETRY="${ARROW_WITH_OPENTELEMETRY}" \
+ -DARROW_WITH_SNAPPY="${ARROW_WITH_SNAPPY}" \
+ -DARROW_WITH_ZLIB="${ARROW_WITH_ZLIB}" \
+ -DARROW_WITH_ZSTD="${ARROW_WITH_ZSTD}" \
+ -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_INSTALL_PREFIX=/tmp/arrow-dist \
- -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=${CMAKE_INTERPROCEDURAL_OPTIMIZATION}
\
- -DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD} \
- -DPARQUET_REQUIRE_ENCRYPTION=${PARQUET_REQUIRE_ENCRYPTION} \
+
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION="${CMAKE_INTERPROCEDURAL_OPTIMIZATION}" \
+ -DCMAKE_UNITY_BUILD="${CMAKE_UNITY_BUILD}" \
+ -DPARQUET_REQUIRE_ENCRYPTION="${PARQUET_REQUIRE_ENCRYPTION}" \
-DVCPKG_MANIFEST_MODE=OFF \
- -DVCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET} \
+ -DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" \
-Dxsimd_SOURCE=BUNDLED \
- ${ARROW_EXTRA_CMAKE_FLAGS} \
- -G ${CMAKE_GENERATOR} \
+ "${ARROW_EXTRA_CMAKE_FLAGS[@]}" \
+ -G "${CMAKE_GENERATOR}" \
/arrow/cpp
cmake --build . --target install
popd
@@ -159,18 +161,18 @@ echo "=== (${PYTHON_VERSION}) Building wheel ==="
export PYARROW_BUNDLE_ARROW_CPP=ON
# TODO(GH-32609): Re-enable when pyarrow-stubs are shipped in wheels again.
# export PYARROW_REQUIRE_STUB_DOCSTRINGS=ON
-export PYARROW_WITH_ACERO=${ARROW_ACERO}
-export PYARROW_WITH_AZURE=${ARROW_AZURE}
-export PYARROW_WITH_DATASET=${ARROW_DATASET}
-export PYARROW_WITH_FLIGHT=${ARROW_FLIGHT}
-export PYARROW_WITH_GANDIVA=${ARROW_GANDIVA}
-export PYARROW_WITH_GCS=${ARROW_GCS}
-export PYARROW_WITH_HDFS=${ARROW_HDFS}
-export PYARROW_WITH_ORC=${ARROW_ORC}
-export PYARROW_WITH_PARQUET=${ARROW_PARQUET}
-export PYARROW_WITH_PARQUET_ENCRYPTION=${PARQUET_REQUIRE_ENCRYPTION}
-export PYARROW_WITH_SUBSTRAIT=${ARROW_SUBSTRAIT}
-export PYARROW_WITH_S3=${ARROW_S3}
+export PYARROW_WITH_ACERO="${ARROW_ACERO}"
+export PYARROW_WITH_AZURE="${ARROW_AZURE}"
+export PYARROW_WITH_DATASET="${ARROW_DATASET}"
+export PYARROW_WITH_FLIGHT="${ARROW_FLIGHT}"
+export PYARROW_WITH_GANDIVA="${ARROW_GANDIVA}"
+export PYARROW_WITH_GCS="${ARROW_GCS}"
+export PYARROW_WITH_HDFS="${ARROW_HDFS}"
+export PYARROW_WITH_ORC="${ARROW_ORC}"
+export PYARROW_WITH_PARQUET="${ARROW_PARQUET}"
+export PYARROW_WITH_PARQUET_ENCRYPTION="${PARQUET_REQUIRE_ENCRYPTION}"
+export PYARROW_WITH_SUBSTRAIT="${ARROW_SUBSTRAIT}"
+export PYARROW_WITH_S3="${ARROW_S3}"
export ARROW_HOME=/tmp/arrow-dist
# PyArrow build configuration
export CMAKE_PREFIX_PATH=/tmp/arrow-dist
@@ -178,7 +180,7 @@ export CMAKE_PREFIX_PATH=/tmp/arrow-dist
pushd /arrow/python
python -m build --sdist --wheel . --no-isolation \
-C build.verbose=true \
- -C cmake.build-type=${CMAKE_BUILD_TYPE:-Debug} \
+ -C cmake.build-type="${CMAKE_BUILD_TYPE:-Debug}" \
-C
cmake.args="-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=${CMAKE_INTERPROCEDURAL_OPTIMIZATION}"
echo "=== Strip symbols from wheel ==="
@@ -188,15 +190,15 @@ mv dist/pyarrow-*.whl dist/temp-fix-wheel
pushd dist/temp-fix-wheel
wheel_name=$(ls pyarrow-*.whl)
# Unzip and remove old wheel
-unzip $wheel_name
-rm $wheel_name
-for filename in $(ls pyarrow/*.so pyarrow/*.so.*); do
+unzip "$wheel_name"
+rm "$wheel_name"
+for filename in pyarrow/*.so pyarrow/*.so.*; do
echo "Stripping debug symbols from: $filename";
- strip --strip-debug $filename
+ strip --strip-debug "$filename"
done
# Zip wheel again after stripping symbols
-zip -r $wheel_name .
-mv $wheel_name ..
+zip -r "$wheel_name" .
+mv "$wheel_name" ..
popd
rm -rf dist/temp-fix-wheel