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. (From OE-Core rev: a6af5bbf3dad6f0951c67a0aae13ef86a8906893) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
fc3ae0cb2a
commit
3a1e31d714
|
@ -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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue