Merge pull request #10179 from cladmi/pr/dist/tools/build_system/check
dist/tools: add build system sanity check script
This commit is contained in:
commit
58500f92c5
62
dist/tools/buildsystem_sanity_check/check.sh
vendored
Executable file
62
dist/tools/buildsystem_sanity_check/check.sh
vendored
Executable file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2018 Gaëtan Harter <gaetan.harter@fu-berlin.de>
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU Lesser
|
||||
# General Public License v2.1. See the file LICENSE in the top level
|
||||
# directory for more details.
|
||||
#
|
||||
|
||||
#
|
||||
# Central test script to have sanity checks for the build system
|
||||
# It is run unconditionally on all files.
|
||||
#
|
||||
#
|
||||
|
||||
: "${RIOTBASE:="$(cd "$(dirname "$0")/../../../" || exit; pwd)"}"
|
||||
|
||||
SCRIPT_PATH=dist/tools/buildsystem_sanity_check/check.sh
|
||||
|
||||
# Modules should not check the content of FEATURES_PROVIDED/_REQUIRED/OPTIONAL
|
||||
# Handling specific behaviors/dependencies should by checking the content of:
|
||||
# * `USEMODULE`
|
||||
# * maybe `FEATURES_USED` if it is not a module (== not a periph_)
|
||||
check_not_parsing_features() {
|
||||
local patterns=()
|
||||
local pathspec=()
|
||||
|
||||
patterns+=(-e 'if.*filter.*FEATURES_PROVIDED')
|
||||
patterns+=(-e 'if.*filter.*FEATURES_REQUIRED')
|
||||
patterns+=(-e 'if.*filter.*FEATURES_OPTIONAL')
|
||||
|
||||
# Pathspec with exclude should start by an inclusive pathspec in git 2.7.4
|
||||
pathspec+=('*')
|
||||
|
||||
# Ignore this file when matching as it self matches
|
||||
pathspec+=(":!${SCRIPT_PATH}")
|
||||
|
||||
# These two files contain sanity checks using FEATURES_ so are allowed
|
||||
pathspec+=(':!Makefile.include' ':!makefiles/info-global.inc.mk')
|
||||
|
||||
git -C "${RIOTBASE}" grep "${patterns[@]}" -- "${pathspec[@]}"
|
||||
}
|
||||
|
||||
|
||||
main() {
|
||||
local errors=''
|
||||
|
||||
errors+="$(check_not_parsing_features)"
|
||||
|
||||
if [ -n "${errors}" ]
|
||||
then
|
||||
printf 'Invalid build system patterns found by %s:\n' "${0}"
|
||||
printf '%s\n' "${errors}"
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||
main
|
||||
fi
|
||||
Loading…
x
Reference in New Issue
Block a user