summaryrefslogtreecommitdiffstats
path: root/meta/classes/insane.bbclass
diff options
context:
space:
mode:
authorNitin A Kamble <nitin.a.kamble@intel.com>2010-05-11 16:25:39 -0700
committerNitin A Kamble <nitin.a.kamble@intel.com>2010-05-11 16:25:39 -0700
commit2ca1f78a9578d9c2095be548aeda523b61ee840c (patch)
treecbf1dc64c07aff1347260fee4cfdca3d9fffeb98 /meta/classes/insane.bbclass
parentc89362c767ba3255358f5bf5630bdef8cb3d107d (diff)
downloadpoky-2ca1f78a9578d9c2095be548aeda523b61ee840c.tar.gz
License Change checking:
Added a new variable in recipe : LIC_FILES_CHKSUM It is a required field for every recipe. It describes license text location in the source files. And also stores md5sum of that license text. Any change in this license text triggers build error. Which enables developer to review any changes in the license and update the license fields in the recipe accordingly. For Example: contents of zlib_1.2.3.bb LICENSE = "zlib" LIC_FILES_CHKSUM = "file://README;md5=ae764cfda68da96df20af9fbf9fe49bd \ file://zlib.h;beginline=1;endline=30;md5=6ab03f03a5ee92d06b809797d4d5586d " Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
Diffstat (limited to 'meta/classes/insane.bbclass')
-rw-r--r--meta/classes/insane.bbclass63
1 files changed, 62 insertions, 1 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 6d82e4df88..88e77a75ee 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -266,6 +266,66 @@ def package_qa_check_buildpaths(path, name, d):
266 sane = package_qa_handle_error(9, error_msg, name, path, d) 266 sane = package_qa_handle_error(9, error_msg, name, path, d)
267 return sane 267 return sane
268 268
269def package_qa_check_license(workdir, d):
270 """
271 Check for changes in the license files
272 """
273 import tempfile
274 sane = True
275
276 lic_files = bb.data.getVar('LIC_FILES_CHKSUM', d, True)
277
278 if not lic_files:
279 bb.error(" Recipe (.bb) file does not have license file information (LIC_FILES_CHKSUM)")
280 return False
281
282 srcdir = bb.data.getVar('S', d, True)
283
284 for url in lic_files.split():
285 (type, host, path, user, pswd, parm) = bb.decodeurl(url)
286 srclicfile = os.path.join(srcdir, path)
287
288 if 'md5' not in parm:
289 bb.error("md5 checksum is not specified for ", url)
290 return False
291 beginline, endline = 0, 0
292 if 'beginline' in parm:
293 beginline = int(parm['beginline'])
294 if 'endline' in parm:
295 endline = int(parm['endline'])
296
297 if (not beginline) and (not endline):
298 md5chksum = bb.utils.md5_file(srclicfile)
299 else:
300 fi = open(srclicfile, 'r')
301 fo = tempfile.NamedTemporaryFile(mode='wb', prefix='poky.', suffix='.tmp', delete=False)
302 tmplicfile = fo.name;
303 lineno = 0
304 linesout = 0
305 for line in fi:
306 lineno += 1
307 if (lineno >= beginline):
308 if ((lineno <= endline) or not endline):
309 fo.write(line)
310 linesout += 1
311 else:
312 break
313 fo.flush()
314 fo.close()
315 fi.close()
316 md5chksum = bb.utils.md5_file(tmplicfile)
317 os.unlink(tmplicfile)
318
319 if parm['md5'] == md5chksum:
320 bb.note ("md5 checksum matched for ", url)
321 else:
322 bb.error ("md5 data is not matching for ", url)
323 bb.note ("The new md5 checksum is ", md5chksum)
324 bb.note ("Check if the license information has changed, and if it has update the .bb file with correct license")
325 return False
326
327 return sane
328
269def package_qa_check_staged(path,d): 329def package_qa_check_staged(path,d):
270 """ 330 """
271 Check staged la and pc files for sanity 331 Check staged la and pc files for sanity
@@ -385,7 +445,8 @@ python do_package_qa () {
385 if not package_qa_check_rdepends(package, workdir, d): 445 if not package_qa_check_rdepends(package, workdir, d):
386 rdepends_sane = False 446 rdepends_sane = False
387 447
388 if not walk_sane or not rdepends_sane: 448
449 if not walk_sane or not rdepends_sane or not package_qa_check_license(workdir, d):
389 bb.fatal("QA run found fatal errors. Please consider fixing them.") 450 bb.fatal("QA run found fatal errors. Please consider fixing them.")
390 bb.note("DONE with PACKAGE QA") 451 bb.note("DONE with PACKAGE QA")
391} 452}