Changes to support Python 3 87/22787/16
authorMats Wichmann <mats@linux.com>
Wed, 11 Oct 2017 16:30:22 +0000 (10:30 -0600)
committerMats Wichmann <mats@linux.com>
Wed, 25 Oct 2017 16:06:33 +0000 (16:06 +0000)
commit223a1449571c910a67341d30a727919c71bdc5b3
tree2fe890b605c3fcd2d0a70dc7130d8bb60b0e8d44
parentb39469d182188063c22254f1d297c5b1b83db82c
Changes to support Python 3

SCons 3 works with Python 3.x.  Try to eliminate places where the
scons scripts don't work with Py3.  The most "interesting" one is that
subprocess calls to run an external system command do not return a
string, so if we need to do "if substring in string" type queries on
the subprocess return, we need to call a decoder method to turn it into
a string. SCons provides SCons.Util.to_String for this purpose.

Also on strings, there is no longer a 'string_escape' encoder, Py3
strings are unicode so 'unicode_escape' is available. This is handled
with a try block.

Another change is in lambda usage: Python 3 abolished tuple argument
unpacking, and since lambdas only take a single argument usages which
look like multiple arguments (but are actually a tuple), this has an
effect in a couple of places.  The 2to3 tool suggested the changes here.

The local imports in build_common/iotivityconfig were changed to use
the relative-import syntax (a preceding dot). This has been around for
a long time, so causes no problem for Python 2 (in since 2.4).

Python 3 eliminates the cmp method, so the call to sort the help
message by argument name generated a syntax error.  It turns out
the sort named argument can also take a boolean value (undocumented;
scons3 docs will fix that for next release), so instead set sort=True.

Change-Id: I0582e99a83f6ca5246dc566727c0b04b5ed4199b
Signed-off-by: Mats Wichmann <mats@linux.com>
14 files changed:
SConstruct
build_common/SConscript
build_common/darwin/SConscript
build_common/external_builders.scons
build_common/iotivityconfig/__init__.py
build_common/iotivityconfig/compiler/default_configuration.py
build_common/iotivityconfig/compiler/factory.py
build_common/iotivityconfig/compiler/gcc_configuration.py
build_common/tools/UnpackAll.py
extlibs/libcoap/SConscript
extlibs/mbedtls/SConscript
extlibs/tinycbor/SConscript
java/SConscript
resource/csdk/security/unittest/SConscript