Skip to content

Commit 0ae71f8

Browse files
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307)
### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
1 parent ac99056 commit 0ae71f8

File tree

2 files changed

+25
-21
lines changed

2 files changed

+25
-21
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ repos:
339339
?^ci/scripts/msys2_system_upgrade\.sh$|
340340
?^ci/scripts/nanoarrow_build\.sh$|
341341
?^ci/scripts/python_build_emscripten\.sh$|
342+
?^ci/scripts/python_build\.sh$|
342343
?^ci/scripts/python_sdist_build\.sh$|
343344
?^ci/scripts/python_wheel_unix_test\.sh$|
344345
?^ci/scripts/r_build\.sh$|

ci/scripts/python_build.sh

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,17 @@ build_dir=${2}
2525
source_dir=${arrow_dir}/python
2626
python_build_dir=${build_dir}/python
2727

28-
: ${BUILD_DOCS_PYTHON:=OFF}
28+
: "${BUILD_DOCS_PYTHON:=OFF}"
2929

3030
if [ -x "$(command -v git)" ]; then
31-
git config --global --add safe.directory ${arrow_dir}
31+
git config --global --add safe.directory "${arrow_dir}"
3232
fi
3333

3434
if [ -n "${ARROW_PYTHON_VENV:-}" ]; then
35+
# We don't need to follow this external file.
36+
# See also: https://www.shellcheck.net/wiki/SC1091
37+
#
38+
# shellcheck source=/dev/null
3539
. "${ARROW_PYTHON_VENV}/bin/activate"
3640
fi
3741

@@ -50,7 +54,7 @@ case "$(uname)" in
5054
;;
5155
esac
5256

53-
if [ ! -z "${CONDA_PREFIX}" ]; then
57+
if [ -n "${CONDA_PREFIX}" ]; then
5458
echo -e "===\n=== Conda environment for build\n==="
5559
conda list
5660
fi
@@ -74,17 +78,17 @@ export PYARROW_WITH_SUBSTRAIT=${ARROW_SUBSTRAIT:-OFF}
7478

7579
export PYARROW_PARALLEL=${n_jobs}
7680

77-
: ${CMAKE_PREFIX_PATH:=${ARROW_HOME}}
81+
: "${CMAKE_PREFIX_PATH:=${ARROW_HOME}}"
7882
export CMAKE_PREFIX_PATH
7983
export LD_LIBRARY_PATH=${ARROW_HOME}/lib:${LD_LIBRARY_PATH}
8084

8185
# https://github.com/apache/arrow/issues/41429
8286
# TODO: We want to out-of-source build. This is a workaround. We copy
8387
# all needed files to the build directory from the source directory
8488
# and build in the build directory.
85-
rm -rf ${python_build_dir}
86-
cp -aL ${source_dir} ${python_build_dir}
87-
pushd ${python_build_dir}
89+
rm -rf "${python_build_dir}"
90+
cp -aL "${source_dir}" "${python_build_dir}"
91+
pushd "${python_build_dir}"
8892
# - Cannot call setup.py as it may install in the wrong directory
8993
# on Debian/Ubuntu (ARROW-15243).
9094
# - Cannot use build isolation as we want to use specific dependency versions
@@ -98,22 +102,21 @@ if [ "${BUILD_DOCS_PYTHON}" == "ON" ]; then
98102
#
99103
# Copy docs/source because the "autosummary_generate = True"
100104
# configuration generates files to docs/source/python/generated/.
101-
rm -rf ${python_build_dir}/docs/source
102-
mkdir -p ${python_build_dir}/docs
103-
cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/
104-
rm -rf ${python_build_dir}/format
105-
cp -a ${arrow_dir}/format ${python_build_dir}/
106-
rm -rf ${python_build_dir}/cpp/examples
107-
mkdir -p ${python_build_dir}/cpp
108-
cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/
109-
rm -rf ${python_build_dir}/ci
110-
cp -a ${arrow_dir}/ci/ ${python_build_dir}/
111-
ncpus=$(python -c "import os; print(os.cpu_count())")
105+
rm -rf "${python_build_dir}/docs/source"
106+
mkdir -p "${python_build_dir}/docs"
107+
cp -a "${arrow_dir}/docs/source" "${python_build_dir}/docs/"
108+
rm -rf "${python_build_dir}/format"
109+
cp -a "${arrow_dir}/format" "${python_build_dir}/"
110+
rm -rf "${python_build_dir}/cpp/examples"
111+
mkdir -p "${python_build_dir}/cpp"
112+
cp -a "${arrow_dir}/cpp/examples" "${python_build_dir}/cpp/"
113+
rm -rf "${python_build_dir}/ci"
114+
cp -a "${arrow_dir}/ci/" "${python_build_dir}/"
112115
export ARROW_CPP_DOXYGEN_XML=${build_dir}/cpp/apidoc/xml
113-
pushd ${build_dir}
116+
pushd "${build_dir}"
114117
sphinx-build \
115118
-b html \
116-
${python_build_dir}/docs/source \
117-
${build_dir}/docs
119+
"${python_build_dir}/docs/source" \
120+
"${build_dir}/docs"
118121
popd
119122
fi

0 commit comments

Comments
 (0)