From 8f7fdab41b8d6aced6753920bb5deed147c9baa8 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Tue, 16 Jan 2018 13:37:54 +0000 Subject: classes/debian: clean up process spawning This code is old and was of it's time, rewrite it to use modernish (we support Python 3.4, so can't use subprocess.run()) subprocess and re idioms instead. Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/classes/debian.bbclass | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'meta') diff --git a/meta/classes/debian.bbclass b/meta/classes/debian.bbclass index edc6da1ba3..989ea8f8d2 100644 --- a/meta/classes/debian.bbclass +++ b/meta/classes/debian.bbclass @@ -25,7 +25,7 @@ python () { } python debian_package_name_hook () { - import glob, copy, stat, errno, re, pathlib + import glob, copy, stat, errno, re, pathlib, subprocess pkgdest = d.getVar("PKGDEST") packages = d.getVar('PACKAGES') @@ -76,15 +76,14 @@ python debian_package_name_hook () { if path in libdirs: has_libs = 1 if so_re.match(os.path.basename(f)): - cmd = (d.getVar('TARGET_PREFIX') or "") + "objdump -p " + f + " 2>/dev/null" - fd = os.popen(cmd) - lines = fd.readlines() - fd.close() - for l in lines: - m = re.match("\s+SONAME\s+([^\s]*)", l) - if m and not m.group(1) in sonames: - sonames.append(m.group(1)) - + try: + cmd = [d.expand("${TARGET_PREFIX}objdump"), "-p", f] + output = subprocess.check_output(cmd).decode("utf-8") + for m in re.finditer("\s+SONAME\s+([^\s]+)", output): + if m.group(1) not in sonames: + sonames.append(m.group(1)) + except subprocess.CalledProcessError: + pass bb.debug(1, 'LIBNAMES: pkg %s libs %d bins %d sonames %s' % (orig_pkg, has_libs, has_bins, sonames)) soname = None if len(sonames) == 1: -- cgit 1.2.3-korg