diff options
author | Ross Burton <ross.burton@intel.com> | 2017-03-20 16:45:14 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-03-21 22:43:03 +0000 |
commit | a6af5bbf3dad6f0951c67a0aae13ef86a8906893 (patch) | |
tree | 2a2eaa9b461aabfe5af5bc622de6cc17207b7f85 | |
parent | 1a6555dfd17e180b81dec407095787d8a72a9edd (diff) | |
download | openembedded-core-a6af5bbf3dad6f0951c67a0aae13ef86a8906893.tar.gz |
insane: remove broken unsafe-references-in-binaries test
This test aims to detect binaries in /bin which link to libraries in /usr/lib,
for the case where the user has /usr on a separate filesystem to /.
However it doesn't scan both image/ and the sysroot, so if a binary in /bin
links to a library in /usr/lib that was built by the same recipe then it will
error out.
This test isn't enabled by default, and because of this serious bug I suspect
nobody else is enabling it either. As /usr being on a separate partition to /
is a very rare configuration these days I think we should delete the test: if
someone cares sufficiently they should write a test that actually works.
Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r-- | meta/classes/insane.bbclass | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index 6a34bd5a94..7a869977e1 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass @@ -408,48 +408,6 @@ def package_qa_check_perm(path,name,d, elf, messages): """ return -QAPATHTEST[unsafe-references-in-binaries] = "package_qa_check_unsafe_references_in_binaries" -def package_qa_check_unsafe_references_in_binaries(path, name, d, elf, messages): - """ - Ensure binaries in base_[bindir|sbindir|libdir] do not link to files under exec_prefix - """ - if unsafe_references_skippable(path, name, d): - return - - if elf: - import subprocess as sub - pn = d.getVar('PN') - - exec_prefix = d.getVar('exec_prefix') - sysroot_path = d.getVar('STAGING_DIR_TARGET') - sysroot_path_usr = sysroot_path + exec_prefix - - try: - ldd_output = bb.process.Popen(["prelink-rtld", "--root", sysroot_path, path], stdout=sub.PIPE).stdout.read().decode("utf-8") - except bb.process.CmdError: - error_msg = pn + ": prelink-rtld aborted when processing %s" % path - package_qa_handle_error("unsafe-references-in-binaries", error_msg, d) - return False - - if sysroot_path_usr in ldd_output: - ldd_output = ldd_output.replace(sysroot_path, "") - - pkgdest = d.getVar('PKGDEST') - packages = d.getVar('PACKAGES') - - 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" def package_qa_check_unsafe_references_in_scripts(path, name, d, elf, messages): """ |