[OE-core] [PATCH] cml1: remove diffconfig return code checking

Bruce Ashfield bruce.ashfield at windriver.com
Thu Sep 28 15:59:09 UTC 2017


The following commit:

[
  commit 578c8205fd14c48c6d30ef2889d86f1b4aee060a
  Author: Mikko Rapeli <mikko.rapeli at bmw.de>
  Date:   Thu Jun 22 16:23:14 2017 +0300

      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.

      Signed-off-by: Mikko Rapeli <mikko.rapeli at bmw.de>
      Signed-off-by: Ross Burton <ross.burton at intel.com>
      Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
]

Added return code checking to do_diffconfig. Although the change is
well intentioned, it isn't correct in this instance since 'diff' returns
'1' to indicate that there are differences in the files .. and not as
an error code.

subprocess.check_call() flags this as an error and the routine aborts.

We are already checking the inputs, and in fact already know there's a
diff in the files before we even make the call, so there's no need to
look for an error in this case.

Putting back subprocess.call() restores the routine to working order.

[YOCTO #12132]

Signed-off-by: Bruce Ashfield <bruce.ashfield at windriver.com>
---
 meta/classes/cml1.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/classes/cml1.bbclass b/meta/classes/cml1.bbclass
index eb8e7907f602..38e6613c486d 100644
--- a/meta/classes/cml1.bbclass
+++ b/meta/classes/cml1.bbclass
@@ -63,7 +63,7 @@ python do_diffconfig() {
 
     if isdiff:
         statement = 'diff --unchanged-line-format= --old-line-format= --new-line-format="%L" ' + configorig + ' ' + config + '>' + fragment
-        subprocess.check_call(statement, shell=True)
+        subprocess.call(statement, shell=True)
 
         shutil.copy(configorig, config)
 
-- 
2.5.0




More information about the Openembedded-core mailing list