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:
Stephen Hemminger 2020-07-14 16:21:01 -07:00 committed by Thomas Monjalon
parent 7dba4148ca
commit 525d803185
3 changed files with 78 additions and 2 deletions

View file

@ -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
View 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

View file

@ -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