1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-30 12:29:55 +00:00

meta: Fix return value checks from subprocess.call()'s

Python function subprocess.call() returns the return value of the
executed process. If return values are not checked, errors may
go unnoticed and bad things can happen.

Change all callers of subprocess.call() which do not check for
the return value to use subprocess.check_call() which raises
CalledProcessError if the subprocess returns with non-zero value.

https://docs.python.org/2/library/subprocess.html#using-the-subprocess-module

All users of the function were found with:

$ git grep "subprocess\.call" | \
  egrep -v 'if.*subprocess\.call|=\ +subprocess\.call|return.*subprocess\.call'

Tested similar patch on top of yocto jethro. Only compile tested
core-image-minimal on poky master branch.

(From OE-Core rev: 578c8205fd14c48c6d30ef2889d86f1b4aee060a)

Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Mikko Rapeli
2017-06-22 16:23:14 +03:00
committed by Richard Purdie
parent df06ad5713
commit b090ff6a27
5 changed files with 7 additions and 7 deletions
+1 -1
View File
@@ -63,7 +63,7 @@ python do_diffconfig() {
if isdiff: if isdiff:
statement = 'diff --unchanged-line-format= --old-line-format= --new-line-format="%L" ' + configorig + ' ' + config + '>' + fragment statement = 'diff --unchanged-line-format= --old-line-format= --new-line-format="%L" ' + configorig + ' ' + config + '>' + fragment
subprocess.call(statement, shell=True) subprocess.check_call(statement, shell=True)
shutil.copy(configorig, config) shutil.copy(configorig, config)
+1 -1
View File
@@ -47,7 +47,7 @@ python split_kernel_module_packages () {
tf = tempfile.mkstemp() tf = tempfile.mkstemp()
tmpfile = tf[1] tmpfile = tf[1]
cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", file, tmpfile) cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", file, tmpfile)
subprocess.call(cmd, shell=True) subprocess.check_call(cmd, shell=True)
f = open(tmpfile) f = open(tmpfile)
l = f.read().split("\000") l = f.read().split("\000")
f.close() f.close()
+2 -2
View File
@@ -404,7 +404,7 @@ python sstate_hardcode_path_unpack () {
return return
bb.note("Replacing fixme paths in sstate package: %s" % (sstate_hardcode_cmd)) bb.note("Replacing fixme paths in sstate package: %s" % (sstate_hardcode_cmd))
subprocess.call(sstate_hardcode_cmd, shell=True) subprocess.check_call(sstate_hardcode_cmd, shell=True)
# Need to remove this or we'd copy it into the target directory and may # Need to remove this or we'd copy it into the target directory and may
# conflict with another writer # conflict with another writer
@@ -453,7 +453,7 @@ def sstate_clean_manifest(manifest, d, prefix=None):
if os.path.exists(manifest + ".postrm"): if os.path.exists(manifest + ".postrm"):
import subprocess import subprocess
os.chmod(postrm, 0o755) os.chmod(postrm, 0o755)
subprocess.call(postrm, shell=True) subprocess.check_call(postrm, shell=True)
oe.path.remove(postrm) oe.path.remove(postrm)
oe.path.remove(manifest) oe.path.remove(manifest)
+1 -1
View File
@@ -52,4 +52,4 @@ class BuildProject(metaclass=ABCMeta):
def clean(self): def clean(self):
self._run('rm -rf %s' % self.targetdir) self._run('rm -rf %s' % self.targetdir)
subprocess.call('rm -f %s' % self.localarchive, shell=True) subprocess.check_call('rm -f %s' % self.localarchive, shell=True)
+2 -2
View File
@@ -69,7 +69,7 @@ class BuildProject(metaclass=ABCMeta):
def clean(self): def clean(self):
self._run('rm -rf %s' % self.targetdir) self._run('rm -rf %s' % self.targetdir)
subprocess.call('rm -f %s' % self.localarchive, shell=True) subprocess.check_call('rm -f %s' % self.localarchive, shell=True)
pass pass
class TargetBuildProject(BuildProject): class TargetBuildProject(BuildProject):
@@ -136,4 +136,4 @@ class SDKBuildProject(BuildProject):
def _run(self, cmd): def _run(self, cmd):
self.log("Running . %s; " % self.sdkenv + cmd) self.log("Running . %s; " % self.sdkenv + cmd)
return subprocess.call(". %s; " % self.sdkenv + cmd, shell=True) return subprocess.check_call(". %s; " % self.sdkenv + cmd, shell=True)