Now that all of the makefiles under the src tree have SPDX headers, add that expectation to the license header lint tool by removing the exception for Makefile.inc. Signed-off-by: Martin Roth <gaumless@gmail.com> Change-Id: Iab9d3262621af09a1c625378ae2e61e8a736cdf8 Reviewed-on: https://review.coreboot.org/c/coreboot/+/76952 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
		
			
				
	
	
		
			140 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env sh
 | |
| #
 | |
| # SPDX-License-Identifier: GPL-2.0-only
 | |
| 
 | |
| # DESCR: Check that files in have valid license headers
 | |
| # $1 is an optional command line parameter containing directories to check
 | |
| 
 | |
| 
 | |
| LINTDIR="$(
 | |
|   cd -- "$(dirname "$0")" > /dev/null 2>&1 || return
 | |
|   pwd -P
 | |
| )"
 | |
| 
 | |
| # shellcheck source=helper_functions.sh
 | |
| . "${LINTDIR}/helper_functions.sh"
 | |
| 
 | |
| # regex list of files and directories to exclude from the search
 | |
| HEADER_EXCLUDED="\
 | |
| ^src/commonlib/bsd/lz4.c.inc\$|\
 | |
| ^src/cpu/x86/16bit/entry16.inc\$|\
 | |
| ^src/device/oprom/x86emu/|\
 | |
| ^src/device/oprom/include/x86emu/|\
 | |
| ^src/device/oprom/yabel/|\
 | |
| ^src/drivers/net/ne2k.c\$|\
 | |
| ^src/drivers/xgi/common/initdef.h\$|\
 | |
| ^src/drivers/xgi/common/vstruct.h\$|\
 | |
| ^src/lib/gnat/|\
 | |
| ^src/lib/lzmadecode.[ch]\$|\
 | |
| ^src/lib/stack.c\$|\
 | |
| ^src/sbom/TAGS|\
 | |
| ^src/vendorcode/|\
 | |
| ^util/amdtools/example_input/|\
 | |
| ^util/cbfstool/lzma/|\
 | |
| ^util/cbfstool/lz4/|\
 | |
| ^util/kconfig/|\
 | |
| Kconfig|\
 | |
| \<COPYING\>|\
 | |
| \<LICENSE\>|\
 | |
| \<README\>|\
 | |
| Changelog|\
 | |
| AUTHORS|\
 | |
| TODO|\
 | |
| EXAMPLE|\
 | |
| NEWS|\
 | |
| ChangeLog|\
 | |
| Dockerfile|\
 | |
| \.gitignore$|\
 | |
| \.in$|\
 | |
| \.[18]$|\
 | |
| \.md$|\
 | |
| \.wiki$|\
 | |
| \.xxdump$|\
 | |
| \.spec$|\
 | |
| \.txt$|\
 | |
| \.jpg$|\
 | |
| \.cksum$|\
 | |
| \.bin$|\
 | |
| \.vbt$|\
 | |
| \.hex$|\
 | |
| \.patch$|\
 | |
| _shipped$|\
 | |
| /microcode-[^/]*.h$|\
 | |
| /sdram-.*\.inc$|\
 | |
| \.fmd|\
 | |
| \.cb|\
 | |
| \.cfg$|\
 | |
| \.spd|\
 | |
| config|\
 | |
| cmos\.layout|\
 | |
| cmos\.default\
 | |
| "
 | |
| 
 | |
| #space separated list of directories to test
 | |
| if [ "$1" = "" ]; then
 | |
| 	HEADER_DIRS="src util"
 | |
| else
 | |
| 	HEADER_DIRS="$1"
 | |
| fi
 | |
| 
 | |
| 
 | |
| #get initial list from git, removing HEADER_EXCLUDED files.
 | |
| #make a copy to check for the old style header later.
 | |
| headerlist=$(${FIND_FILES} $HEADER_DIRS | grep -E -v "($HEADER_EXCLUDED)")
 | |
| 
 | |
| #update headerlist by removing files that match the license string
 | |
| check_for_license() {
 | |
| 	if [ -n "$headerlist" ] && [ -z "$2" ]; then
 | |
| 		headerlist="$(grep -iL "$1" $headerlist 2>/dev/null)"
 | |
| 	elif [ -n "$headerlist" ]; then
 | |
| 		p1list="$(grep -il "$1" $headerlist 2>/dev/null)"
 | |
| 		p2list="$(grep -il "$2" $headerlist 2>/dev/null)"
 | |
| 
 | |
| 		# Make list of files that were in both previous lists
 | |
| 		pbothlist="$(echo $p1list $p2list | tr ' ' "\n" | \
 | |
| 			sort | uniq -d)"
 | |
| 
 | |
| 		# Remove all files that were in both of the previous lists
 | |
| 		# Note that this is unstable if we ever get any filenames
 | |
| 		# with spaces.
 | |
| 		headerlist="$(echo $headerlist $pbothlist | tr ' ' "\n" | \
 | |
| 			sort | uniq -u)"
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| #search the files for license headers
 | |
| check_for_license 'SPDX-License-Identifier: Apache-2.0'
 | |
| check_for_license 'SPDX-License-Identifier: BSD-2-Clause'
 | |
| check_for_license 'SPDX-License-Identifier: BSD-3-Clause'
 | |
| check_for_license 'SPDX-License-Identifier: GPL-2.0-only'
 | |
| check_for_license 'SPDX-License-Identifier: GPL-2.0-or-later'
 | |
| check_for_license 'SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note'
 | |
| check_for_license 'SPDX-License-Identifier: GPL-3.0-only'
 | |
| check_for_license 'SPDX-License-Identifier: GPL-3.0-only WITH GCC-exception-3.1'
 | |
| check_for_license 'SPDX-License-Identifier: GPL-3.0-or-later'
 | |
| check_for_license 'SPDX-License-Identifier: HPND'
 | |
| check_for_license 'SPDX-License-Identifier: HPND-sell-variant'
 | |
| check_for_license 'SPDX-License-Identifier: ISC'
 | |
| check_for_license 'SPDX-License-Identifier: MIT'
 | |
| check_for_license 'SPDX-License-Identifier: X11'
 | |
| 
 | |
| # This is 4 clause ("with advertising") but the University of Berkeley
 | |
| # declared that 4th clause void, see
 | |
| # ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
 | |
| # With this, BSD-4-Clause-UC becomes GPLv2 compatible, and so SPDX doesn't
 | |
| # differentiate between this license with or without advertising.
 | |
| check_for_license 'SPDX-License-Identifier: BSD-4-Clause-UC'
 | |
| 
 | |
| # This is the Creative Commons Public Domain Dedication and Certification
 | |
| # for files that are already in the public domain.  This includes files
 | |
| # that cannot be licensed such as blank files or files with no "creative"
 | |
| # content.
 | |
| check_for_license 'SPDX-License-Identifier: CC-PDDC'
 | |
| 
 | |
| for file in $headerlist; do
 | |
| 	# Verify the file actually exists
 | |
| 	if [ -f "$file" ]; then
 | |
| 		echo "$file has no recognized SPDX identifier."
 | |
| 	fi
 | |
| done
 |