]> code.ossystems Code Review - openembedded-core.git/commitdiff
chrpath: do less work
authorRoss Burton <ross.burton@intel.com>
Thu, 12 Dec 2019 13:13:55 +0000 (13:13 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 28 Dec 2019 23:25:34 +0000 (23:25 +0000)
Instead of trying to change the RPATH in every file under the binary
directories, check that the file is an ELF first.

This means that we don't attempt to change the RPATH on the entire
Python standard library, for example.

Also return early if the directory to iterate doesn't exist.

Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/chrpath.bbclass

index 2870c10d51599b8462a694453d31db5cee9b1428..67b197ec22895ac19da93ec3a3e7f7ec0cd467fd 100644 (file)
@@ -2,7 +2,13 @@ CHRPATH_BIN ?= "chrpath"
 PREPROCESS_RELOCATE_DIRS ?= ""
 
 def process_file_linux(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardlinks = False):
-    import subprocess as sub
+    import subprocess as sub, oe.qa
+
+    with oe.qa.ELFFile(fpath) as elf:
+        try:
+            elf.open()
+        except oe.qa.NotELFFileError:
+            return
 
     p = sub.Popen([cmd, '-l', fpath],stdout=sub.PIPE,stderr=sub.PIPE)
     out, err = p.communicate()
@@ -72,6 +78,10 @@ def process_file_darwin(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardli
         out, err = p.communicate()
 
 def process_dir(rootdir, directory, d, break_hardlinks = False):
+    bb.debug(2, "Checking %s for binaries to process" % directory)
+    if not os.path.exists(directory):
+        return
+
     import stat
 
     rootdir = os.path.normpath(rootdir)
@@ -80,10 +90,6 @@ def process_dir(rootdir, directory, d, break_hardlinks = False):
     baseprefix = os.path.normpath(d.expand('${base_prefix}'))
     hostos = d.getVar("HOST_OS")
 
-    #bb.debug("Checking %s for binaries to process" % directory)
-    if not os.path.exists(directory):
-        return
-
     if "linux" in hostos:
         process_file = process_file_linux
     elif "darwin" in hostos: