mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 00:32:13 +02:00
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. (From OE-Core rev: 977f4baacf7c8d06d9cfe5c5e39bb8bc19f27028) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
8b1eb782c3
commit
7785c41d0b
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user