bbe0a99d66
Commit6dac0c54cd
makes the linter checking for license headers on all files from the src directory. Since this TAGS file doesn't have one, it's causing a linter error and it makes the QA system complain. However, the TAGS file doesn't need a license header and thus add it to the exception list. Usually the build tests detect such issues, but commit1d7a9debf2
, which introduced that file, was merged independently from the other commit, which modifies the linter. Also, the patch that is introducing this file was based on an older commit at which the patch modifying the linter wasn't merged yet and so this issue was hidden. Change-Id: I78da3fa70c39b709478a384da8769fc058ca18ce Signed-off-by: Felix Singer <felixsinger@posteo.net> Reviewed-on: https://review.coreboot.org/c/coreboot/+/66938 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
132 lines
3.7 KiB
Bash
Executable file
132 lines
3.7 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
|
|
|
|
# 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$|\
|
|
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 '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
|