From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753830AbdKJUTN (ORCPT ); Fri, 10 Nov 2017 15:19:13 -0500 Received: from mail-oi0-f65.google.com ([209.85.218.65]:53409 "EHLO mail-oi0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750799AbdKJUTL (ORCPT ); Fri, 10 Nov 2017 15:19:11 -0500 X-Google-Smtp-Source: AGs4zMZMEzDZMXRIrGd36RfGCztbgjgv9Y/e2D0D6ClSbKvTJyu514OVqcOQG2Ex/Fu4NlJJFQtFSQ== From: Rob Herring To: linux-kernel@vger.kernel.org Cc: Andy Whitcroft , Joe Perches , Greg Kroah-Hartman Subject: [PATCH v3] checkpatch.pl: Add SPDX license tag check Date: Fri, 10 Nov 2017 14:19:09 -0600 Message-Id: <20171110201909.6144-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 SPDX license tags are a thing now in the kernel[1]. It has also been decided to make them the first line in files. As Linus put it: "The real reason _I_ personally would like to see at least all the new SPDX lines to go at the very top of the file is that every time when we have some kind of ambiguity about placement, we end up with multiple cases, and then people don't notice when merging, and you end up having two - or you just end up having unnecessary merge conflicts because two different people picked two different choices)." Add a warning if SPDX-License-Identifier tag is not present in the first line (or 2nd for #! scripts) of files. [1] https://lwn.net/Articles/738235/ Cc: Andy Whitcroft Cc: Joe Perches Cc: Greg Kroah-Hartman Signed-off-by: Rob Herring --- 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. I tested this on a variety of files and Greg's patches adding the tags. I did find one error in Greg's patches. The tags were placed on the 2nd line even for scripts without a "#!" line. Want to know which ones? Well, you'll have to run checkpatch. :) scripts/checkpatch.pl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 8b80bac055e4..50633d44b49b 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2865,6 +2865,20 @@ sub process { } } +# check for using SPDX license tag at beginning of files + if ($realfile !~ /Documentation/ && $rawline =~ /^\+/ && + !($realline == 1 && $rawline =~ /^[\s\+]#!/)) { + my $ln = 1; + + if ($realline == 2 && $prevrawline =~ /^[\s\+]#!/) { + $ln++; + } + if ($realline == $ln xor $rawline =~ m@^\+(#|//|/\*) 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