[oe-commits] [openembedded-core] 24/61: chrpath: do less work

git at git.openembedded.org git at git.openembedded.org
Sat Dec 28 23:26:37 UTC 2019


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master
in repository openembedded-core.

commit 977f4baacf7c8d06d9cfe5c5e39bb8bc19f27028
Author: Ross Burton <ross.burton at intel.com>
AuthorDate: Thu Dec 12 13:13:55 2019 +0000

    chrpath: do less work
    
    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 at intel.com>
---
 meta/classes/chrpath.bbclass | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/meta/classes/chrpath.bbclass b/meta/classes/chrpath.bbclass
index 2870c10..67b197e 100644
--- a/meta/classes/chrpath.bbclass
+++ b/meta/classes/chrpath.bbclass
@@ -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:

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list