| #!/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/|\ |
| ^tests/data/|\ |
| ^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|\ |
| \.apcb$\ |
| " |
| |
| #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)") |
| |
| LICENSE_ID_STRING="SPDX-License-Identifier" |
| |
| #update headerlist by removing files that match the license string |
| check_for_license() { |
| if [ -n "$headerlist" ] && [ -z "$2" ]; then |
| headerlist="$(grep -iL "${LICENSE_ID_STRING}: $1" $headerlist 2>/dev/null)" |
| elif [ -n "$headerlist" ]; then |
| p1list="$(grep -il "${LICENSE_ID_STRING}: $1" $headerlist 2>/dev/null)" |
| p2list="$(grep -il "${LICENSE_ID_STRING}: $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 'Apache-2.0' |
| check_for_license 'BSD-2-Clause' |
| check_for_license 'BSD-3-Clause' |
| check_for_license 'GPL-2.0-only' |
| check_for_license 'GPL-2.0-or-later' |
| check_for_license 'GPL-2.0-only WITH Linux-syscall-note' |
| check_for_license 'GPL-3.0-only' |
| check_for_license 'GPL-3.0-only WITH GCC-exception-3.1' |
| check_for_license 'GPL-3.0-or-later' |
| check_for_license 'HPND' |
| check_for_license 'HPND-sell-variant' |
| check_for_license 'ISC' |
| check_for_license 'MIT' |
| check_for_license '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 '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 '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 |