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