X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=classes%2Finsane.bbclass;h=c2e8d9cf1dd8ddccd740755293a297e6ccbb4607;hb=a501f95529d16fad725b58c241047bde63825cbf;hp=3e519c3253fd7aa5438e568cef1a444c596c3536;hpb=9b8323739f1349983d973ff2b86b27f0aceb4d0f;p=openembedded.git diff --git a/classes/insane.bbclass b/classes/insane.bbclass index 3e519c3253..c2e8d9cf1d 100644 --- a/classes/insane.bbclass +++ b/classes/insane.bbclass @@ -31,6 +31,9 @@ PACKAGEFUNCS += " do_package_qa " # TARGET_OS TARGET_ARCH MACHINE, OSABI, ABIVERSION, Little Endian, 32bit? def package_qa_get_machine_dict(): return { + "darwin9" : { + "arm" : (40, 0, 0, True, True), + }, "linux" : { "arm" : (40, 97, 0, True, True), "armeb": (40, 97, 0, False, True), @@ -58,6 +61,7 @@ def package_qa_get_machine_dict(): "i486": ( 3, 0, 0, True, True), "i586": ( 3, 0, 0, True, True), "i686": ( 3, 0, 0, True, True), + "mips": ( 8, 0, 0, False, True), "mipsel": ( 8, 0, 0, True, True), "avr32": (6317, 0, 0, False, True), "sh4": (42, 0, 0, True, True), @@ -70,13 +74,16 @@ def package_qa_get_machine_dict(): "arm" : (40, 0, 0, True, True), "armeb" : (40, 0, 0, False, True), }, - "linux-uclibcgnueabi" : { + "linux-uclibceabi" : { "arm" : (40, 0, 0, True, True), "armeb" : (40, 0, 0, False, True), }, "linux-gnuspe" : { "powerpc": (20, 0, 0, False, True), }, + "linux-uclibcspe" : { + "powerpc": (20, 0, 0, False, True), + }, } @@ -175,7 +182,6 @@ def package_qa_get_elf(path, bits32): def package_qa_clean_path(path,d): """ Remove the common prefix from the path. In this case it is the TMPDIR""" - import bb return path.replace(bb.data.getVar('TMPDIR',d,True),"") def package_qa_make_fatal_error(error_class, name, path,d): @@ -184,13 +190,12 @@ def package_qa_make_fatal_error(error_class, name, path,d): TODO: Load a whitelist of known errors """ - return not error_class in [0, 5, 7, 9] + return not error_class in [0, 5, 7] def package_qa_write_error(error_class, name, path, d): """ Log the error """ - import bb, os if not bb.data.getVar('QA_LOG', d): bb.note("a QA error occured but will not be logged because QA_LOG is not set") return @@ -215,8 +220,7 @@ def package_qa_write_error(error_class, name, path, d): f.close() def package_qa_handle_error(error_class, error_msg, name, path, d): - import bb - bb.error("QA Issue: %s" % error_msg) + bb.error("QA Issue with %s: %s" % (name, error_msg)) package_qa_write_error(error_class, name, path, d) return not package_qa_make_fatal_error(error_class, name, path, d) @@ -247,23 +251,35 @@ def package_qa_check_rpath(file,name,d, elf): return sane -def package_qa_check_devdbg(path, name,d, elf): +def package_qa_check_dev(path, name,d, elf): """ - Check for debug remains inside the binary or - non dev packages containing + Check for ".so" library symlinks in non-dev packages """ - import bb, os sane = True + # SDK packages are special. + for s in ['sdk', 'canadian-sdk']: + if bb.data.inherits_class(s, d): + return True + if not "-dev" in name: if path[-3:] == ".so" and os.path.islink(path): error_msg = "non -dev package contains symlink .so: %s path '%s'" % \ (name, package_qa_clean_path(path,d)) sane = package_qa_handle_error(0, error_msg, name, path, d) + return sane + +def package_qa_check_dbg(path, name,d, elf): + """ + Check for ".debug" files or directories outside of the dbg package + """ + + sane = True + if not "-dbg" in name: - if '.debug' in path: + if '.debug' in path.split(os.path.sep): error_msg = "non debug package contains .debug directory: %s path %s" % \ (name, package_qa_clean_path(path,d)) sane = package_qa_handle_error(3, error_msg, name, path, d) @@ -284,7 +300,6 @@ def package_qa_check_arch(path,name,d, elf): if not elf: return True - import bb, os sane = True target_os = bb.data.getVar('TARGET_OS', d, True) target_arch = bb.data.getVar('TARGET_ARCH', d, True) @@ -319,7 +334,6 @@ def package_qa_check_desktop(path, name, d, elf): """ Run all desktop files through desktop-file-validate. """ - import bb, os sane = True if path.endswith(".desktop"): output = os.popen("desktop-file-validate %s" % path) @@ -333,7 +347,6 @@ def package_qa_hash_style(path, name, d, elf): """ Check if the binary has the right hash style... """ - import bb, os if not elf: return True @@ -380,7 +393,6 @@ def package_qa_check_staged(path,d): to find the one responsible for the errors easily even if we look at every .pc and .la file """ - import os, bb sane = True tmpdir = bb.data.getVar('TMPDIR', d, True) @@ -420,7 +432,6 @@ def package_qa_check_staged(path,d): # Walk over all files in a directory and call func def package_qa_walk(path, funcs, package,d): - import bb, os sane = True #if this will throw an exception, then fix the dict above @@ -443,14 +454,13 @@ def package_qa_walk(path, funcs, package,d): return sane -def package_qa_check_rdepends(pkg, workdir, d): - import bb +def package_qa_check_rdepends(pkg, pkgdest, d): sane = True if not "-dbg" in pkg and not "task-" in pkg and not "-image" in pkg: # Copied from package_ipk.bbclass # boiler plate to update the data localdata = bb.data.createCopy(d) - root = "%s/install/%s" % (workdir, pkg) + root = "%s/%s" % (pkgdest, pkg) bb.data.setVar('ROOT', '', localdata) bb.data.setVar('ROOT_%s' % pkg, root, localdata) @@ -481,42 +491,42 @@ def package_qa_check_rdepends(pkg, workdir, d): # The PACKAGE FUNC to scan each package python do_package_qa () { - import bb - bb.note("DO PACKAGE QA") - workdir = bb.data.getVar('WORKDIR', d, True) + bb.debug(2, "DO PACKAGE QA") + pkgdest = bb.data.getVar('PKGDEST', d, True) packages = bb.data.getVar('PACKAGES',d, True) # no packages should be scanned if not packages: return - checks = [package_qa_check_rpath, package_qa_check_devdbg, + checks = [package_qa_check_rpath, package_qa_check_dev, package_qa_check_perm, package_qa_check_arch, - package_qa_check_desktop, package_qa_hash_style] + package_qa_check_desktop, package_qa_hash_style, + package_qa_check_dbg] walk_sane = True rdepends_sane = True for package in packages.split(): if bb.data.getVar('INSANE_SKIP_' + package, d, True): - bb.note("Package: %s (skipped)" % package) + bb.note("package %s skipped" % package) continue - bb.note("Checking Package: %s" % package) - path = "%s/install/%s" % (workdir, package) + bb.debug(1, "Checking Package: %s" % package) + path = "%s/%s" % (pkgdest, package) if not package_qa_walk(path, checks, package, d): walk_sane = False - if not package_qa_check_rdepends(package, workdir, d): + if not package_qa_check_rdepends(package, pkgdest, d): rdepends_sane = False if not walk_sane or not rdepends_sane: bb.fatal("QA run found fatal errors. Please consider fixing them.") - bb.note("DONE with PACKAGE QA") + bb.debug(2, "DONE with PACKAGE QA") } # The Staging Func, to check all staging addtask qa_staging after do_populate_staging before do_build python do_qa_staging() { - bb.note("QA checking staging") + bb.debug(2, "QA checking staging") if not package_qa_check_staged(bb.data.getVar('STAGING_LIBDIR',d,True), d): bb.fatal("QA staging was broken by the package built above") @@ -525,8 +535,7 @@ python do_qa_staging() { # Check broken config.log files addtask qa_configure after do_configure before do_compile python do_qa_configure() { - bb.note("Checking sanity of the config.log file") - import os + bb.debug(1, "Checking sanity of the config.log file") for root, dirs, files in os.walk(bb.data.getVar('WORKDIR', d, True)): statement = "grep 'CROSS COMPILE Badness:' %s > /dev/null" % \ os.path.join(root,"config.log")