[OE-core] [PATCH] chrpath: do less work
Ross Burton
ross.burton at intel.com
Tue Dec 17 12:50:20 UTC 2019
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 2870c10d515..67b197ec228 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:
--
2.20.1
More information about the Openembedded-core
mailing list