summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikko Rapeli <mikko.rapeli@bmw.de>2017-06-22 16:23:14 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-06-28 20:55:08 +0100
commitb090ff6a277aa6e242020d7d6ffb1d351e3ee4e0 (patch)
tree3bab56e9931855db4bed7adfacb002cdd4bff586
parentdf06ad5713c728070fcb9b5524f85285e5a77b7a (diff)
downloadpoky-b090ff6a277aa6e242020d7d6ffb1d351e3ee4e0.tar.gz
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>
-rw-r--r--meta/classes/cml1.bbclass2
-rw-r--r--meta/classes/kernel-module-split.bbclass2
-rw-r--r--meta/classes/sstate.bbclass4
-rw-r--r--meta/lib/oeqa/utils/buildproject.py2
-rw-r--r--meta/lib/oeqa/utils/targetbuild.py4
5 files changed, 7 insertions, 7 deletions
diff --git a/meta/classes/cml1.bbclass b/meta/classes/cml1.bbclass
index 38e6613c48..eb8e7907f6 100644
--- a/meta/classes/cml1.bbclass
+++ b/meta/classes/cml1.bbclass
@@ -63,7 +63,7 @@ python do_diffconfig() {
63 63
64 if isdiff: 64 if isdiff:
65 statement = 'diff --unchanged-line-format= --old-line-format= --new-line-format="%L" ' + configorig + ' ' + config + '>' + fragment 65 statement = 'diff --unchanged-line-format= --old-line-format= --new-line-format="%L" ' + configorig + ' ' + config + '>' + fragment
66 subprocess.call(statement, shell=True) 66 subprocess.check_call(statement, shell=True)
67 67
68 shutil.copy(configorig, config) 68 shutil.copy(configorig, config)
69 69
diff --git a/meta/classes/kernel-module-split.bbclass b/meta/classes/kernel-module-split.bbclass
index 5e10dcf735..1035525dac 100644
--- a/meta/classes/kernel-module-split.bbclass
+++ b/meta/classes/kernel-module-split.bbclass
@@ -47,7 +47,7 @@ python split_kernel_module_packages () {
47 tf = tempfile.mkstemp() 47 tf = tempfile.mkstemp()
48 tmpfile = tf[1] 48 tmpfile = tf[1]
49 cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", file, tmpfile) 49 cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", file, tmpfile)
50 subprocess.call(cmd, shell=True) 50 subprocess.check_call(cmd, shell=True)
51 f = open(tmpfile) 51 f = open(tmpfile)
52 l = f.read().split("\000") 52 l = f.read().split("\000")
53 f.close() 53 f.close()
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 0a12935be9..f446c3df02 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -404,7 +404,7 @@ python sstate_hardcode_path_unpack () {
404 return 404 return
405 405
406 bb.note("Replacing fixme paths in sstate package: %s" % (sstate_hardcode_cmd)) 406 bb.note("Replacing fixme paths in sstate package: %s" % (sstate_hardcode_cmd))
407 subprocess.call(sstate_hardcode_cmd, shell=True) 407 subprocess.check_call(sstate_hardcode_cmd, shell=True)
408 408
409 # Need to remove this or we'd copy it into the target directory and may 409 # Need to remove this or we'd copy it into the target directory and may
410 # conflict with another writer 410 # conflict with another writer
@@ -453,7 +453,7 @@ def sstate_clean_manifest(manifest, d, prefix=None):
453 if os.path.exists(manifest + ".postrm"): 453 if os.path.exists(manifest + ".postrm"):
454 import subprocess 454 import subprocess
455 os.chmod(postrm, 0o755) 455 os.chmod(postrm, 0o755)
456 subprocess.call(postrm, shell=True) 456 subprocess.check_call(postrm, shell=True)
457 oe.path.remove(postrm) 457 oe.path.remove(postrm)
458 458
459 oe.path.remove(manifest) 459 oe.path.remove(manifest)
diff --git a/meta/lib/oeqa/utils/buildproject.py b/meta/lib/oeqa/utils/buildproject.py
index 487f08be49..721f35d996 100644
--- a/meta/lib/oeqa/utils/buildproject.py
+++ b/meta/lib/oeqa/utils/buildproject.py
@@ -52,4 +52,4 @@ class BuildProject(metaclass=ABCMeta):
52 52
53 def clean(self): 53 def clean(self):
54 self._run('rm -rf %s' % self.targetdir) 54 self._run('rm -rf %s' % self.targetdir)
55 subprocess.call('rm -f %s' % self.localarchive, shell=True) 55 subprocess.check_call('rm -f %s' % self.localarchive, shell=True)
diff --git a/meta/lib/oeqa/utils/targetbuild.py b/meta/lib/oeqa/utils/targetbuild.py
index 9249fa2635..1202d579fb 100644
--- a/meta/lib/oeqa/utils/targetbuild.py
+++ b/meta/lib/oeqa/utils/targetbuild.py
@@ -69,7 +69,7 @@ class BuildProject(metaclass=ABCMeta):
69 69
70 def clean(self): 70 def clean(self):
71 self._run('rm -rf %s' % self.targetdir) 71 self._run('rm -rf %s' % self.targetdir)
72 subprocess.call('rm -f %s' % self.localarchive, shell=True) 72 subprocess.check_call('rm -f %s' % self.localarchive, shell=True)
73 pass 73 pass
74 74
75class TargetBuildProject(BuildProject): 75class TargetBuildProject(BuildProject):
@@ -136,4 +136,4 @@ class SDKBuildProject(BuildProject):
136 136
137 def _run(self, cmd): 137 def _run(self, cmd):
138 self.log("Running . %s; " % self.sdkenv + cmd) 138 self.log("Running . %s; " % self.sdkenv + cmd)
139 return subprocess.call(". %s; " % self.sdkenv + cmd, shell=True) 139 return subprocess.check_call(". %s; " % self.sdkenv + cmd, shell=True)