From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>
Subject: [dpdk-dev] [PATCH v4] devtools: add new SPDX license compliance checker
Date: Mon, 24 Feb 2020 13:01:30 -0800 [thread overview]
Message-ID: <20200224210130.672-1-stephen@networkplumber.org> (raw)
In-Reply-To: <20200129155907.20556-1-stephen@networkplumber.org>
Simple script to look for drivers and scripts that
are missing requires SPDX header.
Update the contribution guidelines to indicate that SPDX license
identfier is required for this project.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
v4 - add MAINTAINERS entry
update coding style document
change name of script
MAINTAINERS | 1 +
devtools/check-spdx-tag.sh | 77 ++++++++++++++++++++++++
doc/guides/contributing/coding_style.rst | 9 ++-
3 files changed, 85 insertions(+), 2 deletions(-)
create mode 100755 devtools/check-spdx-tag.sh
diff --git a/MAINTAINERS b/MAINTAINERS
index 3d5e8d1104b2..6b0e042c5fbb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -96,6 +96,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
diff --git a/devtools/check-spdx-tag.sh b/devtools/check-spdx-tag.sh
new file mode 100755
index 000000000000..b1b8cdba4e4e
--- /dev/null
+++ b/devtools/check-spdx-tag.sh
@@ -0,0 +1,77 @@
+#! /bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright (c) 2019 Microsoft Corporation
+#
+# Produce a list of files with incorrect license tags
+
+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/' ':^doc/' ':^config/' ':^buildtools/' \
+ ':^*.cocci' ':^*.abignore' \
+ ':^*.def' ':^*.map' ':^*.ini' ':^*.data' ':^*.cfg' ':^*.txt' \
+ > $tmpfile
+
+ errors=0
+ while read -r line
+ do $quiet || echo $line
+ errors=$((errors + 1))
+ done < $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' |
+ while read line
+ do $quiet || echo $line
+ warnings=$((warnings + 1))
+ done
+
+ warnings=0
+ while read -r line
+ do $quiet || echo $line
+ warnings=$((errors + 1))
+ done < $tmpfile
+}
+
+quiet=false
+verbose=false
+
+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)
+trap 'rm -f -- "$tmpfile"' INT TERM HUP EXIT
+
+check_spdx
+$quiet || echo
+
+check_boilerplate
+
+$quiet || echo
+echo "total: $errors errors, $warnings warnings"
+exit $errors
diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst
index 841ef6d5c829..04626667dc18 100644
--- a/doc/guides/contributing/coding_style.rst
+++ b/doc/guides/contributing/coding_style.rst
@@ -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
--
2.20.1
next prev parent reply other threads:[~2020-02-24 21:01 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-29 15:59 [dpdk-dev] [PATCH v2] " Stephen Hemminger
2020-02-07 17:39 ` Stephen Hemminger
2020-02-07 17:52 ` [dpdk-dev] [PATCH v3] " Stephen Hemminger
2020-02-22 15:43 ` Thomas Monjalon
2020-02-22 15:45 ` Thomas Monjalon
2020-02-24 21:01 ` Stephen Hemminger [this message]
2020-04-28 20:15 ` [dpdk-dev] [PATCH v4] " Stephen Hemminger
2020-06-11 18:46 ` Stephen Hemminger
2020-06-11 21:32 ` Thomas Monjalon
2020-06-11 21:39 ` Thomas Monjalon
2020-06-12 8:36 ` Gaëtan Rivet
2020-06-12 14:53 ` Stephen Hemminger
2020-06-12 15:42 ` Thomas Monjalon
2020-06-12 9:05 ` Gaëtan Rivet
2020-07-14 23:23 ` Stephen Hemminger
2020-02-26 1:14 ` [dpdk-dev] [PATCH] " Stephen Hemminger
2020-07-14 23:21 ` [dpdk-dev] [PATCH v5] " Stephen Hemminger
2020-07-14 23:25 ` Stephen Hemminger
2020-07-30 22:00 ` Thomas Monjalon
2020-07-23 4:36 ` Stephen Hemminger
2020-07-30 22:06 ` Thomas Monjalon
2020-07-30 23:41 ` Stephen Hemminger
2020-08-26 15:12 ` Stephen Hemminger
2020-08-26 15:43 ` Bruce Richardson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200224210130.672-1-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).