Change-Id: Icbf21b02d3092815bbe876eceea72ebba8dd54da Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-on: https://review.coreboot.org/28599 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| # This file is part of the coreboot project.
 | |
| #
 | |
| # Copyright (C) 2010 coresystems GmbH
 | |
| # Copyright (C) 2016 Google Inc.
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or modify
 | |
| # it under the terms of the GNU General Public License as published by
 | |
| # the Free Software Foundation; version 2 of the License.
 | |
| #
 | |
| # This program is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU General Public License for more details.
 | |
| #
 | |
| #
 | |
| # DESCR: Check that files in have valid license headers
 | |
| # $1 is an optional command line parameter containing directories to check
 | |
| 
 | |
| # regex list of files and directories to exclude from the search
 | |
| HEADER_EXCLUDED="\
 | |
| ^src/lib/gnat/|\
 | |
| ^src/vendorcode/|\
 | |
| ^util/amdtools/example_input/|\
 | |
| ^util/cbfstool/lzma/|\
 | |
| ^util/kconfig/|\
 | |
| ^util/romcc/tests|\
 | |
| ^util/romcc/results|\
 | |
| Kconfig|\
 | |
| \<COPYING\>|\
 | |
| \<LICENSE\>|\
 | |
| \<README\>|\
 | |
| Changelog|\
 | |
| TODO|\
 | |
| EXAMPLE|\
 | |
| NEWS|\
 | |
| ChangeLog|\
 | |
| Dockerfile|\
 | |
| \.in$|\
 | |
| \.[18]$|\
 | |
| \.md$|\
 | |
| \.wiki$|\
 | |
| \.xxdump$|\
 | |
| \.spec$|\
 | |
| \.txt$|\
 | |
| \.jpg$|\
 | |
| \.cksum$|\
 | |
| \.bin$|\
 | |
| \.vbt$|\
 | |
| \.hex$|\
 | |
| \.patch$|\
 | |
| _shipped$|\
 | |
| /microcode-[^/]*.h$|\
 | |
| /sdram-.*\.inc$|\
 | |
| Makefile\.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
 | |
| 
 | |
| LC_ALL=C export LC_ALL
 | |
| 
 | |
| #get initial list from git, removing HEADER_EXCLUDED files.
 | |
| #make a copy to check for the old style header later.
 | |
| headerlist=$(git ls-files $HEADER_DIRS | egrep -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 "under the terms of the GNU General Public License" \
 | |
| 		"WITHOUT ANY WARRANTY"
 | |
| check_for_license 'IS PROVIDED .*"AS IS"'
 | |
| check_for_license 'IS DISTRIBUTED .*"AS IS"'
 | |
| check_for_license "IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE"
 | |
| check_for_license '"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES'
 | |
| check_for_license 'assumes any liability or responsibility for the use'
 | |
| check_for_license 'THE AUTHORS DISCLAIM.*ALL WARRANTIES WITH REGARD TO THIS SOFTWARE'
 | |
| check_for_license 'No license required'
 | |
| check_for_license 'GNU Lesser General Public'
 | |
| check_for_license 'SPDX-License-Identifier:.*GPL-2.0-or-later'
 | |
| 
 | |
| for file in $headerlist; do
 | |
| 	# Verify the file exists, and has content that requires a header
 | |
| 	# This assumes that a file that has 4 lines or fewer is not notable
 | |
| 	# enough to require a license.
 | |
| 	if [ -f "$file" ] && [ "$(wc -l < "$file")" -gt 4 ]; then
 | |
| 		echo "$file has no recognized license header."
 | |
| 	fi
 | |
| done
 |