devtools: add new SPDX license compliance checker
Simple script to look for drivers and scripts that are missing requires SPDX header. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
7dba4148ca
commit
525d803185
@ -91,6 +91,7 @@ F: devtools/check-maintainers.sh
|
||||
F: devtools/check-forbidden-tokens.awk
|
||||
F: devtools/check-git-log.sh
|
||||
F: devtools/check-includes.sh
|
||||
F: devtools/check-spdx-tag.sh
|
||||
F: devtools/check-symbol-maps.sh
|
||||
F: devtools/checkpatches.sh
|
||||
F: devtools/get-maintainer.sh
|
||||
|
70
devtools/check-spdx-tag.sh
Executable file
70
devtools/check-spdx-tag.sh
Executable file
@ -0,0 +1,70 @@
|
||||
#! /bin/sh
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright 2020 Microsoft Corporation
|
||||
#
|
||||
# Produce a list of files with incorrect license tags
|
||||
|
||||
errors=0
|
||||
warnings=0
|
||||
quiet=false
|
||||
verbose=false
|
||||
|
||||
print_usage () {
|
||||
echo "usage: $(basename $0) [-q] [-v]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
check_spdx() {
|
||||
if $verbose; then
|
||||
echo "Files without SPDX License"
|
||||
echo "--------------------------"
|
||||
fi
|
||||
git grep -L SPDX-License-Identifier -- \
|
||||
':^.git*' ':^.ci/*' ':^.travis.yml' \
|
||||
':^README' ':^MAINTAINERS' ':^VERSION' ':^ABI_VERSION' \
|
||||
':^*/Kbuild' ':^*/README' \
|
||||
':^license/' ':^config/' ':^buildtools/' \
|
||||
':^*.cocci' ':^*.abignore' \
|
||||
':^*.def' ':^*.map' ':^*.ini' ':^*.data' ':^*.cfg' ':^*.txt' \
|
||||
':^*.svg' ':^*.png'\
|
||||
> $tmpfile
|
||||
|
||||
errors=$(wc -l < $tmpfile)
|
||||
$quiet || cat $tmpfile
|
||||
}
|
||||
|
||||
check_boilerplate() {
|
||||
if $verbose ; then
|
||||
echo
|
||||
echo "Files with redundant license text"
|
||||
echo "---------------------------------"
|
||||
fi
|
||||
|
||||
git grep -l Redistribution -- \
|
||||
':^license/' ':^/devtools/check-spdx-tag.sh' > $tmpfile
|
||||
|
||||
warnings=$(wc -l <$tmpfile)
|
||||
$quiet || cat $tmpfile
|
||||
}
|
||||
|
||||
while getopts qvh ARG ; do
|
||||
case $ARG in
|
||||
q ) quiet=true ;;
|
||||
v ) verbose=true ;;
|
||||
h ) print_usage ; exit 0 ;;
|
||||
? ) print_usage ; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
tmpfile=$(mktemp -t dpdk.checkspdx.XXXXXX)
|
||||
trap 'rm -f -- "$tmpfile"' INT TERM HUP EXIT
|
||||
|
||||
check_spdx
|
||||
$quiet || echo
|
||||
|
||||
check_boilerplate
|
||||
|
||||
$quiet || echo
|
||||
echo "total: $errors errors, $warnings warnings"
|
||||
exit $errors
|
@ -54,8 +54,13 @@ To document a public API, a doxygen-like format must be used: refer to :ref:`dox
|
||||
License Header
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Each file should begin with a special comment containing the appropriate copyright and license for the file.
|
||||
Generally this is the BSD License, except for code for Linux Kernel modules.
|
||||
Each file must begin with a special comment containing the
|
||||
`Software Package Data Exchange (SPDX) License Identfier <https://spdx.org/using-spdx-license-identifier>`_.
|
||||
|
||||
Generally this is the BSD License, except for code granted special exceptions.
|
||||
The SPDX licences identifier is sufficient, a file should not contain
|
||||
an additional text version of the license (boilerplate).
|
||||
|
||||
After any copyright header, a blank line should be left before any other contents, e.g. include statements in a C file.
|
||||
|
||||
C Preprocessor Directives
|
||||
|
Loading…
x
Reference in New Issue
Block a user