summaryrefslogtreecommitdiffstats
path: root/meta/classes/insane.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/insane.bbclass')
-rw-r--r--meta/classes/insane.bbclass65
1 files changed, 64 insertions, 1 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 6d82e4df88..0c9bde349c 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -266,6 +266,68 @@ 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 # just throw a warning now. Once licensing data in entered for enough of the recipes,
280 # this will be converted into error and False will be returned.
281 bb.warn(" Recipe (.bb) file does not have license file information (LIC_FILES_CHKSUM)")
282 return True
283
284 srcdir = bb.data.getVar('S', d, True)
285
286 for url in lic_files.split():
287 (type, host, path, user, pswd, parm) = bb.decodeurl(url)
288 srclicfile = os.path.join(srcdir, path)
289
290 if 'md5' not in parm:
291 bb.error("md5 checksum is not specified for ", url)
292 return False
293 beginline, endline = 0, 0
294 if 'beginline' in parm:
295 beginline = int(parm['beginline'])
296 if 'endline' in parm:
297 endline = int(parm['endline'])
298
299 if (not beginline) and (not endline):
300 md5chksum = bb.utils.md5_file(srclicfile)
301 else:
302 fi = open(srclicfile, 'r')
303 fo = tempfile.NamedTemporaryFile(mode='wb', prefix='poky.', suffix='.tmp', delete=False)
304 tmplicfile = fo.name;
305 lineno = 0
306 linesout = 0
307 for line in fi:
308 lineno += 1
309 if (lineno >= beginline):
310 if ((lineno <= endline) or not endline):
311 fo.write(line)
312 linesout += 1
313 else:
314 break
315 fo.flush()
316 fo.close()
317 fi.close()
318 md5chksum = bb.utils.md5_file(tmplicfile)
319 os.unlink(tmplicfile)
320
321 if parm['md5'] == md5chksum:
322 bb.note ("md5 checksum matched for ", url)
323 else:
324 bb.error ("md5 data is not matching for ", url)
325 bb.note ("The new md5 checksum is ", md5chksum)
326 bb.note ("Check if the license information has changed, and if it has update the .bb file with correct license")
327 return False
328
329 return sane
330
269def package_qa_check_staged(path,d): 331def package_qa_check_staged(path,d):
270 """ 332 """
271 Check staged la and pc files for sanity 333 Check staged la and pc files for sanity
@@ -385,7 +447,8 @@ python do_package_qa () {
385 if not package_qa_check_rdepends(package, workdir, d): 447 if not package_qa_check_rdepends(package, workdir, d):
386 rdepends_sane = False 448 rdepends_sane = False
387 449
388 if not walk_sane or not rdepends_sane: 450
451 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.") 452 bb.fatal("QA run found fatal errors. Please consider fixing them.")
390 bb.note("DONE with PACKAGE QA") 453 bb.note("DONE with PACKAGE QA")
391} 454}