fwupd/contrib/ci/check-license.py
2021-08-08 19:44:33 -05:00

54 lines
1.2 KiB
Python
Executable File

#!/usr/bin/python3
#
# Copyright (C) 2021 Richard Hughes <richard@hughsie.com>
# Copyright (C) 2021 Mario Limonciello <superm1@gmail.com>
#
# SPDX-License-Identifier: LGPL-2.1+
import glob
import os
import sys
def __get_license(fn: str) -> str:
with open(fn, "r") as f:
for line in f.read().split("\n"):
if line.find("SPDX-License-Identifier:") > 0:
return line.split(":")[1]
return ""
def test_files() -> int:
rc: int = 0
build_dir = ""
for fn in glob.glob("**/*.[c|h|py|sh]", recursive=True):
if "meson-private" in fn:
continue
if os.path.isdir(fn):
continue
if "config.h" in fn:
build_dir = os.path.dirname(fn)
continue
if build_dir and fn.startswith(build_dir):
continue
if fn.startswith("subprojects"):
continue
lic = __get_license(fn)
if not lic:
print("{} does not specify a license".format(fn))
rc = 1
continue
if not "GPL" in lic:
print("{} does not contain LGPL or GPL ({})".format(fn, lic))
rc = 1
continue
return rc
if __name__ == "__main__":
# all done!
sys.exit(test_files())