mirror of
https://git.yoctoproject.org/poky
synced 2026-03-16 04:09:39 +01:00
chrpath: Cleanup and fix previous patch
Ensure self.data isn't accessed without assignment. Also clean up old style popen use and replace with modern/simpler subprocess. (From OE-Core rev: 39825cba4761a6b4b2473825705975f9f421ec8b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
f6a3593454
commit
3780744968
@@ -2,7 +2,7 @@ CHRPATH_BIN ?= "chrpath"
|
||||
PREPROCESS_RELOCATE_DIRS ?= ""
|
||||
|
||||
def process_file_linux(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardlinks = False):
|
||||
import subprocess as sub, oe.qa
|
||||
import subprocess, oe.qa
|
||||
|
||||
with oe.qa.ELFFile(fpath) as elf:
|
||||
try:
|
||||
@@ -10,14 +10,11 @@ def process_file_linux(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardlin
|
||||
except oe.qa.NotELFFileError:
|
||||
return
|
||||
|
||||
p = sub.Popen([cmd, '-l', fpath],stdout=sub.PIPE,stderr=sub.PIPE)
|
||||
out, err = p.communicate()
|
||||
# If returned successfully, process stdout for results
|
||||
if p.returncode != 0:
|
||||
try:
|
||||
out = subprocess.check_output([cmd, "-l", fpath], universal_newlines=True)
|
||||
except subprocess.CalledProcessError:
|
||||
return
|
||||
|
||||
out = out.decode('utf-8')
|
||||
|
||||
# Handle RUNPATH as well as RPATH
|
||||
out = out.replace("RUNPATH=","RPATH=")
|
||||
# Throw away everything other than the rpath list
|
||||
@@ -50,10 +47,11 @@ def process_file_linux(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardlin
|
||||
|
||||
args = ":".join(new_rpaths)
|
||||
#bb.note("Setting rpath for %s to %s" %(fpath, args))
|
||||
p = sub.Popen([cmd, '-r', args, fpath],stdout=sub.PIPE,stderr=sub.PIPE)
|
||||
out, err = p.communicate()
|
||||
if p.returncode != 0:
|
||||
bb.fatal("%s: chrpath command failed with exit code %d:\n%s%s" % (d.getVar('PN'), p.returncode, out, err))
|
||||
try:
|
||||
subprocess.check_output([cmd, "-r", args, fpath],
|
||||
stderr=subprocess.PIPE, universal_newlines=True)
|
||||
except subprocess.CalledProcessError as e:
|
||||
bb.fatal("chrpath command failed with exit code %d:\n%s\n%s" % (e.returncode, e.stdout, e.stderr))
|
||||
|
||||
def process_file_darwin(cmd, fpath, rootdir, baseprefix, tmpdir, d, break_hardlinks = False):
|
||||
import subprocess as sub
|
||||
|
||||
@@ -41,13 +41,15 @@ class ELFFile:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
self.objdump_output = {}
|
||||
self.data = None
|
||||
|
||||
# Context Manager functions to close the mmap explicitly
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
self.data.close()
|
||||
if self.data:
|
||||
self.data.close()
|
||||
|
||||
def open(self):
|
||||
with open(self.name, "rb") as f:
|
||||
|
||||
Reference in New Issue
Block a user