From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89E51C433EF for ; Mon, 16 May 2022 10:27:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229634AbiEPK1f (ORCPT ); Mon, 16 May 2022 06:27:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46192 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233068AbiEPK10 (ORCPT ); Mon, 16 May 2022 06:27:26 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CAF7AE67; Mon, 16 May 2022 03:27:25 -0700 (PDT) Message-ID: <20220516102615.477393627@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696843; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=AEGNLRsULrrlU/iG+q1/N0tiNN2soHDw9Oun7z7w8C0=; b=p2jwGDkqbQBkm+lXvlqfBK0u5WWWvZvqI4NxnyIY2iP+PeNut8VZqH7Q43DM3H80YrGMJk Pww1UHxyl4oB0IFQgXfjhJ82sA9kP9GZ9HuLDeAIbi38Ei8VRbwviHqepB2uwzIn5PzV3s Y6zoz4pMxdrx+jMKHuJMY78THQGHGoApVnaDsCa/GaXqJbIyVZErNXVkJ98DvLleaes5Ui LVcofcSbO49LtwHOGbRUjxZyzaYrSNr1+ohvHo+DhYdCGwKd4XYk49Sf8S/bPChjNUkZTO 3NzwE4BFt5tw1ReHmc73iWI5kkUPYzbLfIVsynp3hJ1KiKx1sQRCiUrlroaSSg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696843; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=AEGNLRsULrrlU/iG+q1/N0tiNN2soHDw9Oun7z7w8C0=; b=nGlg58vyrD65CKCz0DqWjdniKijQ4huOAhsv8NacYDyO9ZCeMzxAsOrRSB4+vm6jB6800/ 59jZ/dd/077x3ZDg== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 1/9] scripts/spdxcheck: Add percentage to statistics References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:22 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Files checked: 75856 Lines checked: 294516 Files with SPDX: 59410 78% Files with errors: 0 Signed-off-by: Thomas Gleixner --- scripts/spdxcheck.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- a/scripts/spdxcheck.py +++ b/scripts/spdxcheck.py @@ -285,7 +285,9 @@ import os sys.stderr.write('\n') sys.stderr.write('Files checked: %12d\n' %parser.check= ed) sys.stderr.write('Lines checked: %12d\n' %parser.lines= _checked) - sys.stderr.write('Files with SPDX: %12d\n' %parser.spdx_= valid) + if parser.checked: + pc =3D int(100 * parser.spdx_valid / parser.checked) + sys.stderr.write('Files with SPDX: %12d %3d%%\n' %(p= arser.spdx_valid, pc)) sys.stderr.write('Files with errors: %12d\n' %parser.spdx_= errors) =20 sys.exit(0) From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F733C433FE for ; Mon, 16 May 2022 10:27:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242594AbiEPK1p (ORCPT ); Mon, 16 May 2022 06:27:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46208 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233233AbiEPK11 (ORCPT ); Mon, 16 May 2022 06:27:27 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 470B662F4; Mon, 16 May 2022 03:27:26 -0700 (PDT) Message-ID: <20220516102615.536726051@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696845; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=j3Ex0Ow/KN+YBi2B26Hp2A14bYxb03Mt8DMY0lW7zmE=; b=2v6Qgw5cdY4aCQ9zxJM123Zw024PSKt6bxe/UQfT8wbl5CP1MD5s+3XtGCxo3iraFTy/hs Q9AuMEVr99Rh84X38DmWBpa27tSG50tEGFWGmAvuAjwrrpykF2+1+5MewB/qM3nUoYHx+d U0b4j0RreKPIA14A2Z/YqOJ9FLWBIk52sKtmZ6mVb1CKWDQ9k56HGT6YDcsHZXIWgyeqaW HL8PzUPHl6vgVpTyZ3BPdbnnHJQwRhryIOIqDQ2aKJyh1AHq7og2AKkQxw9+S2R5fXlLoc hEUf4oP+7brb+xoHWmIexJm4mkywO1st5SAPHPRNyiNw+I1gxGqFKxo33An3NA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696845; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=j3Ex0Ow/KN+YBi2B26Hp2A14bYxb03Mt8DMY0lW7zmE=; b=3gJsHHYHwC3MsqT8GtwzAdywjIVZiM4FVu3oS29E5wfH88MEfiYgFDkqWlooFNqABp6nfy LoV//abVioj+RICg== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 2/9] scripts/spdxcheck: Add directory statistics References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:24 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" For better insights. Directories accounted: 4646 Directories complete: 2565 55% Signed-off-by: Thomas Gleixner --- scripts/spdxcheck.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) --- a/scripts/spdxcheck.py +++ b/scripts/spdxcheck.py @@ -28,6 +28,15 @@ import os self.licenses =3D [ ] self.exceptions =3D { } =20 +class dirinfo(object): + def __init__(self): + self.missing =3D 0 + self.total =3D 0 + + def update(self, miss): + self.total +=3D 1 + self.missing +=3D miss + # Read the spdx data from the LICENSES directory def read_spdxdata(repo): =20 @@ -93,6 +102,7 @@ import os self.checked =3D 0 self.spdx_valid =3D 0 self.spdx_errors =3D 0 + self.spdx_dirs =3D {} self.curline =3D 0 self.deepest =3D 0 =20 @@ -167,6 +177,7 @@ import os def parse_lines(self, fd, maxlines, fname): self.checked +=3D 1 self.curline =3D 0 + fail =3D 1 try: for line in fd: line =3D line.decode(locale.getpreferredencoding(False), e= rrors=3D'ignore') @@ -192,6 +203,7 @@ import os # Should we check for more SPDX ids in the same file and # complain if there are any? # + fail =3D 0 break =20 except ParserException as pe: @@ -203,6 +215,11 @@ import os sys.stdout.write('%s: %d:0 %s\n' %(fname, self.curline, pe= .txt)) self.spdx_errors +=3D 1 =20 + base =3D os.path.dirname(fname) + di =3D self.spdx_dirs.get(base, dirinfo()) + di.update(fail) + self.spdx_dirs[base] =3D di + def scan_git_tree(tree): for el in tree.traverse(): # Exclude stuff which would make pointless noise @@ -289,6 +306,16 @@ import os pc =3D int(100 * parser.spdx_valid / parser.checked) sys.stderr.write('Files with SPDX: %12d %3d%%\n' %(p= arser.spdx_valid, pc)) sys.stderr.write('Files with errors: %12d\n' %parser.spdx_= errors) + ndirs =3D len(parser.spdx_dirs) + dirsok =3D 0 + if ndirs: + sys.stderr.write('\n') + sys.stderr.write('Directories accounted: %8d\n' %ndirs) + for di in parser.spdx_dirs.values(): + if not di.missing: + dirsok +=3D 1 + pc =3D int(100 * dirsok / ndirs) + sys.stderr.write('Directories complete: %8d %3d%%\n' = %(dirsok, pc)) =20 sys.exit(0) From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F131C433EF for ; Mon, 16 May 2022 10:27:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234993AbiEPK1r (ORCPT ); Mon, 16 May 2022 06:27:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236843AbiEPK13 (ORCPT ); Mon, 16 May 2022 06:27:29 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 088BBDEB7; Mon, 16 May 2022 03:27:28 -0700 (PDT) Message-ID: <20220516102615.594443792@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696846; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=iNfD7ykfCeiXZWxnwVI0kcPJ8rKUxOXEi0kWV1J+zM4=; b=rGpVlRju1ftE25hIYJfZ06jJR/T7hJmD1X2IfmShkBJ+HMto0QddQYuQDJNSIs3GS0OOQy SPQU/yZD/nRx9K5+6ardlffHmyhJTwcDnD2gm6H0wrmcQbnr3Y48scEbg90jEgyUb5f+Jp //oyoSkHQ7XKH/d2JLRLTmdnEg49ZKcR3GxFaGv1btQSCaSCHB+E2EijspcubfYZmWVivb wXtf0V/rpmF4Kf9Zj5xEAB6r32XZC+g0W/Vhnp/Zi7BWICmFbm6zQ3H+CI6CBdb7w8mZrs Ufg36QcmMWvK0aUtq7fN7t40yxnoABHck0LzZW38Qvlf4SuzXW26QVKFjNh2EA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696846; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=iNfD7ykfCeiXZWxnwVI0kcPJ8rKUxOXEi0kWV1J+zM4=; b=6ipFWcrz9+p0BHUwRmxLeKZlatXWiy9yKqNsG8geCT8feXiae1orzAPlzhtYx4LqDTE0fZ T6Ef69bi5jh6Y0BA== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 3/9] scripts/spdxcheck: Add [sub]directory statistics References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:26 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add functionality to display [sub]directory statistics. This is enabled by adding '-d' to the command line. The optional -D parameter allows to limit the directory depth. If supplied the subdirectories are accumulated # scripts/spdxcheck.py -d kernel/ Incomplete directories: SPDX in Files ./kernel : 111 of 114 97% ./kernel/bpf : 43 of 45 95% ./kernel/bpf/preload : 4 of 5 80% ./kernel/bpf/preload/iterators : 4 of 5 80% ./kernel/cgroup : 10 of 13 76% ./kernel/configs : 0 of 9 0% ./kernel/debug : 3 of 4 75% ./kernel/debug/kdb : 1 of 11 9% ./kernel/locking : 29 of 32 90% ./kernel/sched : 38 of 39 97% The result can be accumulated by restricting the depth via the new command line option '-d $DEPTH': # scripts/spdxcheck.py -d -D1 Incomplete directories: SPDX in Files ./ : 6 of 13 46% ./Documentation : 4096 of 8451 48% ./arch : 13476 of 16402 82% ./block : 100 of 101 99% ./certs : 11 of 14 78% ./crypto : 145 of 176 82% ./drivers : 24682 of 30745 80% ./fs : 1876 of 2110 88% ./include : 5175 of 5757 89% ./ipc : 12 of 13 92% ./kernel : 493 of 527 93% ./lib : 393 of 524 75% ./mm : 151 of 159 94% ./net : 1713 of 1900 90% ./samples : 211 of 273 77% ./scripts : 341 of 435 78% ./security : 241 of 250 96% ./sound : 2438 of 2503 97% ./tools : 3810 of 5462 69% ./usr : 9 of 10 90% Signed-off-by: Thomas Gleixner --- scripts/spdxcheck.py | 67 +++++++++++++++++++++++++++++++++++++++++++---= ----- 1 file changed, 57 insertions(+), 10 deletions(-) --- a/scripts/spdxcheck.py +++ b/scripts/spdxcheck.py @@ -103,9 +103,21 @@ import os self.spdx_valid =3D 0 self.spdx_errors =3D 0 self.spdx_dirs =3D {} + self.dirdepth =3D -1 + self.basedir =3D '.' self.curline =3D 0 self.deepest =3D 0 =20 + def set_dirinfo(self, basedir, dirdepth): + if dirdepth >=3D 0: + self.basedir =3D basedir + bdir =3D basedir.lstrip('./').rstrip('/') + if bdir !=3D '': + parts =3D bdir.split('/') + else: + parts =3D [] + self.dirdepth =3D dirdepth + len(parts) + # Validate License and Exception IDs def validate(self, tok): id =3D tok.value.upper() @@ -215,12 +227,29 @@ import os sys.stdout.write('%s: %d:0 %s\n' %(fname, self.curline, pe= .txt)) self.spdx_errors +=3D 1 =20 + if fname =3D=3D '-': + return + base =3D os.path.dirname(fname) + if self.dirdepth > 0: + parts =3D base.split('/') + i =3D 0 + base =3D '.' + while i < self.dirdepth and i < len(parts) and len(parts[i]): + base +=3D '/' + parts[i] + i +=3D 1 + elif self.dirdepth =3D=3D 0: + base =3D self.basedir + else: + base =3D './' + base.rstrip('/') + base +=3D '/' + di =3D self.spdx_dirs.get(base, dirinfo()) di.update(fail) self.spdx_dirs[base] =3D di =20 -def scan_git_tree(tree): +def scan_git_tree(tree, basedir, dirdepth): + parser.set_dirinfo(basedir, dirdepth) for el in tree.traverse(): # Exclude stuff which would make pointless noise # FIXME: Put this somewhere more sensible @@ -233,15 +262,19 @@ import os with open(el.path, 'rb') as fd: parser.parse_lines(fd, args.maxlines, el.path) =20 -def scan_git_subtree(tree, path): +def scan_git_subtree(tree, path, dirdepth): for p in path.strip('/').split('/'): tree =3D tree[p] - scan_git_tree(tree) + scan_git_tree(tree, path.strip('/'), dirdepth) =20 if __name__ =3D=3D '__main__': =20 ap =3D ArgumentParser(description=3D'SPDX expression checker') ap.add_argument('path', nargs=3D'*', help=3D'Check path or file. If no= t given full git tree scan. For stdin use "-"') + ap.add_argument('-d', '--dirs', action=3D'store_true', + help=3D'Show [sub]directory statistics.') + ap.add_argument('-D', '--depth', type=3Dint, default=3D-1, + help=3D'Directory depth for -d statistics. Default: un= limited') ap.add_argument('-m', '--maxlines', type=3Dint, default=3D15, help=3D'Maximum number of lines to scan in a file. Def= ault 15') ap.add_argument('-v', '--verbose', action=3D'store_true', help=3D'Verb= ose statistics output') @@ -285,13 +318,21 @@ import os if os.path.isfile(p): parser.parse_lines(open(p, 'rb'), args.maxlines, p) elif os.path.isdir(p): - scan_git_subtree(repo.head.reference.commit.tree, = p) + scan_git_subtree(repo.head.reference.commit.tree, = p, + args.depth) else: sys.stderr.write('path %s does not exist\n' %p) sys.exit(1) else: # Full git tree scan - scan_git_tree(repo.head.commit.tree) + scan_git_tree(repo.head.commit.tree, '.', args.depth) + + ndirs =3D len(parser.spdx_dirs) + dirsok =3D 0 + if ndirs: + for di in parser.spdx_dirs.values(): + if not di.missing: + dirsok +=3D 1 =20 if args.verbose: sys.stderr.write('\n') @@ -306,17 +347,23 @@ import os pc =3D int(100 * parser.spdx_valid / parser.checked) sys.stderr.write('Files with SPDX: %12d %3d%%\n' %(p= arser.spdx_valid, pc)) sys.stderr.write('Files with errors: %12d\n' %parser.spdx_= errors) - ndirs =3D len(parser.spdx_dirs) - dirsok =3D 0 if ndirs: sys.stderr.write('\n') sys.stderr.write('Directories accounted: %8d\n' %ndirs) - for di in parser.spdx_dirs.values(): - if not di.missing: - dirsok +=3D 1 pc =3D int(100 * dirsok / ndirs) sys.stderr.write('Directories complete: %8d %3d%%\n' = %(dirsok, pc)) =20 + if ndirs and ndirs !=3D dirsok and args.dirs: + if args.verbose: + sys.stderr.write('\n') + sys.stderr.write('Incomplete directories: SPDX in Files\n') + for f in sorted(parser.spdx_dirs.keys()): + di =3D parser.spdx_dirs[f] + if di.missing: + valid =3D di.total - di.missing + pc =3D int(100 * valid / di.total) + sys.stderr.write(' %-80s: %5d of %5d %3d%%\n' = %(f, valid, di.total, pc)) + sys.exit(0) =20 except Exception as ex: From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8D702C433F5 for ; Mon, 16 May 2022 10:28:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241794AbiEPK1z (ORCPT ); Mon, 16 May 2022 06:27:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238343AbiEPK1b (ORCPT ); Mon, 16 May 2022 06:27:31 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A46DDF1D; Mon, 16 May 2022 03:27:29 -0700 (PDT) Message-ID: <20220516102615.651153597@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696848; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=G8D+w9l5Lss27nCE3t4mlITpiDy4X9kzTzFB0OULnRM=; b=zjys7jPcbR63XH5SkdtFuVf5Ch/I9Z+TOamn2Ub+6z70KBO5nUOhFIwt/0eR3jEA3dltRB 71HNhyKXxCymJaUfaqUtvDjVSN9hKkEnWIKZprL7lw9pLTN0iGtDbL3AA2rRIabliAV05u rain+VAi2uDA9oB1GA+Z0FRfwcKFjTG/2UzXuOm+pmXaY6rKpeudtymLLvRO0+2c1JTsVG AIgoliVwWZeR7X6tT4vh/dRcxI+8nxM5vDCGIClDdieTlc8Chdeh9lsauvVBk0SUyzA2XK K13OVBfZTIL7Q1DS0vhkBxLljczWDZVsgOpuKdtPKYqWRUd8Z6YqMcH7cl9vHA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696848; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=G8D+w9l5Lss27nCE3t4mlITpiDy4X9kzTzFB0OULnRM=; b=hYN7QVgm84WdviV6EHqfWLd2za/odVH6senXYTQUIcol73T/3oyNCWyqNXsS3YXPrIzLrw vSxQcYM9bdrpDdCA== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 4/9] scripts/spdxcheck: Add option to display files without SPDX References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:27 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Makes life easier when chasing the missing ones. Is activated with '-f' on the command line. # scripts/spdxcheck.py -f kernel/ Files without SPDX: ./kernel/cpu.c ./kernel/kmod.c ./kernel/relay.c ./kernel/bpf/offload.c ./kernel/bpf/preload/.gitignore ./kernel/bpf/preload/iterators/README ./kernel/bpf/ringbuf.c ./kernel/cgroup/cgroup.c ./kernel/cgroup/cpuset.c ./kernel/cgroup/legacy_freezer.c ./kernel/debug/debug_core.h ./kernel/debug/kdb/Makefile ./kernel/debug/kdb/kdb_bp.c ./kernel/debug/kdb/kdb_bt.c ./kernel/debug/kdb/kdb_cmds ./kernel/debug/kdb/kdb_debugger.c ./kernel/debug/kdb/kdb_io.c ./kernel/debug/kdb/kdb_keyboard.c ./kernel/debug/kdb/kdb_main.c ./kernel/debug/kdb/kdb_private.h ./kernel/debug/kdb/kdb_support.c ./kernel/locking/lockdep_states.h ./kernel/locking/mutex-debug.c ./kernel/locking/spinlock_debug.c ./kernel/sched/pelt.h With the optional -D parameter the directory depth can be limited: # scripts/spdxcheck.py -f -D 0 kernel/ Files without SPDX: ./kernel/cpu.c ./kernel/kmod.c ./kernel/relay.c Signed-off-by: Thomas Gleixner --- scripts/spdxcheck.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) --- a/scripts/spdxcheck.py +++ b/scripts/spdxcheck.py @@ -32,10 +32,16 @@ import os def __init__(self): self.missing =3D 0 self.total =3D 0 + self.files =3D [] =20 - def update(self, miss): + def update(self, fname, basedir, miss): self.total +=3D 1 self.missing +=3D miss + if miss: + fname =3D './' + fname + bdir =3D os.path.dirname(fname) + if bdir =3D=3D basedir.rstrip('/'): + self.files.append(fname) =20 # Read the spdx data from the LICENSES directory def read_spdxdata(repo): @@ -245,7 +251,7 @@ import os base +=3D '/' =20 di =3D self.spdx_dirs.get(base, dirinfo()) - di.update(fail) + di.update(fname, base, fail) self.spdx_dirs[base] =3D di =20 def scan_git_tree(tree, basedir, dirdepth): @@ -275,6 +281,8 @@ import os help=3D'Show [sub]directory statistics.') ap.add_argument('-D', '--depth', type=3Dint, default=3D-1, help=3D'Directory depth for -d statistics. Default: un= limited') + ap.add_argument('-f', '--files', action=3D'store_true', + help=3D'Show files without SPDX.') ap.add_argument('-m', '--maxlines', type=3Dint, default=3D15, help=3D'Maximum number of lines to scan in a file. Def= ault 15') ap.add_argument('-v', '--verbose', action=3D'store_true', help=3D'Verb= ose statistics output') @@ -364,6 +372,15 @@ import os pc =3D int(100 * valid / di.total) sys.stderr.write(' %-80s: %5d of %5d %3d%%\n' = %(f, valid, di.total, pc)) =20 + if ndirs and ndirs !=3D dirsok and args.files: + if args.verbose or args.dirs: + sys.stderr.write('\n') + sys.stderr.write('Files without SPDX:\n') + for f in sorted(parser.spdx_dirs.keys()): + di =3D parser.spdx_dirs[f] + for f in sorted(di.files): + sys.stderr.write(' %s\n' %f) + sys.exit(0) =20 except Exception as ex: From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 78B36C433EF for ; Mon, 16 May 2022 10:28:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242744AbiEPK2E (ORCPT ); Mon, 16 May 2022 06:28:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231883AbiEPK1c (ORCPT ); Mon, 16 May 2022 06:27:32 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C34F11C2D; Mon, 16 May 2022 03:27:31 -0700 (PDT) Message-ID: <20220516102615.709125683@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696849; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=TbVp2Z3JVdRR2wBH415NWLfbZybxBrBGYeL5p28FLAc=; b=Udg+eUPUYk3CE6B6gEMRGeJgOB6rugVJ92qIU0WeuNb3sIqVBcr3qqRDqwC29kRi3ZxBRc NECt4KNoUbnCp8Otyke3u6/Y6ONyIS8CBwKDELwQGpv0Nrk1xwukoAVtyiatgwfPSThBoE Y6Fhib7GKxWNS345qQaurUaDGJrr3J5Rz6gT2CzDDGQNKHL6AWn96J7BZ3uQjgsobNjeht 3GgZz/mYlvJC6DJxvfpzR/T/5MHBQAABPNNKSkEocWNY0kPa5Uv5rzzHYyXABz7y9K9TgU J/om7+1kNOK0bc2vuK0y87fhBSLTr24z7/FNQ7BxfIAV9sOKaeMdQQ1AhpeIcw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696849; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=TbVp2Z3JVdRR2wBH415NWLfbZybxBrBGYeL5p28FLAc=; b=KxQtQHEi/A9n9qNkb6aVTyQUevLP8tmnIUCxbaJPzEoCAl+bmlXBVIRRctAvU2J92iEpSR I1/WNuNDAwKWBaAw== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 5/9] scripts/spdxcheck: Put excluded files and directories into a separate file References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:29 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The files and directories which are excluded from scanning are currently hard coded in the script. That's not maintainable and not accessible for external tools. Move the files and directories which should be excluded into a file. The default file is scripts/spdxexclude. This can be overridden with the '-e $FILE' command line option. The file format and syntax is similar to the .gitignore file. Signed-off-by: Thomas Gleixner --- scripts/spdxcheck.py | 70 ++++++++++++++++++++++++++++++++++++++++++++++= ----- scripts/spdxexclude | 8 +++++ 2 files changed, 72 insertions(+), 6 deletions(-) --- a/scripts/spdxcheck.py +++ b/scripts/spdxcheck.py @@ -6,6 +6,7 @@ from argparse import ArgumentParser from ply import lex, yacc import locale import traceback +import fnmatch import sys import git import re @@ -106,6 +107,7 @@ import os self.parser =3D yacc.yacc(module =3D self, write_tables =3D False,= debug =3D False) self.lines_checked =3D 0 self.checked =3D 0 + self.excluded =3D 0 self.spdx_valid =3D 0 self.spdx_errors =3D 0 self.spdx_dirs =3D {} @@ -254,17 +256,47 @@ import os di.update(fname, base, fail) self.spdx_dirs[base] =3D di =20 +class pattern(object): + def __init__(self, line): + self.pattern =3D line + self.match =3D self.match_file + if line =3D=3D '.*': + self.match =3D self.match_dot + elif line.endswith('/'): + self.pattern =3D line[:-1] + self.match =3D self.match_dir + elif line.startswith('/'): + self.pattern =3D line[1:] + self.match =3D self.match_fn + + def match_dot(self, fpath): + return os.path.basename(fpath).startswith('.') + + def match_file(self, fpath): + return os.path.basename(fpath) =3D=3D self.pattern + + def match_fn(self, fpath): + return fnmatch.fnmatchcase(fpath, self.pattern) + + def match_dir(self, fpath): + if self.match_fn(os.path.dirname(fpath)): + return True + return fpath.startswith(self.pattern) + +def exclude_file(fpath): + for rule in exclude_rules: + if rule.match(fpath): + return True + return False + def scan_git_tree(tree, basedir, dirdepth): parser.set_dirinfo(basedir, dirdepth) for el in tree.traverse(): - # Exclude stuff which would make pointless noise - # FIXME: Put this somewhere more sensible - if el.path.startswith("LICENSES"): - continue - if el.path.find("license-rules.rst") >=3D 0: - continue if not os.path.isfile(el.path): continue + if exclude_file(el.path): + parser.excluded +=3D 1 + continue with open(el.path, 'rb') as fd: parser.parse_lines(fd, args.maxlines, el.path) =20 @@ -273,6 +305,20 @@ import os tree =3D tree[p] scan_git_tree(tree, path.strip('/'), dirdepth) =20 +def read_exclude_file(fname): + rules =3D [] + if not fname: + return rules + with open(fname) as fd: + for line in fd: + line =3D line.strip() + if line.startswith('#'): + continue + if not len(line): + continue + rules.append(pattern(line)) + return rules + if __name__ =3D=3D '__main__': =20 ap =3D ArgumentParser(description=3D'SPDX expression checker') @@ -281,6 +327,8 @@ import os help=3D'Show [sub]directory statistics.') ap.add_argument('-D', '--depth', type=3Dint, default=3D-1, help=3D'Directory depth for -d statistics. Default: un= limited') + ap.add_argument('-e', '--exclude', + help=3D'File containing file patterns to exclude. Defa= ult: scripts/spdxexclude') ap.add_argument('-f', '--files', action=3D'store_true', help=3D'Show files without SPDX.') ap.add_argument('-m', '--maxlines', type=3Dint, default=3D15, @@ -317,6 +365,15 @@ import os sys.exit(1) =20 try: + fname =3D args.exclude + if not fname: + fname =3D os.path.join(os.path.dirname(__file__), 'spdxexclude= ') + exclude_rules =3D read_exclude_file(fname) + except Exception as ex: + sys.stderr.write('FAIL: Reading exclude file %s: %s\n' %(fname, ex= )) + sys.exit(1) + + try: if len(args.path) and args.path[0] =3D=3D '-': stdin =3D os.fdopen(sys.stdin.fileno(), 'rb') parser.parse_lines(stdin, args.maxlines, '-') @@ -349,6 +406,7 @@ import os sys.stderr.write('License IDs %12d\n' %len(spdx.lic= enses)) sys.stderr.write('Exception IDs %12d\n' %len(spdx.exc= eptions)) sys.stderr.write('\n') + sys.stderr.write('Files excluded: %12d\n' %parser.exclu= ded) sys.stderr.write('Files checked: %12d\n' %parser.check= ed) sys.stderr.write('Lines checked: %12d\n' %parser.lines= _checked) if parser.checked: --- /dev/null +++ b/scripts/spdxexclude @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Patterns for excluding files and directories + +# Ignore the license directory and the licensing documentation which would +# create lots of noise for no value +LICENSES/ +license-rules.rst From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9D9D4C433EF for ; Mon, 16 May 2022 10:28:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240127AbiEPK2J (ORCPT ); Mon, 16 May 2022 06:28:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46442 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241400AbiEPK1d (ORCPT ); Mon, 16 May 2022 06:27:33 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D139120B6; Mon, 16 May 2022 03:27:32 -0700 (PDT) Message-ID: <20220516102615.766987817@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696851; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=z4uxJ2Fe9V1FkV5qNjPZemnSQMhnfhGb2cwBVgOV5X8=; b=1UUFlMH9zhh/CYxEsMdVlAEz3INtYFSkTJlyFO/l/J50abJ5fs3Li2h5jqBSDjJ2BVagLS ZTGi+XcTR+oNOMMzr5KnL4T/+RRtgWt0dLHYix34gqn3T4ECw89TI18m99cE+kU/gyA223 OLaxNfiI+bGpI90Xr0EgVRFhscH5mYX0rZBnFzakzcrdy2UdUdtN1CFooZnkjVeoe5zmx3 bux2dARCYBl8NZwrOLAHq5iMVyPJTS6vbWDSZRC1GfYdc4kURMeK3+gcBdjhVIhM31CG9s waZTYodZVCjvhcNRkG0QIU3c3cAeZwtHyi874yynaAgMS7zxEHY2sVvEDGunKg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696851; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=z4uxJ2Fe9V1FkV5qNjPZemnSQMhnfhGb2cwBVgOV5X8=; b=X8P0/sjKL6dy6xhzTSBqN0JrFYnGyhWnNtpu7TOiVhxkHzePqc/tf6a6T8izQR8JT1CsfY Uk+HarZljk/TyfCA== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 6/9] scripts/spdxcheck: Exclude config directories References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:30 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Kernel configuration files like default configs are machine generated and pretty useless outside of the kernel context. Signed-off-by: Thomas Gleixner --- scripts/spdxexclude | 5 +++++ 1 file changed, 5 insertions(+) --- a/scripts/spdxexclude +++ b/scripts/spdxexclude @@ -6,3 +6,8 @@ # create lots of noise for no value LICENSES/ license-rules.rst + +# Ignore config files and snippets. The majority is generated +# by the Kconfig tools +kernel/configs/ +arch/*/configs/ From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A57AC433EF for ; Mon, 16 May 2022 10:28:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242475AbiEPK2V (ORCPT ); Mon, 16 May 2022 06:28:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46522 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241709AbiEPK1f (ORCPT ); Mon, 16 May 2022 06:27:35 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 204CE12626; Mon, 16 May 2022 03:27:34 -0700 (PDT) Message-ID: <20220516102615.824675061@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696852; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=keWFZaYM3pBWFQL5eIcbG+1HbVJ3I2JMHzQ+elRSrxM=; b=QQvwH2yazLnIQpol2NnIQyjNVa7cbaZyfJ2Il6/Kzj5alqumg2cfd2+gxQzFcWO7nlfXwE NFRPim8kv5DIMovcYJuaVkwRlP2F4YMKX1I39pwqCo2RKVVhCU2sR4h+lupqEO2CXFcE8A xSf07F/ZV75ukk9ajU/c7KxEL93Z8OJRYnfD3WOYR2GSJjsz5GF6grZRik0nwF3jIS5r8G xEKCPR134EWVvXAeC3nvsdeauWVMz4hlq7FCVB14oVz7mVpc2/K5F2UBbDKQvSfIQStFtl Yk8rkgDgyD+VcRDttWmlKacfKuTHBdi1qXh454owPdwLMsvq23rB0oYyHYTEhw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696852; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=keWFZaYM3pBWFQL5eIcbG+1HbVJ3I2JMHzQ+elRSrxM=; b=WEqQzAxHOkuYnp8pikfGWwIZy3UDO9Kz4tHS5b27dLDWdbMmrsSGdjFAm+epgpabA3Qm0C w+jO4M/Gl3TTZ/Ag== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 7/9] scripts/spdxcheck: Exclude MAINTAINERS/CREDITS References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:32 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Listings of maintainers and people who deserve credits are not really interesting in terms of copyright. The usage of these files outside of the kernel is pointless and the file format is trivial. No point in chasing them or slapping a SPDX identifier into them just because. Signed-off-by: Thomas Gleixner --- scripts/spdxexclude | 4 ++++ 1 file changed, 4 insertions(+) --- a/scripts/spdxexclude +++ b/scripts/spdxexclude @@ -11,3 +11,7 @@ license-rules.rst # by the Kconfig tools kernel/configs/ arch/*/configs/ + +# Other files without copyrightable content +/CREDITS +/MAINTAINERS From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8EF7CC433F5 for ; Mon, 16 May 2022 10:28:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229478AbiEPK2c (ORCPT ); Mon, 16 May 2022 06:28:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46654 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242602AbiEPK1i (ORCPT ); Mon, 16 May 2022 06:27:38 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D28E71276B; Mon, 16 May 2022 03:27:35 -0700 (PDT) Message-ID: <20220516102615.884180377@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696854; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=CoGlZyFL3pAxXiJaU2U3vnxv5onfr/2AaV/j+pIZ2Ys=; b=xriXfmZSJCuMcwZ8H+eZ/eLkKxees/NqxQdyw5eu71hEm8fC6VbGhCOaYMRRkiRVKB68u4 ZdsZMW2dsNFYT4773gpVoBiY+E4AIU0JvWIDLQ4PmItCAbLP46K6vyR48dcNPG6LeEDjYU lvfq8rOlX6lOtbf+2oZyMd8mDRQ3nCXlvKEvDcYWCNY3fGRGWRKM8R+fY6eo1EwmVZ+Jpd Xnu32UcP/kqMIr50QltJ6aI+QRCmGRkRZR4cBKl3zwYHl4Y52ZbZKzxS1v9HPqKkhcO7ic wnlGlmhUNeMeVIBfYxX20de1vsIWVgledsAt6oTmNKgFncyEku27UD0CQJ1VXA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696854; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=CoGlZyFL3pAxXiJaU2U3vnxv5onfr/2AaV/j+pIZ2Ys=; b=RVVbPdZRF77TpW3NSEgwFohkWfCfj+Xz1oObfQ3beB5xCgOzihZ61UDBw9t8eoPwUGq/sj Y0UhoMBz7SVNDRAA== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 8/9] scripts/spdxcheck: Exclude dot files References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:33 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" None of these files .clang-format, .cocciconfig, .get_maintainer.ignore, .gitattributes, .gitignore, .mailmap have copyrightable content. They are configuration files which use a publicly documented format. Signed-off-by: Thomas Gleixner --- scripts/spdxexclude | 6 ++++++ 1 file changed, 6 insertions(+) --- a/scripts/spdxexclude +++ b/scripts/spdxexclude @@ -2,6 +2,12 @@ # # Patterns for excluding files and directories =20 +# Ignore dot files: +# .clang-format, .cocciconfig, .get_maintainer.ignore +# .gitattributes, .gitignore, .mailmap +# do not really have copyrightable content +.* + # Ignore the license directory and the licensing documentation which would # create lots of noise for no value LICENSES/ From nobody Sun Jun 14 16:05:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 777D6C433F5 for ; Mon, 16 May 2022 10:28:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241400AbiEPK2g (ORCPT ); Mon, 16 May 2022 06:28:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46656 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242608AbiEPK1i (ORCPT ); Mon, 16 May 2022 06:27:38 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6AF0912A86; Mon, 16 May 2022 03:27:37 -0700 (PDT) Message-ID: <20220516102615.947490347@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1652696856; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=1eoy5klb8svAdIn9/UXgJevyTb9Ww/jSlczBpVi7ZNQ=; b=rP1Gt0hSMwM7kYHgwY2C/ntB3s+H1l/1S6Km3OE8/0DZSiXO+N34LP58EkR/cK5y5ZA+vl rCWdp5xSsaIN6io1zjKsLjBMvlaLBcMUpFxr5/7WhC2sRknoYnhYII+b5BBK8j91zHb8nT mwBEvkbCWlzSFQiak01DaUqEyHZpla7pzVWnN27XI3fDcHv8gcy1Sk34rP/2+zY3rVjgac DUDprnEnjAC5I55v/zWRtcfdCkdtjVnrNq5ir3arzOKHnsyC9yJEC2XNj+DmdxfJbuGHa9 YCAeEM6lsU0ulctTwMK154VMv12Y5c92F6x1echwCe6n9er2/w1cZkeemGlsog== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1652696856; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=1eoy5klb8svAdIn9/UXgJevyTb9Ww/jSlczBpVi7ZNQ=; b=lssgXrIntPIE3+KeFtioEjxQhOZYiNdcS54BaTMXZbEgYUywepWrJcAAiZpO710cCWZsWo 53HbHOG5ATwx3aBg== From: Thomas Gleixner To: LKML Cc: linux-spdx@vger.kernel.org, Greg Kroah-Hartman , Christoph Hellwig Subject: [patch 9/9] scripts/spdxcheck: Exclude top-level README References: <20220516101901.475557433@linutronix.de> MIME-Version: 1.0 Date: Mon, 16 May 2022 12:27:35 +0200 (CEST) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Nothing copyrightable to see here. Signed-off-by: Thomas Gleixner --- scripts/spdxexclude | 1 + 1 file changed, 1 insertion(+) --- a/scripts/spdxexclude +++ b/scripts/spdxexclude @@ -21,3 +21,4 @@ arch/*/configs/ # Other files without copyrightable content /CREDITS /MAINTAINERS +/README