From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DFD0AA00BE; Fri, 12 Jun 2020 11:05:35 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 67F2729CB; Fri, 12 Jun 2020 11:05:35 +0200 (CEST) Received: from relay11.mail.gandi.net (relay11.mail.gandi.net [217.70.178.231]) by dpdk.org (Postfix) with ESMTP id 12CEC1B19 for ; Fri, 12 Jun 2020 11:05:34 +0200 (CEST) Received: from u256.net (lfbn-idf2-1-566-132.w86-246.abo.wanadoo.fr [86.246.31.132]) (Authenticated sender: grive@u256.net) by relay11.mail.gandi.net (Postfix) with ESMTPSA id 4187B100002; Fri, 12 Jun 2020 09:05:32 +0000 (UTC) Date: Fri, 12 Jun 2020 11:05:27 +0200 From: =?utf-8?Q?Ga=C3=ABtan?= Rivet To: Stephen Hemminger Cc: dev@dpdk.org Message-ID: <20200612090527.zsjttltuwt2dbj24@u256.net> References: <20200129155907.20556-1-stephen@networkplumber.org> <20200224210130.672-1-stephen@networkplumber.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200224210130.672-1-stephen@networkplumber.org> Subject: Re: [dpdk-dev] [PATCH v4] devtools: add new SPDX license compliance checker X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 24/02/20 13:01 -0800, Stephen Hemminger wrote: > 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 > --- > 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 I find it easier to maintain an exclude list by setting a variable and generating the relevant parameters: excludes='.git* .ci/* .travis.yml */Kbuild */README' exclude_opt="" set -f for pattern in $excludes; do exclude_opt="$exclude_opt ':^${pattern}'" done set +f printf "\"%s\"\n" "$exclude_opt" However I recognize that means dealing with contrarian globbing issues in shells, so it comes at a price. But I find changing the exclude list much easier that way. > + > + 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 `_. > + > +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 > -- Gaëtan