From f74d5ecce84a6a77e4fa89e8403755c6f620dbfa Mon Sep 17 00:00:00 2001 From: Cosmin Truta Date: Thu, 15 Feb 2024 14:37:24 +0200 Subject: [PATCH] ci: Pacify shellcheck version 0.8 and apply other linting improvements Work around a limitation in the `shellcheck source` directive, which does not recognize quotes in shellcheck versions older than 0.9. Also extend the checks for YAML files over the entire source tree, in preparation for the introduction of the GitHub Actions config file. --- ci/ci_lint.sh | 41 ++++++++++++++++++++------------------- ci/ci_shellify.sh | 2 +- ci/ci_verify_cmake.sh | 16 +++++++-------- ci/ci_verify_configure.sh | 2 +- ci/ci_verify_makefiles.sh | 20 +++++++++---------- ci/ci_verify_version.sh | 2 +- 6 files changed, 42 insertions(+), 41 deletions(-) diff --git a/ci/ci_lint.sh b/ci/ci_lint.sh index 9b9dc6bf2..2efe3714d 100755 --- a/ci/ci_lint.sh +++ b/ci/ci_lint.sh @@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix # # SPDX-License-Identifier: MIT -# shellcheck source="ci/lib/ci.lib.sh" +# shellcheck source=ci/lib/ci.lib.sh source "$(dirname "$0")/lib/ci.lib.sh" cd "$CI_TOPLEVEL_DIR" @@ -47,10 +47,10 @@ function ci_finish_lint { ci_info "## END OF LINTING ##" if [[ $CI_LINT_COUNTER -eq 0 ]] then - ci_info "success!" + ci_info "## SUCCESS ##" return 0 else - ci_warn "$CI_LINT_COUNTER failure(s)" + ci_info "linting failed" return 1 fi } @@ -61,14 +61,15 @@ function ci_lint_ci_scripts { return 0 } ci_info "## LINTING: CI scripts ##" - local my_file - ci_spawn "$CI_SHELLCHECK" --version - for my_file in ci/*.sh - do - ci_spawn "$CI_SHELLCHECK" -x "$my_file" || { - CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1)) - } - done + { + local my_file + ci_spawn "$CI_SHELLCHECK" --version + find ./ci -maxdepth 1 -name "*.sh" | + while IFS="" read -r my_file + do + ci_spawn "$CI_SHELLCHECK" -x "$my_file" + done + } || CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1)) } function ci_lint_text_files { @@ -77,7 +78,6 @@ function ci_lint_text_files { return 0 } ci_info "## LINTING: text files ##" - local my_file ci_spawn "$CI_EDITORCONFIG_CHECKER" --version ci_spawn "$CI_EDITORCONFIG_CHECKER" || { CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1)) @@ -90,14 +90,15 @@ function ci_lint_yaml_files { return 0 } ci_info "## LINTING: YAML files ##" - local my_file - ci_spawn "$CI_YAMLLINT" --version - for my_file in .*.yml - do - ci_spawn "$CI_YAMLLINT" --strict "$my_file" || { - CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1)) - } - done + { + local my_file + ci_spawn "$CI_YAMLLINT" --version + find . \( -iname "*.yml" -o -iname "*.yaml" \) -not -path "./out/*" | + while IFS="" read -r my_file + do + ci_spawn "$CI_YAMLLINT" --strict "$my_file" + done + } || CI_LINT_COUNTER=$((CI_LINT_COUNTER + 1)) } function ci_lint { diff --git a/ci/ci_shellify.sh b/ci/ci_shellify.sh index bf6dd7ce6..e6693af97 100755 --- a/ci/ci_shellify.sh +++ b/ci/ci_shellify.sh @@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix # # SPDX-License-Identifier: MIT -# shellcheck source="ci/lib/ci.lib.sh" +# shellcheck source=ci/lib/ci.lib.sh source "$(dirname "$0")/lib/ci.lib.sh" cd "$CI_TOPLEVEL_DIR" diff --git a/ci/ci_verify_cmake.sh b/ci/ci_verify_cmake.sh index 0985d5f84..e3fd529dc 100755 --- a/ci/ci_verify_cmake.sh +++ b/ci/ci_verify_cmake.sh @@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix # # SPDX-License-Identifier: MIT -# shellcheck source="ci/lib/ci.lib.sh" +# shellcheck source=ci/lib/ci.lib.sh source "$(dirname "$0")/lib/ci.lib.sh" cd "$CI_TOPLEVEL_DIR" @@ -126,23 +126,23 @@ function ci_build { local all_cmake_build_flags=() local all_ctest_flags=() [[ $CI_CMAKE_TOOLCHAIN_FILE ]] && { - all_cmake_vars+=(-DCMAKE_TOOLCHAIN_FILE="$CI_CMAKE_TOOLCHAIN_FILE") + all_cmake_vars+=("-DCMAKE_TOOLCHAIN_FILE=$CI_CMAKE_TOOLCHAIN_FILE") } [[ $CI_CC ]] && { - all_cmake_vars+=(-DCMAKE_C_COMPILER="$CI_CC") + all_cmake_vars+=("-DCMAKE_C_COMPILER=$CI_CC") } [[ $CI_CC_FLAGS || $CI_SANITIZERS ]] && { [[ $CI_SANITIZERS ]] && CI_CC_FLAGS+="${CI_CC_FLAGS:+" "}-fsanitize=$CI_SANITIZERS" - all_cmake_vars+=(-DCMAKE_C_FLAGS="$CI_CC_FLAGS") + all_cmake_vars+=("-DCMAKE_C_FLAGS=$CI_CC_FLAGS") } [[ $CI_AR ]] && { - all_cmake_vars+=(-DCMAKE_AR="$CI_AR") + all_cmake_vars+=("-DCMAKE_AR=$CI_AR") } [[ $CI_RANLIB ]] && { - all_cmake_vars+=(-DCMAKE_RANLIB="$CI_RANLIB") + all_cmake_vars+=("-DCMAKE_RANLIB=$CI_RANLIB") } - all_cmake_vars+=(-DCMAKE_BUILD_TYPE="$CI_CMAKE_BUILD_TYPE") - all_cmake_vars+=(-DCMAKE_VERBOSE_MAKEFILE=ON) + all_cmake_vars+=("-DCMAKE_BUILD_TYPE=$CI_CMAKE_BUILD_TYPE") + all_cmake_vars+=("-DCMAKE_VERBOSE_MAKEFILE=ON") all_cmake_vars+=($CI_CMAKE_VARS) all_cmake_build_flags+=($CI_CMAKE_BUILD_FLAGS) all_ctest_flags+=($CI_CTEST_FLAGS) diff --git a/ci/ci_verify_configure.sh b/ci/ci_verify_configure.sh index 0a2bd807a..d73e80c26 100755 --- a/ci/ci_verify_configure.sh +++ b/ci/ci_verify_configure.sh @@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix # # SPDX-License-Identifier: MIT -# shellcheck source="ci/lib/ci.lib.sh" +# shellcheck source=ci/lib/ci.lib.sh source "$(dirname "$0")/lib/ci.lib.sh" cd "$CI_TOPLEVEL_DIR" diff --git a/ci/ci_verify_makefiles.sh b/ci/ci_verify_makefiles.sh index a0db93879..5b9217ad2 100755 --- a/ci/ci_verify_makefiles.sh +++ b/ci/ci_verify_makefiles.sh @@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix # # SPDX-License-Identifier: MIT -# shellcheck source="ci/lib/ci.lib.sh" +# shellcheck source=ci/lib/ci.lib.sh source "$(dirname "$0")/lib/ci.lib.sh" cd "$CI_TOPLEVEL_DIR" @@ -97,33 +97,33 @@ function ci_build { all_make_flags+=($CI_MAKE_FLAGS) } [[ $CI_CC ]] && { - all_make_vars+=(CC="$CI_CC") + all_make_vars+=("CC=$CI_CC") } [[ $CI_CC_FLAGS || $CI_SANITIZERS ]] && { [[ $CI_SANITIZERS ]] && CI_CC_FLAGS="${CI_CC_FLAGS:-"-O2"} -fsanitize=$CI_SANITIZERS" - all_make_vars+=(CFLAGS="$CI_CC_FLAGS") + all_make_vars+=("CFLAGS=$CI_CC_FLAGS") } [[ $CI_CPP ]] && { - all_make_vars+=(CPP="$CI_CPP") + all_make_vars+=("CPP=$CI_CPP") } [[ $CI_CPP_FLAGS ]] && { - all_make_vars+=(CPPFLAGS="$CI_CPP_FLAGS") + all_make_vars+=("CPPFLAGS=$CI_CPP_FLAGS") } [[ $CI_AR ]] && { - all_make_vars+=(AR="$CI_AR") + all_make_vars+=("AR=$CI_AR") } [[ $CI_RANLIB ]] && { - all_make_vars+=(RANLIB="$CI_RANLIB") + all_make_vars+=("RANLIB=$CI_RANLIB") } [[ $CI_LD ]] && { - all_make_vars+=(LD="$CI_LD") + all_make_vars+=("LD=$CI_LD") } [[ $CI_LD_FLAGS || $CI_SANITIZERS ]] && { [[ $CI_SANITIZERS ]] && CI_LD_FLAGS+="${CI_LD_FLAGS:+" "}-fsanitize=$CI_SANITIZERS" - all_make_vars+=(LDFLAGS="$CI_LD_FLAGS") + all_make_vars+=("LDFLAGS=$CI_LD_FLAGS") } [[ $CI_LIBS ]] && { - all_make_vars+=(LIBS="$CI_LIBS") + all_make_vars+=("LIBS=$CI_LIBS") } all_make_vars+=($CI_MAKE_VARS) # And... build! diff --git a/ci/ci_verify_version.sh b/ci/ci_verify_version.sh index 58408ba96..c786f06ac 100755 --- a/ci/ci_verify_version.sh +++ b/ci/ci_verify_version.sh @@ -8,7 +8,7 @@ set -o errexit -o pipefail -o posix # # SPDX-License-Identifier: MIT -# shellcheck source="ci/lib/ci.lib.sh" +# shellcheck source=ci/lib/ci.lib.sh source "$(dirname "$0")/lib/ci.lib.sh" cd "$CI_TOPLEVEL_DIR"