Skip to contentSkip to conversation

classes/package: Clean up getstatusoutput

PATCH Superseded Joshua Watt 2 participants 6 messages Aug 20, 2018 – Aug 22, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 classes/package: Clean up getstatusoutput

Replaces usage of the deprecated oe.utils.getstatusoutput() with Python subprocess calls.

---
 meta/classes/package.bbclass | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)
meta/classes/package.bbclass +11 -8
index 4ce9de2f573..b05d2858281 100644
@@ -380,6 +380,7 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
     # sourcefile is also generated containing a list of debugsources
 
     import stat
+    import subprocess
 
     src = file[len(dvar):]
     dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
@@ -409,16 +410,18 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
 
     bb.utils.mkdirhier(os.path.dirname(debugfile))
 
-    cmd = "'%s' --only-keep-debug '%s' '%s'" % (objcopy, file, debugfile)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    cmd = (objcopy, '--only-keep-debug', file, debugfile)
+    try:
+        subprocess.check_output(cmd)
+    except subprocess.CalledProcessError as e:
+        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (e.returncode, ' '.join(cmd), ":\n%s" % output.decode('utf-8') if e.output else ""))
 
     # Set the debuglink to have the view of the file path on the target
-    cmd = "'%s' --add-gnu-debuglink='%s' '%s'" % (objcopy, debugfile, file)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    cmd = (objcopy, '--add-gnu-debuglink', debugfile, file)
+    try:
+        subprocess.check_output(cmd)
+    except subprocess.CalledProcessError as e:
+        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (e.returncode, ' '.join(cmd), ":\n%s" % output.decode('utf-8') if e.output else ""))
 
     if newmode:
         os.chmod(file, origmode)
Signature · 1 line
2.17.1
#1 lore raw
Quoted 37 lines · Joshua Watt

Replaces usage of the deprecated oe.utils.getstatusoutput() with Python subprocess calls.

---
 meta/classes/package.bbclass | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)
meta/classes/package.bbclass +6 -6
index 4ce9de2f573..b05d2858281 100644
@@ -380,6 +380,7 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
     # sourcefile is also generated containing a list of debugsources
 
     import stat
+    import subprocess
 
     src = file[len(dvar):]
     dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
@@ -409,16 +410,18 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
 
     bb.utils.mkdirhier(os.path.dirname(debugfile))
 
-    cmd = "'%s' --only-keep-debug '%s' '%s'" % (objcopy, file, debugfile)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    cmd = (objcopy, '--only-keep-debug', file, debugfile)
+    try:
+        subprocess.check_output(cmd)
+    except subprocess.CalledProcessError as e:
+        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (e.returncode, ' '.join(cmd), ":\n%s" % output.decode('utf-8') if e.output else ""))
 
     # Set the debuglink to have the view of the file path on the target
-    cmd = "'%s' --add-gnu-debuglink='%s' '%s'" % (objcopy, debugfile, file)
-    (retval, output) = oe.utils.getstatusoutput(cmd)

meta/classes/package.bbclass def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir, · line 427

Quoted 10 lines
meta/classes/package.bbclass +5 -2
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    cmd = (objcopy, '--add-gnu-debuglink', debugfile, file)
+    try:
+        subprocess.check_output(cmd)
+    except subprocess.CalledProcessError as e:
+        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (e.returncode, ' '.join(cmd), ":\n%s" % output.decode('utf-8') if e.output else ""))
 
     if newmode:
         os.chmod(file, origmode)

I appreciate this is a direct replacement and functionally equivalent but are these custom exceptions any real use? Its hard to actually get them right and I suspect we may be better off without them using the standard formatter?

Cheers,

Richard

#2 lore raw

PATCH v2 1/1 classes/package: Clean up getstatusoutput

In reply to Joshua Watt

Replaces usage of the deprecated oe.utils.getstatusoutput() with Python subprocess calls.

---
 meta/classes/package.bbclass | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
meta/classes/package.bbclass +3 -8
index 4ce9de2f573..3976811d19f 100644
@@ -380,6 +380,7 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
     # sourcefile is also generated containing a list of debugsources
 
     import stat
+    import subprocess
 
     src = file[len(dvar):]
     dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
@@ -409,16 +410,10 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
 
     bb.utils.mkdirhier(os.path.dirname(debugfile))
 
-    cmd = "'%s' --only-keep-debug '%s' '%s'" % (objcopy, file, debugfile)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    subprocess.check_output([objcopy, '--only-keep-debug', file, debugfile])
 
     # Set the debuglink to have the view of the file path on the target
-    cmd = "'%s' --add-gnu-debuglink='%s' '%s'" % (objcopy, debugfile, file)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    subprocess.check_output([objcopy, '--add-gnu-debuglink', debugfile, file])
 
     if newmode:
         os.chmod(file, origmode)
Signature · 1 line
2.17.1
#3 lore raw
Quoted 25 lines · Joshua Watt

Replaces usage of the deprecated oe.utils.getstatusoutput() with Python
subprocess calls.

---
 meta/classes/package.bbclass | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
meta/classes/package.bbclass +1 -0
index 4ce9de2f573..3976811d19f 100644
@@ -380,6 +380,7 @@ def splitdebuginfo(file, dvar, debugdir,
 debuglibdir, debugappend, debugsrcdir,
     # sourcefile is also generated containing a list of debugsources
 
     import stat
+    import subprocess
 
     src = file[len(dvar):]

dest = debuglibdir + os.path.dirname(src) + debugdir + "/" +
os.path.basename(src) + debugappend

meta/classes/package.bbclass def splitdebuginfo(file, dvar, debugdir, · line 414

Quoted 9 lines
meta/classes/package.bbclass +1 -4
@@ -409,16 +410,10 @@ def splitdebuginfo(file, dvar, debugdir,
 debuglibdir, debugappend, debugsrcdir,
 
     bb.utils.mkdirhier(os.path.dirname(debugfile))
 
-    cmd = "'%s' --only-keep-debug '%s' '%s'" % (objcopy, file, debugfile)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    subprocess.check_output([objcopy, '--only-keep-debug', file, debugfile])

Sorry, I just realised it needs a stderr=subprocess.STDOUT in there to ensure the right things happen with logging...

Cheers,

Richard

#4 lore raw

PATCH v3 1/1 classes/package: Clean up getstatusoutput

In reply to Joshua Watt

Replaces usage of the deprecated oe.utils.getstatusoutput() with Python subprocess calls.

---
 meta/classes/package.bbclass | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
meta/classes/package.bbclass +3 -8
index 4ce9de2f573..3976811d19f 100644
@@ -380,6 +380,7 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
     # sourcefile is also generated containing a list of debugsources
 
     import stat
+    import subprocess
 
     src = file[len(dvar):]
     dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
@@ -409,16 +410,10 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
 
     bb.utils.mkdirhier(os.path.dirname(debugfile))
 
-    cmd = "'%s' --only-keep-debug '%s' '%s'" % (objcopy, file, debugfile)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    subprocess.check_output([objcopy, '--only-keep-debug', file, debugfile])
 
     # Set the debuglink to have the view of the file path on the target
-    cmd = "'%s' --add-gnu-debuglink='%s' '%s'" % (objcopy, debugfile, file)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    subprocess.check_output([objcopy, '--add-gnu-debuglink', debugfile, file])
 
     if newmode:
         os.chmod(file, origmode)
Signature · 1 line
2.17.1
#5 lore raw

PATCH v4 1/1 classes/package: Clean up getstatusoutput

Replaces usage of the deprecated oe.utils.getstatusoutput() with Python subprocess calls.

---
 meta/classes/package.bbclass | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
meta/classes/package.bbclass +3 -8
index 4ce9de2f573..323ba051ae0 100644
@@ -380,6 +380,7 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
     # sourcefile is also generated containing a list of debugsources
 
     import stat
+    import subprocess
 
     src = file[len(dvar):]
     dest = debuglibdir + os.path.dirname(src) + debugdir + "/" + os.path.basename(src) + debugappend
@@ -409,16 +410,10 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, debugappend, debugsrcdir,
 
     bb.utils.mkdirhier(os.path.dirname(debugfile))
 
-    cmd = "'%s' --only-keep-debug '%s' '%s'" % (objcopy, file, debugfile)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    subprocess.check_output([objcopy, '--only-keep-debug', file, debugfile], stderr=subprocess.STDOUT)
 
     # Set the debuglink to have the view of the file path on the target
-    cmd = "'%s' --add-gnu-debuglink='%s' '%s'" % (objcopy, debugfile, file)
-    (retval, output) = oe.utils.getstatusoutput(cmd)
-    if retval:
-        bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else ""))
+    subprocess.check_output([objcopy, '--add-gnu-debuglink', debugfile, file], stderr=subprocess.STDOUT)
 
     if newmode:
         os.chmod(file, origmode)
Signature · 1 line
2.17.1