]> code.ossystems Code Review - openembedded-core.git/commitdiff
insane.bbclass: Make ldd exec_prefix error reporting easier to read
authorMark Hatle <mark.hatle@windriver.com>
Thu, 7 Jun 2012 23:37:02 +0000 (16:37 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 8 Jun 2012 10:37:59 +0000 (11:37 +0100)
Remove the long obtuse sysroot path from the ldd output.

Make the error message significantly easier to read and understand.

Old Style:
WARNING: QA Issue: keyutils: /home/mhatle/git/oss/oe-core/build-i386/tmp-eglibc/work/i586-oe-linux/keyutils-1.5.5-r1/packages-split/keyutils/sbin/request-key links to something under exec_prefix
WARNING: QA Issue: ldd reports:         libkeyutils.so.1 => /home/mhatle/git/oss/oe-core/build-i386/tmp-eglibc/sysroots/qemux86/usr/lib/libkeyutils.so.1 (0xdead1000)
        libc.so.6 => /home/mhatle/git/oss/oe-core/build-i386/tmp-eglibc/sysroots/qemux86/lib/libc.so.6 (0xdead2000)
        /lib/ld-linux.so.2 => /home/mhatle/git/oss/oe-core/build-i386/tmp-eglibc/sysroots/qemux86/lib/ld-linux.so.2 (0xdead3000)

New style:
WARNING: QA Issue: keyutils: /sbin/request-key, installed in the base_prefix, requires a shared library under exec_prefix (/usr): libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0xdead1000)

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Elizabeth Flanagan <elizabeth.flanagan@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/insane.bbclass

index 4d139e813f3144ec4c939776d1fef2997bac99f3..556a17684f5ec9d84d85959eb3ccde1153d07f9c 100644 (file)
@@ -251,10 +251,22 @@ def package_qa_check_unsafe_references_in_binaries(path, name, d, elf, messages)
                        return False
 
                if sysroot_path_usr in ldd_output:
-                       error_msg = pn + ": %s links to something under exec_prefix" % path
-                       package_qa_handle_error("unsafe-references-in-binaries", error_msg, d)
-                       error_msg = "ldd reports: %s" % ldd_output
-                       package_qa_handle_error("unsafe-references-in-binaries", error_msg, d)
+                       ldd_output = ldd_output.replace(sysroot_path, "")
+
+                       pkgdest = d.getVar('PKGDEST', True)
+                       packages = d.getVar('PACKAGES', True)
+
+                       for package in packages.split():
+                               short_path = path.replace('%s/%s' % (pkgdest, package), "", 1)
+                               if (short_path != path):
+                                       break
+
+                       base_err = pn + ": %s, installed in the base_prefix, requires a shared library under exec_prefix (%s)" % (short_path, exec_prefix)
+                       for line in ldd_output.split('\n'):
+                               if exec_prefix in line:
+                                       error_msg = "%s: %s" % (base_err, line.strip())
+                                       package_qa_handle_error("unsafe-references-in-binaries", error_msg, d)
+
                        return False
 
 QAPATHTEST[unsafe-references-in-scripts] = "package_qa_check_unsafe_references_in_scripts"