Merge pull request #20858 from dundargoc/build/lintsh

build: add more shell scripts to the `lintsh` target
This commit is contained in:
dundargoc 2022-11-05 22:11:22 +01:00 committed by GitHub
commit 01ff681f57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 63 additions and 44 deletions

View File

@ -611,7 +611,7 @@ find_program(STYLUA_PRG stylua)
find_program(UNCRUSTIFY_PRG uncrustify)
find_program(SHELLCHECK_PRG shellcheck)
add_glob_targets(
add_glob_target(
REQUIRED
TARGET lintlua-luacheck
COMMAND ${LUACHECK_PRG}
@ -621,7 +621,7 @@ add_glob_targets(
TOUCH_STRATEGY SINGLE
)
add_glob_targets(
add_glob_target(
TARGET lintlua-stylua
COMMAND ${STYLUA_PRG}
FLAGS --color=always --check
@ -635,10 +635,16 @@ add_dependencies(lintlua lintlua-luacheck lintlua-stylua)
include(InstallHelpers)
add_glob_targets(
add_glob_target(
TARGET lintsh
COMMAND ${SHELLCHECK_PRG}
FILES scripts/vim-patch.sh
FLAGS -x -a
GLOB_DIRS scripts ci
GLOB_PAT *.sh
EXCLUDE
scripts/pvscheck.sh
ci/common
ci/snap
TOUCH_STRATEGY SINGLE
)

View File

@ -4,7 +4,9 @@ set -e
set -o pipefail
CI_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source-path=SCRIPTDIR
source "${CI_DIR}/common/build.sh"
# shellcheck source-path=SCRIPTDIR
source "${CI_DIR}/common/suite.sh"
mkdir -p "${HOME}/.cache"

View File

@ -4,6 +4,7 @@ set -e
set -o pipefail
CI_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source-path=SCRIPTDIR
source "${CI_DIR}/common/build.sh"
# Test some of the configuration variables.

View File

@ -7,7 +7,7 @@ _stat() {
}
top_make() {
printf '%78s\n' | tr ' ' '='
printf '%78s\n' ' ' | tr ' ' '='
ninja "$@"
}
@ -33,6 +33,7 @@ build_deps() {
# update CMake configuration and update to newer deps versions.
cd "${DEPS_BUILD_DIR}"
echo "Configuring with '${DEPS_CMAKE_FLAGS}'."
# shellcheck disable=SC2086
CC= cmake -G Ninja ${DEPS_CMAKE_FLAGS} "${CI_BUILD_DIR}/cmake.deps/"
if ! top_make; then
@ -51,10 +52,10 @@ build_nvim() {
mkdir -p "${BUILD_DIR}"
cd "${BUILD_DIR}"
echo "Configuring with '${CMAKE_FLAGS} $@'."
echo "Configuring with '${CMAKE_FLAGS} $*'."
# shellcheck disable=SC2086
cmake -G Ninja ${CMAKE_FLAGS} "$@" "${CI_BUILD_DIR}"
echo "Building nvim."
if ! top_make nvim ; then
exit 1

View File

@ -9,12 +9,12 @@ fail() {
local test_name="$1"
local message="$2"
: ${message:=Test $test_name failed}
: "${message:=Test $test_name failed}"
local full_msg="$test_name :: $message"
echo "${full_msg}" >> "${FAIL_SUMMARY_FILE}"
echo "Failed: $full_msg"
FAILED=1
export FAILED=1
}
ended_successfully() {

View File

@ -57,6 +57,7 @@ check_core_dumps() {
check_logs() {
# Iterate through each log to remove an useless warning.
# shellcheck disable=SC2044
for log in $(find "${1}" -type f -name "${2}"); do
sed -i "${log}" \
-e '/Warning: noted but unhandled ioctl/d' \
@ -66,6 +67,7 @@ check_logs() {
# Now do it again, but only consider files with size > 0.
local err=""
# shellcheck disable=SC2044
for log in $(find "${1}" -type f -name "${2}" -size +0); do
cat "${log}"
err=1
@ -97,7 +99,7 @@ unittests() {(
functionaltests() {(
ulimit -c unlimited || true
if ! build_make ${FUNCTIONALTEST}; then
if ! build_make "${FUNCTIONALTEST}"; then
fail 'functionaltests' 'Functional tests failed'
fi
submit_coverage functionaltest
@ -132,7 +134,7 @@ check_runtime_files() {(
fail "$test_name" "It appears that $file is only a part of the file name"
fi
if ! test "$tst" "$INSTALL_PREFIX/share/nvim/runtime/$file" ; then
fail "$test_name" "$(printf "$message" "$file")"
fail "$test_name" "$(printf "%s%s" "$message" "$file")"
fi
done
)}

View File

@ -4,8 +4,11 @@ set -e
set -o pipefail
CI_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source-path=SCRIPTDIR
source "${CI_DIR}/common/build.sh"
# shellcheck source-path=SCRIPTDIR
source "${CI_DIR}/common/test.sh"
# shellcheck source-path=SCRIPTDIR
source "${CI_DIR}/common/suite.sh"
rm -f "$END_MARKER"

View File

@ -49,12 +49,13 @@
# simple be added to FILES
# GLOB_DIRS - The directories to recursively search for files with extension
# GLOB_PAT
#
function(add_glob_targets)
# EXCLUDE - List of paths to skip (regex). Works on both directories and
# files.
function(add_glob_target)
cmake_parse_arguments(ARG
"REQUIRED"
"TARGET;COMMAND;GLOB_PAT;TOUCH_STRATEGY"
"FLAGS;FILES;GLOB_DIRS"
"FLAGS;FILES;GLOB_DIRS;EXCLUDE"
${ARGN}
)
@ -72,7 +73,15 @@ function(add_glob_targets)
endif()
foreach(gd ${ARG_GLOB_DIRS})
file(GLOB_RECURSE globfiles ${PROJECT_SOURCE_DIR}/${gd}/${ARG_GLOB_PAT})
file(GLOB_RECURSE globfiles_unnormalized ${PROJECT_SOURCE_DIR}/${gd}/${ARG_GLOB_PAT})
set(globfiles)
foreach(f ${globfiles_unnormalized})
file(TO_CMAKE_PATH "${f}" f)
list(APPEND globfiles ${f})
endforeach()
foreach(exclude_pattern ${ARG_EXCLUDE})
list(FILTER globfiles EXCLUDE REGEX ${exclude_pattern})
endforeach()
list(APPEND ARG_FILES ${globfiles})
endforeach()

View File

@ -3,11 +3,12 @@
set -e
data_files="UnicodeData.txt CaseFolding.txt EastAsianWidth.txt"
emoji_files="emoji-data.txt"
files="'$data_files $emoji_files'"
UNIDIR_DEFAULT=src/unicode
DOWNLOAD_URL_BASE_DEFAULT='http://unicode.org/Public'
if test x$1 = 'x--help' ; then
if test "$1" = '--help' ; then
echo 'Usage:'
echo " $0[ TARGET_DIRECTORY[ URL_BASE]]"
echo
@ -16,6 +17,7 @@ if test x$1 = 'x--help' ; then
echo
echo "Default target directory is $PWD/${UNIDIR_DEFAULT}."
echo "Default URL base is ${DOWNLOAD_URL_BASE_DEFAULT}."
exit 0
fi
UNIDIR=${1:-$UNIDIR_DEFAULT}
@ -23,21 +25,12 @@ DOWNLOAD_URL_BASE=${2:-$DOWNLOAD_URL_BASE_DEFAULT}
for filename in $data_files ; do
curl -L -o "$UNIDIR/$filename" "$DOWNLOAD_URL_BASE/UNIDATA/$filename"
(
cd "$UNIDIR"
git add $filename
)
git -C "$UNIDIR" add "$filename"
done
for filename in $emoji_files ; do
curl -L -o "$UNIDIR/$filename" "$DOWNLOAD_URL_BASE/UNIDATA/emoji/$filename"
(
cd "$UNIDIR"
git add $filename
)
git -C "$UNIDIR" add $filename
done
(
cd "$UNIDIR"
git commit -m "feat: update unicode tables" -- $files
)
git -C "$UNIDIR" commit -m "feat: update unicode tables" .

View File

@ -8,7 +8,8 @@
# App arch, used by generate_appimage.
if [ -z "$ARCH" ]; then
export ARCH="$(arch)"
ARCH="$(arch)"
export ARCH
fi
TAG=$1
@ -34,8 +35,9 @@ make install
# App version, used by generate_appimage.
VERSION=$("$ROOT_DIR"/build/bin/nvim --version | head -n 1 | grep -o 'v.*')
export VERSION
cd "$APP_BUILD_DIR"
cd "$APP_BUILD_DIR" || exit
# Only downloads linuxdeploy if the remote file is different from local
if [ -e "$APP_BUILD_DIR"/linuxdeploy-x86_64.AppImage ]; then
@ -53,7 +55,7 @@ chmod +x "$APP_BUILD_DIR"/linuxdeploy-x86_64.AppImage
mkdir "$APP_DIR/usr/share/metainfo/"
cp "$ROOT_DIR/runtime/nvim.appdata.xml" "$APP_DIR/usr/share/metainfo/"
cd "$APP_DIR"
cd "$APP_DIR" || exit
########################################################################
# AppDir complete. Now package it as an AppImage.
@ -71,7 +73,7 @@ exec "$(dirname "$(readlink -f "${0}")")/usr/bin/nvim" ${@+"$@"}
EOF
chmod 755 AppRun
cd "$APP_BUILD_DIR" # Get out of AppImage directory.
cd "$APP_BUILD_DIR" || exit # Get out of AppImage directory.
# Set the name of the file generated by appimage
export OUTPUT=nvim.appimage
@ -85,7 +87,7 @@ fi
# - Expects: $ARCH, $APP, $VERSION env vars
# - Expects: ./$APP.AppDir/ directory
# - Produces: ./nvim.appimage
./linuxdeploy-x86_64.AppImage --appdir $APP.AppDir -d $ROOT_DIR/runtime/nvim.desktop -i \
./linuxdeploy-x86_64.AppImage --appdir $APP.AppDir -d "$ROOT_DIR"/runtime/nvim.desktop -i \
"$ROOT_DIR/runtime/nvim.png" --output appimage
# Moving the final executable to a different folder so it isn't in the

View File

@ -16,9 +16,9 @@ __SINCE=$1
__INVMATCH=$2
is_merge_commit() {
git rev-parse $1 >/dev/null 2>&1 \
git rev-parse "$1" >/dev/null 2>&1 \
|| { echo "ERROR: invalid commit: $1"; exit 1; }
git log $1^2 >/dev/null 2>&1 && return 0 || return 1
git log "$1"^2 >/dev/null 2>&1 && return 0 || return 1
}
# Removes parens from issue/ticket/PR numbers.
@ -40,13 +40,13 @@ _format_ticketnums() {
}
for commit in $(git log --format='%H' --first-parent "$__SINCE"..HEAD); do
if is_merge_commit ${commit} ; then
if [ -z "$__INVMATCH" ] || ! git log --oneline ${commit}^1..${commit}^2 \
if is_merge_commit "${commit}" ; then
if [ -z "$__INVMATCH" ] || ! git log --oneline "${commit}^1..${commit}^2" \
| >/dev/null 2>&1 grep -E "$__INVMATCH" ; then
git log -1 --oneline ${commit}
git log --format=' %h %s' ${commit}^1..${commit}^2
git log -1 --oneline "${commit}"
git log --format=' %h %s' "${commit}^1..${commit}^2"
fi
else
git log -1 --oneline ${commit}
git log -1 --oneline "${commit}"
fi
done | _format_ticketnums

View File

@ -59,8 +59,8 @@ _do_release_commit() {
$__sed -i.bk 's/(NVIM_VERSION_PRERELEASE) "-dev"/\1 ""/' CMakeLists.txt
if grep '(NVIM_API_PRERELEASE true)' CMakeLists.txt > /dev/null; then
$__sed -i.bk 's/(NVIM_API_PRERELEASE) true/\1 false/' CMakeLists.txt
build/bin/nvim --api-info > test/functional/fixtures/api_level_$__API_LEVEL.mpack
git add test/functional/fixtures/api_level_$__API_LEVEL.mpack
build/bin/nvim --api-info > "test/functional/fixtures/api_level_$__API_LEVEL.mpack"
git add "test/functional/fixtures/api_level_${__API_LEVEL}.mpack"
fi
$__sed -i.bk 's,(<releases>),\1\

View File

@ -35,7 +35,7 @@ readonly -A entries=(
db="$(mktemp -du)"
print_bold() {
printf "\\e[1m$*\\e[0m"
printf "\\e[1m%b\\e[0m" "$*"
}
cd "$(git rev-parse --show-toplevel)"

View File

@ -772,7 +772,7 @@ add_custom_target(uncrustify-version
-D CONFIG_FILE=${PROJECT_SOURCE_DIR}/src/uncrustify.cfg
-P ${PROJECT_SOURCE_DIR}/cmake/CheckUncrustifyVersion.cmake)
add_glob_targets(
add_glob_target(
TARGET lintuncrustify
COMMAND ${UNCRUSTIFY_PRG}
FLAGS -c "${PROJECT_SOURCE_DIR}/src/uncrustify.cfg" -q --check