diff options
-rw-r--r-- | meta/classes/insane.bbclass | 63 | ||||
-rw-r--r-- | meta/packages/zlib/zlib_1.2.3.bb | 2 |
2 files changed, 64 insertions, 1 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index 6d82e4df8..88e77a75e 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass @@ -266,6 +266,66 @@ def package_qa_check_buildpaths(path, name, d): sane = package_qa_handle_error(9, error_msg, name, path, d) return sane +def package_qa_check_license(workdir, d): + """ + Check for changes in the license files + """ + import tempfile + sane = True + + lic_files = bb.data.getVar('LIC_FILES_CHKSUM', d, True) + + if not lic_files: + bb.error(" Recipe (.bb) file does not have license file information (LIC_FILES_CHKSUM)") + return False + + srcdir = bb.data.getVar('S', d, True) + + for url in lic_files.split(): + (type, host, path, user, pswd, parm) = bb.decodeurl(url) + srclicfile = os.path.join(srcdir, path) + + if 'md5' not in parm: + bb.error("md5 checksum is not specified for ", url) + return False + beginline, endline = 0, 0 + if 'beginline' in parm: + beginline = int(parm['beginline']) + if 'endline' in parm: + endline = int(parm['endline']) + + if (not beginline) and (not endline): + md5chksum = bb.utils.md5_file(srclicfile) + else: + fi = open(srclicfile, 'r') + fo = tempfile.NamedTemporaryFile(mode='wb', prefix='poky.', suffix='.tmp', delete=False) + tmplicfile = fo.name; + lineno = 0 + linesout = 0 + for line in fi: + lineno += 1 + if (lineno >= beginline): + if ((lineno <= endline) or not endline): + fo.write(line) + linesout += 1 + else: + break + fo.flush() + fo.close() + fi.close() + md5chksum = bb.utils.md5_file(tmplicfile) + os.unlink(tmplicfile) + + if parm['md5'] == md5chksum: + bb.note ("md5 checksum matched for ", url) + else: + bb.error ("md5 data is not matching for ", url) + bb.note ("The new md5 checksum is ", md5chksum) + bb.note ("Check if the license information has changed, and if it has update the .bb file with correct license") + return False + + return sane + def package_qa_check_staged(path,d): """ Check staged la and pc files for sanity @@ -385,7 +445,8 @@ python do_package_qa () { if not package_qa_check_rdepends(package, workdir, d): rdepends_sane = False - if not walk_sane or not rdepends_sane: + + if not walk_sane or not rdepends_sane or not package_qa_check_license(workdir, d): bb.fatal("QA run found fatal errors. Please consider fixing them.") bb.note("DONE with PACKAGE QA") } diff --git a/meta/packages/zlib/zlib_1.2.3.bb b/meta/packages/zlib/zlib_1.2.3.bb index 97d0be5d5..c58d5f2d2 100644 --- a/meta/packages/zlib/zlib_1.2.3.bb +++ b/meta/packages/zlib/zlib_1.2.3.bb @@ -3,6 +3,8 @@ SECTION = "libs" PRIORITY = "required" HOMEPAGE = "http://www.gzip.org/zlib/" LICENSE = "zlib" +LIC_FILES_CHKSUM = "file://README;md5=ae764cfda68da96df20af9fbf9fe49bd \ + file://zlib.h;beginline=1;endline=30;md5=6ab03f03a5ee92d06b809797d4d5586d " PR = "r7" SRC_URI = "http://www.zlib.net/zlib-1.2.3.tar.bz2 \ |