From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756582AbdLTXqd (ORCPT ); Wed, 20 Dec 2017 18:46:33 -0500 Received: from mail-pf0-f195.google.com ([209.85.192.195]:39089 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754303AbdLTXqa (ORCPT ); Wed, 20 Dec 2017 18:46:30 -0500 X-Google-Smtp-Source: ACJfBosCY7YeC7wIqUmTjpqkELLq2nwZDVY2cEd5Wwk1/iDIsn9G0f3MsqdsZcF7kxBiz3Gp/UIE2Q== From: Rob Herring To: linux-kernel@vger.kernel.org, Thomas Gleixner , Joe Perches Cc: Andy Whitcroft , Greg Kroah-Hartman , Philippe Ombredanne Subject: [PATCH v4] checkpatch.pl: Add SPDX license tag check Date: Wed, 20 Dec 2017 17:46:25 -0600 Message-Id: <20171220234625.16521-1-robh@kernel.org> X-Mailer: git-send-email 2.14.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add SPDX license tag check based on the rules defined in Documentation/process/license-rules.rst. To summarize, SPDX license tags should be on the 1st line (or 2nd line in scripts) using the appropriate comment style for the file type. Cc: Andy Whitcroft Cc: Joe Perches Cc: Greg Kroah-Hartman Cc: Thomas Gleixner Cc: Philippe Ombredanne Signed-off-by: Rob Herring --- Thomas, if you are inclined and Joe is happy with this, can you add this on top of your series adding license-rules.rst. v4: - Reference license-rules.rst - Add comment style checks based on file types - Check .rst files v3: - Since we specify that the tag goes on the 1st or 2nd line, the logic can be greatly simplified compared to v2 because we can just use the line number. And now the check is improved too. scripts/checkpatch.pl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 31031f10fe56..0324f845011d 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2866,6 +2866,31 @@ sub process { } } +# check for using SPDX license tag at beginning of files + if ($rawline =~ /^\+/ && !($realline == 1 && $rawline =~ /^[\s\+]#!/)) { + my $ln = 1; + my $comment = ""; + + if ($realfile =~ /\.(h|s|S)$/) { + $comment = '/\*'; + } elsif ($realfile =~ /\.(c|dts|dtsi)$/) { + $comment = '//'; + } elsif ($realfile =~ /\.(sh|pl|py)$/) { + if ($prevrawline =~ /^[\s\+]#!/) { + $ln = 2; + } + $comment = '#'; + } elsif ($realfile =~ /\.rst$/) { + $comment = '..'; + } + + if ($comment !~ /^$/ && + ($realline == $ln xor $rawline =~ m@^\+$comment SPDX-License-Identifier: @)) { + WARN("SPDX_LICENSE_TAG", + "Missing or malformed SPDX-License-Identifier tag in 1st (or 2nd for scripts) line\n" . $herecurr); + } + } + # check we are in a valid source file if not then ignore this hunk next if ($realfile !~ /\.(h|c|s|S|sh|dtsi|dts)$/); -- 2.14.1