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)) }