poky/meta/classes/oelint.bbclass
Richard Purdie ff525695f2 classes: Add SPDX license identifiers
As stated in our top level license files, the license is MIT unless
otherwise stated. Add SPDX identifers accordingly. Replace older
license statementa with the standardised syntax. Also drop "All
Rights Reserved" expression as it isn't used now, doesn't mean anything
and is confusing.

(From OE-Core rev: 081a391fe09a21265881e39a2a496e4e10b4f80b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-08-12 11:58:01 +01:00

91 lines
2.7 KiB
Plaintext

#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#
addtask lint before do_build
do_lint[nostamp] = "1"
python do_lint() {
pkgname = d.getVar("PN")
##############################
# Test that DESCRIPTION exists
#
description = d.getVar("DESCRIPTION", False)
if description[1:10] == '{SUMMARY}':
bb.warn("%s: DESCRIPTION is not set" % pkgname)
##############################
# Test that HOMEPAGE exists
#
homepage = d.getVar("HOMEPAGE", False)
if homepage == '':
bb.warn("%s: HOMEPAGE is not set" % pkgname)
elif not homepage.startswith("http://") and not homepage.startswith("https://"):
bb.warn("%s: HOMEPAGE doesn't start with http:// or https://" % pkgname)
##############################
# Test for valid SECTION
#
section = d.getVar("SECTION", False)
if section == '':
bb.warn("%s: SECTION is not set" % pkgname)
elif not section.islower():
bb.warn("%s: SECTION should only use lower case" % pkgname)
##############################
# Check that all patches have Signed-off-by and Upstream-Status
#
srcuri = d.getVar("SRC_URI", False).split()
fpaths = (d.getVar('FILESPATH') or '').split(':')
def findPatch(patchname):
for dir in fpaths:
patchpath = dir + patchname
if os.path.exists(patchpath):
return patchpath
def findKey(path, key):
ret = True
f = open('%s' % path, mode = 'r')
line = f.readline()
while line:
if line.find(key) != -1:
ret = False
line = f.readline()
f.close()
return ret
def checkPN(pkgname, varname, str):
if str.find("{PN}") != -1:
bb.warn("%s: should use BPN instead of PN in %s" % (pkgname, varname))
if str.find("{P}") != -1:
bb.warn("%s: should use BP instead of P in %s" % (pkgname, varname))
length = len("file://")
for item in srcuri:
if item.startswith("file://"):
item = item[length:]
if item.endswith(".patch") or item.endswith(".diff"):
path = findPatch(item)
if findKey(path, "Signed-off-by"):
bb.warn("%s: %s doesn't have Signed-off-by" % (pkgname, item))
if findKey(path, "Upstream-Status"):
bb.warn("%s: %s doesn't have Upstream-Status" % (pkgname, item))
##############################
# Check for ${PN} or ${P} usage in SRC_URI or S
# Should use ${BPN} or ${BP} instead to avoid breaking multilib
#
for s in srcuri:
if not s.startswith("file://"):
checkPN(pkgname, 'SRC_URI', s)
checkPN(pkgname, 'S', d.getVar('S', False))
}