coreboot-kgpe-d16/util/lint/lint-000-license-headers
Martin Roth 0ad5fbd48d util: Update all shebangs to use /usr/bin/env
Instead of hardcoding paths to the executables, use the version in the
path.  This allows the scripts to work on more systems, and allows the
binary version to be changed more easily if needed.

Signed-off-by: Martin Roth <martin@coreboot.org>
Change-Id: Ifcc56aa21092cd3866eacb6a02d198110ec6051d
Reviewed-on: https://review.coreboot.org/c/coreboot/+/48904
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
2021-01-25 08:57:40 +00:00

125 lines
3.5 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/vendorcode/|\
^util/amdtools/example_input/|\
^util/cbfstool/lzma/|\
^util/cbfstool/lz4/|\
^util/kconfig/|\
Kconfig|\
\<COPYING\>|\
\<LICENSE\>|\
\<README\>|\
Changelog|\
AUTHORS|\
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 '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-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'
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 SPDX identifier."
fi
done