This was only added in Python 3.6 and not all the build hosts have
that recent a python3. However those that do will complain if
everything isn't properly utf-8 clean:

  ./tests/docker/docker.py --engine auto build qemu:debian-amd64 
tests/docker/dockerfiles/debian-amd64.docker   --add-current-user
  Sending build context to Docker daemon  3.584kB

  Step 1/16 : FROM qemu:debian9
  pull access denied for qemu, repository does not exist or may require 'docker 
login'
  Traceback (most recent call last):
    File "./tests/docker/docker.py", line 659, in <module>
      sys.exit(main())
    File "./tests/docker/docker.py", line 655, in main
      return args.cmdobj.run(args, argv)
    File "./tests/docker/docker.py", line 452, in run
      extra_files_cksum=cksum)
    File "./tests/docker/docker.py", line 306, in build_image
      quiet=quiet)
    File "./tests/docker/docker.py", line 231, in _do_check
      return subprocess.check_call(self._command + cmd, **kwargs)
    File "/usr/lib/python3.4/subprocess.py", line 561, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['docker', 'build', '-t', 
'qemu:debian-amd64', '-f', '/tmp/docker_buildjvzs88tf/tmpyvtj7ub0.docker', 
'/tmp/docker_buildjvzs88tf']' returned non-zero exit status 1
  Error in atexit._run_exitfuncs:
  Traceback (most recent call last):
    File "./tests/docker/docker.py", line 258, in _kill_instances
      return self._do_kill_instances(True)
    File "./tests/docker/docker.py", line 239, in _do_kill_instances
      labels = json.loads(resp)[0]["Config"]["Labels"]
    File "/usr/lib/python3.4/json/__init__.py", line 312, in loads
      s.__class__.__name__))
  TypeError: the JSON object must be str, not 'bytes'
  make: *** [docker-image-debian-amd64] Error 1

Signed-off-by: Alex Bennée <alex.ben...@linaro.org>
---
 tests/docker/docker.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 8f391eb278b..e5b7632464b 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -258,10 +258,16 @@ class Docker(object):
         return self._do_kill_instances(True)
 
     def _output(self, cmd, **kwargs):
-        return subprocess.check_output(self._command + cmd,
-                                       stderr=subprocess.STDOUT,
-                                       encoding='utf-8',
-                                       **kwargs)
+        if sys.version_info[1] >= 6:
+            return subprocess.check_output(self._command + cmd,
+                                           stderr=subprocess.STDOUT,
+                                           encoding='utf-8',
+                                           **kwargs)
+        else:
+            return subprocess.check_output(self._command + cmd,
+                                           stderr=subprocess.STDOUT,
+                                           **kwargs)
+
 
     def inspect_tag(self, tag):
         try:
-- 
2.20.1


Reply via email to