diff mbox series

[v2,05/11] insane: only parse ELFs if they're files, not symlinks

Message ID 20241010160623.2880937-5-ross.burton@arm.com
State Accepted, archived
Commit aa9ec4b5c719bf610ad953095d1111e4c257747e
Headers show
Series [v2,01/11] ffmpeg: nasm is x86 only, so only DEPEND if x86 | expand

Commit Message

Ross Burton Oct. 10, 2024, 4:06 p.m. UTC
This reduces the number of files that need to be swept by not scanning
eg the library symlinks, and means we can remove the explicit islink()
checks in many of the tests.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta/classes-global/insane.bbclass | 21 ++-------------------
 1 file changed, 2 insertions(+), 19 deletions(-)
diff mbox series

Patch

diff --git a/meta/classes-global/insane.bbclass b/meta/classes-global/insane.bbclass
index 1691d96b64a..7f01908e18e 100644
--- a/meta/classes-global/insane.bbclass
+++ b/meta/classes-global/insane.bbclass
@@ -122,9 +122,6 @@  def package_qa_check_rpath(file,name, d, elf):
     if not elf:
         return
 
-    if os.path.islink(file):
-        return
-
     bad_dirs = [d.getVar('BASE_WORKDIR'), d.getVar('STAGING_DIR_TARGET')]
 
     phdrs = elf.run_objdump("-p", d)
@@ -150,9 +147,6 @@  def package_qa_check_useless_rpaths(file, name, d, elf):
     if not elf:
         return
 
-    if os.path.islink(file):
-        return
-
     libdir = d.getVar("libdir")
     base_libdir = d.getVar("base_libdir")
 
@@ -337,11 +331,6 @@  def package_qa_check_arch(path,name,d, elf):
         oe.qa.handle_error("arch", pn + ": Recipe inherits the allarch class, but has packaged architecture-specific binaries", d)
         return
 
-    # avoid following links to /usr/bin (e.g. on udev builds)
-    # we will check the files pointed to anyway...
-    if os.path.islink(path):
-        return
-
     #if this will throw an exception, then fix the dict above
     (machine, osabi, abiversion, littleendian, bits) \
         = oe.elf.machine_dict(d)[host_os][host_arch]
@@ -383,9 +372,6 @@  def package_qa_textrel(path, name, d, elf):
     if not elf:
         return
 
-    if os.path.islink(path):
-        return
-
     phdrs = elf.run_objdump("-p", d)
 
     import re
@@ -405,9 +391,6 @@  def package_qa_hash_style(path, name, d, elf):
     if not elf:
         return
 
-    if os.path.islink(path):
-        return
-
     gnu_hash = "--hash-style=gnu" in d.getVar('LDFLAGS')
     if not gnu_hash:
         gnu_hash = "--hash-style=both" in d.getVar('LDFLAGS')
@@ -601,7 +584,7 @@  def check_32bit_symbols(path, packagename, d, elf):
     )
 
     # elf is a oe.qa.ELFFile object
-    if elf is not None:
+    if elf:
         phdrs = elf.run_objdump("-tw", d)
         syms = re.finditer(ptrn, phdrs)
         usedapis = {sym.group('notag') for sym in syms}
@@ -789,7 +772,7 @@  def package_qa_walk(checkfuncs, package, d):
     elves = {}
     for path in pkgfiles[package]:
             elf = None
-            if os.path.isfile(path):
+            if os.path.isfile(path) and not os.path.islink(path):
                 elf = oe.qa.ELFFile(path)
                 try:
                     elf.open()