This is an automated email from the ASF dual-hosted git repository.

assignuser 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 3b3af5d76e GH-43080: [CI][Dev] Enable shellcheck (#44724)
3b3af5d76e is described below

commit 3b3af5d76e4fd6fe2a0653d6385ff45933f8e44e
Author: Sutou Kouhei <[email protected]>
AuthorDate: Fri Nov 15 12:00:34 2024 +0900

    GH-43080: [CI][Dev] Enable shellcheck (#44724)
    
    ### Rationale for this change
    
    shellcheck is a shell linter. It will find some potential problems in CI.
    
    ### What changes are included in this PR?
    
    * Add a shellcheck entry to `.pre-commit-config.yaml`
    * Enable shellcheck lint only for `ci/scripts/c_glib_build.sh`
    
    We should enable shellcheck lint for all shell scripts eventually.
    
    ### Are these changes tested?
    
    Yes.
    
    ### Are there any user-facing changes?
    
    No.
    * GitHub Issue: #43080
    
    Authored-by: Sutou Kouhei <[email protected]>
    Signed-off-by: Jacob Wujciak-Jens <[email protected]>
---
 .pre-commit-config.yaml    |  9 +++++++++
 ci/scripts/c_glib_build.sh | 46 +++++++++++++++++++++++++---------------------
 2 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 9f326f3175..e9d7f28fa6 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -173,3 +173,12 @@ repos:
           '--disable',
           'dangling-hyphen,line-too-long',
         ]
+  - repo: https://github.com/koalaman/shellcheck-precommit
+    rev: v0.10.0
+    hooks:
+      - id: shellcheck
+        # TODO: Remove this when we fix all lint failures
+        files: >-
+          (
+          ?^ci/scripts/c_glib_build\.sh$|
+          )
diff --git a/ci/scripts/c_glib_build.sh b/ci/scripts/c_glib_build.sh
index 059e45e2a1..e1421f1cc2 100755
--- a/ci/scripts/c_glib_build.sh
+++ b/ci/scripts/c_glib_build.sh
@@ -23,59 +23,63 @@ source_dir=${1}/c_glib
 build_dir=${2}/c_glib
 build_root=${2}
 
-: ${ARROW_GLIB_WERROR:=false}
-: ${ARROW_GLIB_VAPI:=true}
-: ${BUILD_DOCS_C_GLIB:=OFF}
+: "${ARROW_GLIB_WERROR:=false}"
+: "${ARROW_GLIB_VAPI:=true}"
+: "${BUILD_DOCS_C_GLIB:=OFF}"
 with_doc=$([ "${BUILD_DOCS_C_GLIB}" == "ON" ] && echo "true" || echo "false")
 
 
 if [ -n "${MSYSTEM:-}" ]; then
   # Fix ARROW_HOME when running under MSYS2
-  export ARROW_HOME="$(cygpath --unix "${ARROW_HOME}")"
+  ARROW_HOME="$(cygpath --unix "${ARROW_HOME}")"
+  export ARROW_HOME
 fi
 
-export PATH="${ARROW_HOME}/bin:${PATH}"
+PATH="${ARROW_HOME}/bin:${PATH}"
 
 meson_pkg_config_path="${ARROW_HOME}/lib/pkgconfig"
 
-mkdir -p ${build_dir}
+mkdir -p "${build_dir}"
 
-if [ -n "${VCPKG_ROOT:-}" -a -n "${VCPKG_TRIPLET:-}" ]; then
+if [ -n "${VCPKG_ROOT:-}" ] && [ -n "${VCPKG_TRIPLET:-}" ]; then
   vcpkg_install_root="${build_root}/vcpkg_installed"
-  $VCPKG_ROOT/vcpkg install --x-manifest-root=${source_dir} 
--x-install-root=${vcpkg_install_root}
-  export 
PKG_CONFIG="${vcpkg_install_root}/${VCPKG_TRIPLET}/tools/pkgconf/pkgconf.exe"
+  "${VCPKG_ROOT}/vcpkg" install \
+    --x-manifest-root="${source_dir}" \
+    --x-install-root="${vcpkg_install_root}"
+  PKG_CONFIG="${vcpkg_install_root}/${VCPKG_TRIPLET}/tools/pkgconf/pkgconf.exe"
+  export PKG_CONFIG
   
meson_pkg_config_path="${vcpkg_install_root}/${VCPKG_TRIPLET}/lib/pkgconfig:${meson_pkg_config_path}"
   # Configure PATH for libraries required by the gobject-introspection 
generated binary
   cpp_vcpkg_install_root="${build_root}/cpp/vcpkg_installed"
   PATH="${cpp_vcpkg_install_root}/${VCPKG_TRIPLET}/debug/bin:${PATH}"
   PATH="${cpp_vcpkg_install_root}/${VCPKG_TRIPLET}/bin:${PATH}"
-  export PATH="${vcpkg_install_root}/${VCPKG_TRIPLET}/bin:${PATH}"
+  PATH="${vcpkg_install_root}/${VCPKG_TRIPLET}/bin:${PATH}"
 fi
 
-if [ -n "${VCToolsInstallDir:-}" -a -n "${MSYSTEM:-}" ]; then
+if [ -n "${VCToolsInstallDir:-}" ] && [ -n "${MSYSTEM:-}" ]; then
   # Meson finds the gnu link.exe instead of MSVC link.exe when running in 
MSYS2/git bash,
   # so we need to make sure the MSCV link.exe is first in $PATH
-  export PATH="$(cygpath --unix 
"${VCToolsInstallDir}")/bin/HostX64/x64:${PATH}"
+  PATH="$(cygpath --unix "${VCToolsInstallDir}")/bin/HostX64/x64:${PATH}"
 fi
 
 # Build with Meson
 meson setup \
       --backend=ninja \
-      --prefix=$ARROW_HOME \
+      --prefix="${ARROW_HOME}" \
       --libdir=lib \
       --pkg-config-path="${meson_pkg_config_path}" \
-      -Ddoc=${with_doc} \
-      -Dvapi=${ARROW_GLIB_VAPI} \
-      -Dwerror=${ARROW_GLIB_WERROR} \
-      ${build_dir} \
-      ${source_dir}
+      -Ddoc="${with_doc}" \
+      -Dvapi="${ARROW_GLIB_VAPI}" \
+      -Dwerror="${ARROW_GLIB_WERROR}" \
+      "${build_dir}" \
+      "${source_dir}"
 
-pushd ${build_dir}
+pushd "${build_dir}"
 ninja
 ninja install
 popd
 
 if [ "${BUILD_DOCS_C_GLIB}" == "ON" ]; then
-  mkdir -p ${build_root}/docs/c_glib
-  cp -a ${ARROW_HOME}/share/doc/*-glib/ ${build_root}/docs/c_glib/
+  mkdir -p "${build_root}/docs/c_glib"
+  cp -a "${ARROW_HOME}"/share/doc/*-glib/ "${build_root}/docs/c_glib/"
 fi

Reply via email to