All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/16] porting scripts to python3
@ 2016-06-02 10:12 Ed Bartosh
  2016-06-02 10:12 ` [PATCH 01/16] scripts: python3: convert iterables to lists Ed Bartosh
                   ` (15 more replies)
  0 siblings, 16 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Hi,

Please review set of python3 fixes for oe scripts.

As most of the scripts are not covered by tests it was quite hard
to test them. I tested only those which I know how to work with.
It would be greate to have any help with testing.

The following changes since commit dcbfc72303d6782d9108538c830cf2ee7849bf59:

  poky: Add Ubuntu 16.04 to tested/supported list since I run it myself (2016-06-02 10:37:05 +0100)

are available in the git repository at:

  git://git.yoctoproject.org/poky-contrib ed/oe/python3
  http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=ed/oe/python3

Ed Bartosh (16):
  scripts: python3: convert iterables to lists
  scripts: python3: use new style except statement
  scripts: python3: rename raw_input to input
  scripts: python3: fix urllib imports
  ksize.py: python3: get rid of strings.join
  scripts: python3: get rid of __future__ imports
  scripts: python3: use new metaclass syntax
  combo-layer: python3: import reduce
  engine.py: python3: rename sys.maxint to sys.maxsize
  scripts: python3: use explicit relative imports
  scripts: python3: replace exec statement with builtin
  engine: python3: replace iteritems() -> items()
  dirsize: python3: fix TypeError: unorderable types
  scripts: python3: decode subprocess output
  combo-layer: python3: use tempfile.TemporaryFile
  scripts: python3: change python to python3 in shebang

 scripts/bitbake-whatchanged                      |  9 +++----
 scripts/buildhistory-collect-srcrevs             |  2 +-
 scripts/cleanup-workdir                          |  4 +--
 scripts/combo-layer                              | 15 ++++++-----
 scripts/contrib/bbvars.py                        | 16 +++++------
 scripts/contrib/devtool-stress.py                |  2 +-
 scripts/contrib/list-packageconfig-flags.py      |  2 +-
 scripts/contrib/verify-homepage.py               |  6 ++---
 scripts/cp-noerror                               | 10 +++----
 scripts/gen-lockedsig-cache                      |  2 +-
 scripts/lib/bsp/engine.py                        | 34 +++++++++++-------------
 scripts/lib/bsp/kernel.py                        | 25 +++++++++--------
 scripts/lib/devtool/__init__.py                  |  2 +-
 scripts/lib/devtool/build.py                     |  2 +-
 scripts/lib/devtool/standard.py                  |  4 +--
 scripts/lib/recipetool/create_buildsys.py        |  2 +-
 scripts/lib/recipetool/create_buildsys_python.py |  6 ++---
 scripts/oe-pkgdata-util                          |  2 +-
 scripts/oe-publish-sdk                           |  2 +-
 scripts/oe-selftest                              |  2 +-
 scripts/oe-trim-schemas                          |  2 +-
 scripts/oepydevshell-internal.py                 |  4 +--
 scripts/opkg-query-helper.py                     |  2 +-
 scripts/pybootchartgui/pybootchartgui/main.py.in |  2 --
 scripts/pybootchartgui/pybootchartgui/parsing.py |  3 ---
 scripts/pythondeps                               |  2 +-
 scripts/relocate_sdk.py                          |  2 +-
 scripts/send-error-report                        | 22 +++++++--------
 scripts/swabber-strace-attach                    |  2 +-
 scripts/sysroot-relativelinks.py                 |  2 +-
 scripts/test-remote-image                        | 10 +++----
 scripts/tiny/dirsize.py                          | 16 +++++------
 scripts/tiny/ksize.py                            |  8 +++---
 scripts/wic                                      |  2 --
 scripts/yocto-bsp                                |  2 +-
 scripts/yocto-kernel                             |  2 +-
 scripts/yocto-layer                              |  2 +-
 37 files changed, 107 insertions(+), 127 deletions(-)

--
Regards,
Ed


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 01/16] scripts: python3: convert iterables to lists
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 13:55   ` Leonardo Sandoval
  2016-06-02 10:12 ` [PATCH 02/16] scripts: python3: use new style except statement Ed Bartosh
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Converted return value of items() keys() and values() to
lists when dictionary is modified in the loop and when
the result is added to the list.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/bitbake-whatchanged                      | 6 +++---
 scripts/combo-layer                              | 2 +-
 scripts/lib/devtool/build.py                     | 2 +-
 scripts/lib/devtool/standard.py                  | 4 ++--
 scripts/lib/recipetool/create_buildsys.py        | 2 +-
 scripts/lib/recipetool/create_buildsys_python.py | 6 +++---
 scripts/oe-pkgdata-util                          | 2 +-
 7 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/scripts/bitbake-whatchanged b/scripts/bitbake-whatchanged
index a20adb2..b05aead 100755
--- a/scripts/bitbake-whatchanged
+++ b/scripts/bitbake-whatchanged
@@ -120,7 +120,7 @@ def print_added(d_new = None, d_old = None):
     Print the newly added tasks
     """
     added = {}
-    for k in d_new.keys():
+    for k in list(d_new.keys()):
         if k not in d_old:
             # Add the new one to added dict, and remove it from
             # d_new, so the remaining ones are the changed ones
@@ -155,7 +155,7 @@ def print_vrchanged(d_new = None, d_old = None, vr = None):
     """
     pvchanged = {}
     counter = 0
-    for k in d_new.keys():
+    for k in list(d_new.keys()):
         if d_new.get(k).get(vr) != d_old.get(k).get(vr):
             counter += 1
             pn, task = split_pntask(k)
@@ -279,7 +279,7 @@ Note:
 
         # Remove the same one from both stamps.
         cnt_unchanged = 0
-        for k in new_dict.keys():
+        for k in list(new_dict.keys()):
             if k in old_dict:
                 cnt_unchanged += 1
                 del(new_dict[k])
diff --git a/scripts/combo-layer b/scripts/combo-layer
index 234d9e4..7c41f92 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -1186,7 +1186,7 @@ def update_with_history(conf, components, revisions, repos):
         msg = conf_commit_msg(conf, components)
         new_tree = runcmd("git write-tree", **wargs).strip()
         new_rev = runcmd("git commit-tree".split() +
-                         add_p([head] + additional_heads.keys()) +
+                         add_p([head] + list(additional_heads.keys())) +
                          ["-m", msg, new_tree],
                          **wargs).strip()
         # And done! This is the first time we change the HEAD in the actual work tree.
diff --git a/scripts/lib/devtool/build.py b/scripts/lib/devtool/build.py
index 48f6fe1..6be549d 100644
--- a/scripts/lib/devtool/build.py
+++ b/scripts/lib/devtool/build.py
@@ -27,7 +27,7 @@ logger = logging.getLogger('devtool')
 
 
 def _set_file_values(fn, values):
-    remaining = values.keys()
+    remaining = list(values.keys())
 
     def varfunc(varname, origvalue, op, newlines):
         newvalue = values.get(varname, origvalue)
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 08153c6..a2516d6 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -998,7 +998,7 @@ def _export_local_files(srctree, rd, destdir):
         bb.process.run(['git', 'checkout', tree, '--', '.'], cwd=srctree,
                         env=dict(os.environ, GIT_WORK_TREE=destdir,
                                  GIT_INDEX_FILE=tmp_index))
-        new_set = _git_ls_tree(srctree, tree, True).keys()
+        new_set = list(_git_ls_tree(srctree, tree, True).keys())
     elif os.path.isdir(local_files_dir):
         # If not tracked by Git, just copy from working copy
         new_set = _ls_tree(os.path.join(srctree, 'oe-local-files'))
@@ -1309,7 +1309,7 @@ def reset(args, config, basepath, workspace):
         raise DevtoolError("Recipe must be specified, or specify -a/--all to "
                            "reset all recipes")
     if args.all:
-        recipes = workspace.keys()
+        recipes = list(workspace.keys())
     else:
         recipes = [args.recipename]
 
diff --git a/scripts/lib/recipetool/create_buildsys.py b/scripts/lib/recipetool/create_buildsys.py
index de3d9ae..78ae4bc 100644
--- a/scripts/lib/recipetool/create_buildsys.py
+++ b/scripts/lib/recipetool/create_buildsys.py
@@ -682,7 +682,7 @@ class AutotoolsRecipeHandler(RecipeHandler):
                 process_macro(in_keyword, partial)
 
         if extravalues:
-            for k,v in extravalues.items():
+            for k,v in list(extravalues.items()):
                 if v:
                     if v.startswith('$') or v.startswith('@') or v.startswith('%'):
                         del extravalues[k]
diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
index 55cce0e..aff13cf 100644
--- a/scripts/lib/recipetool/create_buildsys_python.py
+++ b/scripts/lib/recipetool/create_buildsys_python.py
@@ -361,7 +361,7 @@ class PythonRecipeHandler(RecipeHandler):
 
         # Naive mapping of setup() arguments to PKG-INFO field names
         for d in [info, non_literals]:
-            for key, value in d.items():
+            for key, value in list(d.items()):
                 new_key = _map(key)
                 if new_key != key:
                     del d[key]
@@ -443,7 +443,7 @@ class PythonRecipeHandler(RecipeHandler):
                 elif new_value != value:
                     info[variable] = new_value
             elif hasattr(value, 'items'):
-                for dkey, dvalue in value.items():
+                for dkey, dvalue in list(value.items()):
                     new_list = []
                     for pos, a_value in enumerate(dvalue):
                         new_value = replace_value(search, replace, a_value)
@@ -608,7 +608,7 @@ def gather_setup_info(fileobj):
     visitor.visit(parsed)
 
     non_literals, extensions = {}, []
-    for key, value in visitor.keywords.items():
+    for key, value in list(visitor.keywords.items()):
         if key == 'ext_modules':
             if isinstance(value, list):
                 for ext in value:
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index b39d9b5..b16ecc9 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -240,7 +240,7 @@ def lookup_pkg(args):
         sys.exit(1)
 
     if args.reverse:
-        items = mappings.values()
+        items = list(mappings.values())
     else:
         items = []
         for pkg in pkgs:
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 02/16] scripts: python3: use new style except statement
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
  2016-06-02 10:12 ` [PATCH 01/16] scripts: python3: convert iterables to lists Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 03/16] scripts: python3: rename raw_input to input Ed Bartosh
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Changed old syle except statements 'except <exception>, var'
to new style 'except <exception> as var' as old style is not
supported in python3.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/combo-layer       |  4 ++--
 scripts/contrib/bbvars.py | 14 +++++++-------
 scripts/cp-noerror        |  8 ++++----
 scripts/tiny/ksize.py     |  2 +-
 4 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/scripts/combo-layer b/scripts/combo-layer
index 7c41f92..0644cdc 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -190,7 +190,7 @@ def runcmd(cmd,destdir=None,printerr=True,out=None,env=None):
         err = os.tmpfile()
     try:
         subprocess.check_call(cmd, stdout=out, stderr=err, cwd=destdir, shell=isinstance(cmd, str), env=env or os.environ)
-    except subprocess.CalledProcessError,e:
+    except subprocess.CalledProcessError as e:
         err.seek(0)
         if printerr:
             logger.error("%s" % err.read())
@@ -429,7 +429,7 @@ file_exclude = %s''' % (name, file_filter or '<empty>', repo.get('file_exclude',
                     runcmd('git replace --graft %s %s' % (start, startrev))
             try:
                 runcmd(merge)
-            except Exception, error:
+            except Exception as error:
                 logger.info('''Merging component repository history failed, perhaps because of merge conflicts.
 It may be possible to commit anyway after resolving these conflicts.
 
diff --git a/scripts/contrib/bbvars.py b/scripts/contrib/bbvars.py
index 6f47935..b865dd1 100755
--- a/scripts/contrib/bbvars.py
+++ b/scripts/contrib/bbvars.py
@@ -37,9 +37,9 @@ def recipe_bbvars(recipe):
     vset = set()
     try:
         r = open(recipe)
-    except IOError as (errno, strerror):
+    except IOError as err:
         print('WARNING: Failed to open recipe ', recipe)
-        print(strerror)
+        print(err.args[1])
 
     for line in r:
         # Strip any comments from the line
@@ -71,9 +71,9 @@ def bbvar_is_documented(var, docfiles):
     for doc in docfiles:
         try:
             f = open(doc)
-        except IOError as (errno, strerror):
+        except IOError as err:
             print('WARNING: Failed to open doc ', doc)
-            print(strerror)
+            print(err.args[1])
         for line in f:
             if prog.match(line):
                 return True
@@ -87,8 +87,8 @@ def bbvar_doctag(var, docconf):
 
     try:
         f = open(docconf)
-    except IOError as (errno, strerror):
-        return strerror
+    except IOError as err:
+        return err.args[1]
 
     for line in f:
         m = prog.search(line)
@@ -109,7 +109,7 @@ def main():
     # Collect and validate input
     try:
         opts, args = getopt.getopt(sys.argv[1:], "d:hm:t:T", ["help"])
-    except getopt.GetoptError, err:
+    except getopt.GetoptError as err:
         print('%s' % str(err))
         usage()
         sys.exit(2)
diff --git a/scripts/cp-noerror b/scripts/cp-noerror
index 28eb90d..d8be677 100755
--- a/scripts/cp-noerror
+++ b/scripts/cp-noerror
@@ -33,16 +33,16 @@ def copytree(src, dst, symlinks=False, ignore=None):
                 shutil.copy2(srcname, dstname)
         # catch the Error from the recursive copytree so that we can
         # continue with other files
-        except shutil.Error, err:
+        except shutil.Error as err:
             errors.extend(err.args[0])
-        except EnvironmentError, why:
+        except EnvironmentError as why:
             errors.append((srcname, dstname, str(why)))
     try:
         shutil.copystat(src, dst)
-    except OSError, why:
+    except OSError as why:
         errors.extend((src, dst, str(why)))
     if errors:
-        raise shutil.Error, errors
+        raise shutil.Error(errors)
 
 try:
     copytree(sys.argv[1], sys.argv[2])
diff --git a/scripts/tiny/ksize.py b/scripts/tiny/ksize.py
index 275c983..54b71f8 100755
--- a/scripts/tiny/ksize.py
+++ b/scripts/tiny/ksize.py
@@ -133,7 +133,7 @@ class Report:
 def main():
     try:
         opts, args = getopt.getopt(sys.argv[1:], "dh", ["help"])
-    except getopt.GetoptError, err:
+    except getopt.GetoptError as err:
         print('%s' % str(err))
         usage()
         sys.exit(2)
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 03/16] scripts: python3: rename raw_input to input
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
  2016-06-02 10:12 ` [PATCH 01/16] scripts: python3: convert iterables to lists Ed Bartosh
  2016-06-02 10:12 ` [PATCH 02/16] scripts: python3: use new style except statement Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 04/16] scripts: python3: fix urllib imports Ed Bartosh
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Renamed raw_input to input as raw_input does not
exist in python 3.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/lib/bsp/engine.py        | 12 ++++++------
 scripts/lib/bsp/kernel.py        | 12 ++++++------
 scripts/oepydevshell-internal.py |  2 +-
 scripts/send-error-report        |  6 +++---
 4 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py
index 3ab4295..f75454d 100644
--- a/scripts/lib/bsp/engine.py
+++ b/scripts/lib/bsp/engine.py
@@ -464,9 +464,9 @@ class ListInputLine(InputLine):
         choices_str = self.gen_choices_str(choicepairs)
         choices_val_list = self.gen_choices_val_list(choicepairs)
         if checklist:
-            choiceval = default(find_choicevals(raw_input(msg + "\n" + choices_str), choices_val_list), default_choice)
+            choiceval = default(find_choicevals(input(msg + "\n" + choices_str), choices_val_list), default_choice)
         else:
-            choiceval = default(find_choiceval(raw_input(msg + "\n" + choices_str), choices_val_list), default_choice)
+            choiceval = default(find_choiceval(input(msg + "\n" + choices_str), choices_val_list), default_choice)
 
         return choiceval
 
@@ -540,12 +540,12 @@ def get_verified_git_repo(input_str, name):
     """
     msg = input_str.strip() + " "
 
-    giturl = default(raw_input(msg), name)
+    giturl = default(input(msg), name)
 
     while True:
         if verify_git_repo(giturl):
             return giturl
-        giturl = default(raw_input(msg), name)
+        giturl = default(input(msg), name)
 
 
 def get_verified_file(input_str, name, filename_can_be_null):
@@ -555,14 +555,14 @@ def get_verified_file(input_str, name, filename_can_be_null):
     """
     msg = input_str.strip() + " "
 
-    filename = default(raw_input(msg), name)
+    filename = default(input(msg), name)
 
     while True:
         if not filename and filename_can_be_null:
             return filename
         if os.path.isfile(filename):
             return filename
-        filename = default(raw_input(msg), name)
+        filename = default(input(msg), name)
 
 
 def replace_file(replace_this, with_this):
diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py
index 5bfa663..3c4b798 100644
--- a/scripts/lib/bsp/kernel.py
+++ b/scripts/lib/bsp/kernel.py
@@ -202,8 +202,8 @@ def yocto_kernel_config_rm(scripts_path, machine):
     config_items = read_config_items(scripts_path, machine)
 
     print("Specify the kernel config items to remove:")
-    input = raw_input(gen_choices_str(config_items))
-    rm_choices = input.split()
+    inp = input(gen_choices_str(config_items))
+    rm_choices = inp.split()
     rm_choices.sort()
 
     removed = []
@@ -359,8 +359,8 @@ def yocto_kernel_patch_rm(scripts_path, machine):
     patches = read_patch_items(scripts_path, machine)
 
     print("Specify the patches to remove:")
-    input = raw_input(gen_choices_str(patches))
-    rm_choices = input.split()
+    inp = input(gen_choices_str(patches))
+    rm_choices = inp.split()
     rm_choices.sort()
 
     removed = []
@@ -610,8 +610,8 @@ def yocto_kernel_feature_rm(scripts_path, machine):
     features = read_features(scripts_path, machine)
 
     print("Specify the features to remove:")
-    input = raw_input(gen_choices_str(features))
-    rm_choices = input.split()
+    inp = input(gen_choices_str(features))
+    rm_choices = inp.split()
     rm_choices.sort()
 
     removed = []
diff --git a/scripts/oepydevshell-internal.py b/scripts/oepydevshell-internal.py
index f7b2e4e..2566606 100755
--- a/scripts/oepydevshell-internal.py
+++ b/scripts/oepydevshell-internal.py
@@ -67,7 +67,7 @@ try:
                     i = i[4096:]
                 if sys.stdin in ready:
                     echonocbreak(sys.stdin.fileno())
-                    o = raw_input()
+                    o = input()
                     cbreaknoecho(sys.stdin.fileno())
                     pty.write(o + "\n")
             except (IOError, OSError) as e:
diff --git a/scripts/send-error-report b/scripts/send-error-report
index ed78bd6..7251e27 100755
--- a/scripts/send-error-report
+++ b/scripts/send-error-report
@@ -44,12 +44,12 @@ def getPayloadLimit(url):
 
 def ask_for_contactdetails():
     print("Please enter your name and your email (optionally), they'll be saved in the file you send.")
-    username = raw_input("Name (required): ")
-    email = raw_input("E-mail (not required): ")
+    username = input("Name (required): ")
+    email = input("E-mail (not required): ")
     return username, email
 
 def edit_content(json_file_path):
-    edit = raw_input("Review information before sending? (y/n): ")
+    edit = input("Review information before sending? (y/n): ")
     if 'y' in edit or 'Y' in edit:
         editor = os.environ.get('EDITOR', None)
         if editor:
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 04/16] scripts: python3: fix urllib imports
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (2 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 03/16] scripts: python3: rename raw_input to input Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 05/16] ksize.py: python3: get rid of strings.join Ed Bartosh
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Some functions and classes have been moved from urllib[2]
to urllib.request and urllib.error in python 3.

Used new imports to make the code working in python 3.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/contrib/verify-homepage.py |  4 ++--
 scripts/send-error-report          | 14 +++++++-------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/scripts/contrib/verify-homepage.py b/scripts/contrib/verify-homepage.py
index 265ff65..18bb15b 100755
--- a/scripts/contrib/verify-homepage.py
+++ b/scripts/contrib/verify-homepage.py
@@ -7,7 +7,7 @@
 import sys
 import os
 import subprocess
-import urllib2
+import urllib.request
 
 
 # Allow importing scripts/lib modules
@@ -47,7 +47,7 @@ def verifyHomepage(bbhandler):
             homepage = data.getVar("HOMEPAGE", True)
             if homepage:
                 try:
-                    urllib2.urlopen(homepage, timeout=5)
+                    urllib.request.urlopen(homepage, timeout=5)
                 except Exception:
                     count = count + wgetHomepage(os.path.basename(realfn), homepage)
             checked.append(realfn)
diff --git a/scripts/send-error-report b/scripts/send-error-report
index 7251e27..122ce32 100755
--- a/scripts/send-error-report
+++ b/scripts/send-error-report
@@ -7,7 +7,7 @@
 # Author: Andreea Proca <andreea.b.proca@intel.com>
 # Author: Michael Wood <michael.g.wood@intel.com>
 
-import urllib2
+import urllib.request, urllib.error
 import sys
 import json
 import os
@@ -25,10 +25,10 @@ log = logging.getLogger("send-error-report")
 logging.basicConfig(format='%(levelname)s: %(message)s')
 
 def getPayloadLimit(url):
-    req = urllib2.Request(url, None)
+    req = urllib.request.Request(url, None)
     try:
-        response = urllib2.urlopen(req)
-    except urllib2.URLError as e:
+        response = urllib.request.urlopen(req)
+    except urllib.error.URLError as e:
         # Use this opportunity to bail out if we can't even contact the server
         log.error("Could not contact server: " + url)
         log.error(e.reason)
@@ -136,10 +136,10 @@ def send_data(data, args):
     else:
         url = "http://"+args.server+"/ClientPost/"
 
-    req = urllib2.Request(url, data=data, headers=headers)
+    req = urllib.request.Request(url, data=data, headers=headers)
     try:
-        response = urllib2.urlopen(req)
-    except urllib2.HTTPError, e:
+        response = urllib.request.urlopen(req)
+    except urllib.error.HTTPError as e:
         logging.error(e.reason)
         sys.exit(1)
 
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 05/16] ksize.py: python3: get rid of strings.join
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (3 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 04/16] scripts: python3: fix urllib imports Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 06/16] scripts: python3: get rid of __future__ imports Ed Bartosh
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Used join method instead of strings.join as stings.join
doesn't exist in python 3.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/tiny/ksize.py | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/scripts/tiny/ksize.py b/scripts/tiny/ksize.py
index 54b71f8..587c930 100755
--- a/scripts/tiny/ksize.py
+++ b/scripts/tiny/ksize.py
@@ -28,8 +28,6 @@ import sys
 import getopt
 import os
 from subprocess import *
-from string import join
-
 
 def usage():
     prog = os.path.basename(sys.argv[0])
@@ -66,7 +64,7 @@ class Report:
 
         p = Popen("ls " + path + "/*.o | grep -v built-in.o",
                   shell=True, stdout=PIPE, stderr=PIPE)
-        glob = join(p.communicate()[0].splitlines())
+        glob = ' '.join(p.communicate()[0].splitlines())
         oreport = Report(glob, path + "/*.o")
         oreport.sizes.title = path + "/*.o"
         r.parts.append(oreport)
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 06/16] scripts: python3: get rid of __future__ imports
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (4 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 05/16] ksize.py: python3: get rid of strings.join Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 07/16] scripts: python3: use new metaclass syntax Ed Bartosh
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Removed print_function and with_statement imports from __future__
as they're supported by python 3 by default.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/bitbake-whatchanged                      | 1 -
 scripts/pybootchartgui/pybootchartgui/main.py.in | 2 --
 scripts/pybootchartgui/pybootchartgui/parsing.py | 3 ---
 scripts/wic                                      | 2 --
 4 files changed, 8 deletions(-)

diff --git a/scripts/bitbake-whatchanged b/scripts/bitbake-whatchanged
index b05aead..55b61d0 100755
--- a/scripts/bitbake-whatchanged
+++ b/scripts/bitbake-whatchanged
@@ -17,7 +17,6 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
-from __future__ import print_function
 import os
 import sys
 import getopt
diff --git a/scripts/pybootchartgui/pybootchartgui/main.py.in b/scripts/pybootchartgui/pybootchartgui/main.py.in
index 21bb0be..af26bd2 100644
--- a/scripts/pybootchartgui/pybootchartgui/main.py.in
+++ b/scripts/pybootchartgui/pybootchartgui/main.py.in
@@ -16,8 +16,6 @@
 #  You should have received a copy of the GNU General Public License
 #  along with pybootchartgui. If not, see <http://www.gnu.org/licenses/>.
 
-from __future__ import print_function
-
 import sys
 import os
 import optparse
diff --git a/scripts/pybootchartgui/pybootchartgui/parsing.py b/scripts/pybootchartgui/pybootchartgui/parsing.py
index d423b9f..a3a0b0b 100644
--- a/scripts/pybootchartgui/pybootchartgui/parsing.py
+++ b/scripts/pybootchartgui/pybootchartgui/parsing.py
@@ -13,9 +13,6 @@
 #  You should have received a copy of the GNU General Public License
 #  along with pybootchartgui. If not, see <http://www.gnu.org/licenses/>.
 
-
-from __future__ import with_statement
-
 import os
 import string
 import re
diff --git a/scripts/wic b/scripts/wic
index 5cc06f4..9023755 100755
--- a/scripts/wic
+++ b/scripts/wic
@@ -28,8 +28,6 @@
 # AUTHORS
 # Tom Zanussi <tom.zanussi (at] linux.intel.com>
 #
-from __future__ import print_function
-
 __version__ = "0.2.0"
 
 # Python Standard Library modules
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 07/16] scripts: python3: use new metaclass syntax
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (5 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 06/16] scripts: python3: get rid of __future__ imports Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 08/16] combo-layer: python3: import reduce Ed Bartosh
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Used metaclass=<metaclass> syntax instead old
__metaclass__ = <metaclass> as only new one is supported
in python 3.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/lib/bsp/engine.py | 6 ++----
 scripts/test-remote-image | 8 ++------
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py
index f75454d..5b49486 100644
--- a/scripts/lib/bsp/engine.py
+++ b/scripts/lib/bsp/engine.py
@@ -40,12 +40,11 @@ import json
 import subprocess
 import shutil
 
-class Line():
+class Line(metaclass=ABCMeta):
     """
     Generic (abstract) container representing a line that will appear
     in the BSP-generating program.
     """
-    __metaclass__ = ABCMeta
 
     def __init__(self, line):
         self.line = line
@@ -319,11 +318,10 @@ class BooleanInputLine(InputLine):
         return line
 
 
-class ListInputLine(InputLine):
+class ListInputLine(InputLine, metaclass=ABCMeta):
     """
     Base class for List-based Input lines. e.g. Choicelist, Checklist.
     """
-    __metaclass__ = ABCMeta
 
     def __init__(self, props, tag, lineno):
         InputLine.__init__(self, props, tag, lineno)
diff --git a/scripts/test-remote-image b/scripts/test-remote-image
index 7a00db9..698948b 100755
--- a/scripts/test-remote-image
+++ b/scripts/test-remote-image
@@ -92,13 +92,11 @@ def get_args_parser():
     parser.add_argument('--skip-download', required=False, action="store_true", dest="skip_download", default=False, help='Skip downloading the images completely. This needs the correct files to be present in the directory specified by the target profile.')
     return parser
 
-class BaseTargetProfile(object):
+class BaseTargetProfile(object, metaclass=ABCMeta):
     """
     This class defines the meta profile for a specific target (MACHINE type + image type).
     """
 
-    __metaclass__ = ABCMeta
-
     def __init__(self, image_type):
         self.image_type = image_type
 
@@ -191,13 +189,11 @@ class AutoTargetProfile(BaseTargetProfile):
         return controller.get_extra_files()
 
 
-class BaseRepoProfile(object):
+class BaseRepoProfile(object, metaclass=ABCMeta):
     """
     This class defines the meta profile for an images repository.
     """
 
-    __metaclass__ = ABCMeta
-
     def __init__(self, repolink, localdir):
         self.localdir = localdir
         self.repolink = repolink
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 08/16] combo-layer: python3: import reduce
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (6 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 07/16] scripts: python3: use new metaclass syntax Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 09/16] engine.py: python3: rename sys.maxint to sys.maxsize Ed Bartosh
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Reduce is not a builtin function in python3.
It has to be imported from functools.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/combo-layer | 1 +
 1 file changed, 1 insertion(+)

diff --git a/scripts/combo-layer b/scripts/combo-layer
index 0644cdc..0954bb6 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -33,6 +33,7 @@ import pipes
 import shutil
 from collections import OrderedDict
 from string import Template
+from functools import reduce
 
 __version__ = "0.2.1"
 
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 09/16] engine.py: python3: rename sys.maxint to sys.maxsize
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (7 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 08/16] combo-layer: python3: import reduce Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 10/16] scripts: python3: use explicit relative imports Ed Bartosh
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Renamed sys.maxint -> sys.maxsize as sys.maxint doesn't
exist in python 3.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/lib/bsp/engine.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py
index 5b49486..03bd66e 100644
--- a/scripts/lib/bsp/engine.py
+++ b/scripts/lib/bsp/engine.py
@@ -49,7 +49,7 @@ class Line(metaclass=ABCMeta):
     def __init__(self, line):
         self.line = line
         self.generated_line = ""
-        self.prio = sys.maxint
+        self.prio = sys.maxsize
         self.discard = False
 
     @abstractmethod
@@ -154,7 +154,7 @@ class InputLine(Line):
         try:
             self.prio = int(props["prio"])
         except KeyError:
-            self.prio = sys.maxint
+            self.prio = sys.maxsize
 
     def gen(self, context = None):
         try:
@@ -1284,7 +1284,7 @@ class InputLineGroup(InputLine):
     def __init__(self, codeline):
         InputLine.__init__(self, {}, "", 0)
         self.group = []
-        self.prio = sys.maxint
+        self.prio = sys.maxsize
         self.group.append(codeline)
 
     def append(self, line):
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 10/16] scripts: python3: use explicit relative imports
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (8 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 09/16] engine.py: python3: rename sys.maxint to sys.maxsize Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 11/16] scripts: python3: replace exec statement with builtin Ed Bartosh
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Implicit relative imports within packages are not supported in
python 3. They have to be converted to explicit imports.

Used 'from .module import' syntax for relative imports.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/lib/bsp/engine.py | 2 +-
 scripts/lib/bsp/kernel.py | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py
index 03bd66e..5ff6c98 100644
--- a/scripts/lib/bsp/engine.py
+++ b/scripts/lib/bsp/engine.py
@@ -34,7 +34,7 @@
 import os
 import sys
 from abc import ABCMeta, abstractmethod
-from tags import *
+from .tags import *
 import shlex
 import json
 import subprocess
diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py
index 3c4b798..fe7133d 100644
--- a/scripts/lib/bsp/kernel.py
+++ b/scripts/lib/bsp/kernel.py
@@ -32,8 +32,7 @@ import shutil
 from tags import *
 import glob
 import subprocess
-from engine import create_context
-
+from .engine import create_context
 
 def find_bblayers():
     """
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 11/16] scripts: python3: replace exec statement with builtin
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (9 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 10/16] scripts: python3: use explicit relative imports Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:12 ` [PATCH 12/16] engine: python3: replace iteritems() -> items() Ed Bartosh
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Used exec() builtin instead of 'exec' statement as
this statement doesn't exist in python 3.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/lib/bsp/engine.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py
index 5ff6c98..2b87d33 100644
--- a/scripts/lib/bsp/engine.py
+++ b/scripts/lib/bsp/engine.py
@@ -1362,7 +1362,7 @@ def run_program_lines(linelist, codedump):
         of = open("bspgen.out", "w")
         of.write(buf)
         of.close()
-    exec buf
+    exec(buf)
 
 
 def gen_target(files, context = None):
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 12/16] engine: python3: replace iteritems() -> items()
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (10 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 11/16] scripts: python3: replace exec statement with builtin Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-06 17:34   ` Ibarra Lopez, Humberto
  2016-06-02 10:12 ` [PATCH 13/16] dirsize: python3: fix TypeError: unorderable types Ed Bartosh
                   ` (3 subsequent siblings)
  15 siblings, 1 reply; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Used items() as iteritems() doesn't exist in python 3.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/lib/bsp/engine.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py
index 2b87d33..3ed90fa 100644
--- a/scripts/lib/bsp/engine.py
+++ b/scripts/lib/bsp/engine.py
@@ -1385,7 +1385,7 @@ def gen_supplied_property_vals(properties, program_lines):
     Generate user-specified entries for input values instead of
     generating input prompts.
     """
-    for name, val in properties.iteritems():
+    for name, val in properties.items():
         program_line = name + " = \"" + val + "\""
         program_lines.append(program_line)
 
@@ -1621,7 +1621,7 @@ def print_dict(items, indent = 0):
     """
     Print the values in a possibly nested dictionary.
     """
-    for key, val in items.iteritems():
+    for key, val in items.items():
         print("    "*indent + "\"%s\" :" % key)
         if type(val) == dict:
             print("{")
@@ -1654,7 +1654,7 @@ def get_properties(input_lines):
         props = line.props
         item = {}
         name = props["name"]
-        for key, val in props.items():
+        for key, val props.items():
             if not key == "name":
                 item[key] = val
         properties[name] = item
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 13/16] dirsize: python3: fix TypeError: unorderable types
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (11 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 12/16] engine: python3: replace iteritems() -> items() Ed Bartosh
@ 2016-06-02 10:12 ` Ed Bartosh
  2016-06-02 10:13 ` [PATCH 14/16] scripts: python3: decode subprocess output Ed Bartosh
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:12 UTC (permalink / raw)
  To: openembedded-core

Python 3 ignores the __cmp__() method and doesn't have cmp() builtin
function. This caused sorted() call to raise
    TypeError: unorderable types: Record() < Record()

Removing __cmp__ method and implementing __lt__ should solve the
problem as __lt__ is the only method needed for sort[ed] to work.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/tiny/dirsize.py | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/scripts/tiny/dirsize.py b/scripts/tiny/dirsize.py
index 5329b86..0b4fbd1 100755
--- a/scripts/tiny/dirsize.py
+++ b/scripts/tiny/dirsize.py
@@ -52,20 +52,16 @@ class Record:
         self.size = 0
         self.records = []
 
-    def __cmp__(this, that):
+    def __lt__(this, that):
         if that is None:
-            return 1
+            return False
         if not isinstance(that, Record):
             raise TypeError
         if len(this.records) > 0 and len(that.records) == 0:
-            return -1
-        if len(this.records) == 0 and len(that.records) > 0:
-            return 1
-        if this.size < that.size:
-            return -1
+            return False
         if this.size > that.size:
-            return 1
-        return 0
+            return False
+        return True
 
     def show(self, minsize):
         total = 0
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 14/16] scripts: python3: decode subprocess output
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (12 preceding siblings ...)
  2016-06-02 10:12 ` [PATCH 13/16] dirsize: python3: fix TypeError: unorderable types Ed Bartosh
@ 2016-06-02 10:13 ` Ed Bartosh
  2016-06-02 10:13 ` [PATCH 15/16] combo-layer: python3: use tempfile.TemporaryFile Ed Bartosh
  2016-06-02 10:13 ` [PATCH 16/16] scripts: python3: change python to python3 in shebang Ed Bartosh
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:13 UTC (permalink / raw)
  To: openembedded-core

stdeout and stderr content returned by subprocess API has different
types in Python 3(bytes) and Python 2(string). Decoding it to
'utf-8' makes it unicode on both pythons.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/cleanup-workdir   |  2 +-
 scripts/combo-layer       |  2 +-
 scripts/lib/bsp/kernel.py | 10 +++++-----
 scripts/oe-selftest       |  2 +-
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/scripts/cleanup-workdir b/scripts/cleanup-workdir
index fee464c..0b2cf99 100755
--- a/scripts/cleanup-workdir
+++ b/scripts/cleanup-workdir
@@ -45,7 +45,7 @@ def run_command(cmd):
     if pipe.returncode != 0:
         print("Execute command '%s' failed." % cmd)
         sys.exit(1)
-    return output
+    return output.decode('utf-8')
 
 def get_cur_arch_dirs(workdir, arch_dirs):
     pattern = workdir + '/(.*?)/'
diff --git a/scripts/combo-layer b/scripts/combo-layer
index 0954bb6..7f0fa48 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -198,7 +198,7 @@ def runcmd(cmd,destdir=None,printerr=True,out=None,env=None):
         raise e
 
     err.seek(0)
-    output = err.read()
+    output = err.read().decode('utf-8')
     logger.debug("output: %s" % output.replace(chr(0), '\\0'))
     return output
 
diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py
index fe7133d..91cc79c 100644
--- a/scripts/lib/bsp/kernel.py
+++ b/scripts/lib/bsp/kernel.py
@@ -49,7 +49,7 @@ def find_bblayers():
 
     bitbake_env_cmd = "bitbake -e"
     bitbake_env_lines = subprocess.Popen(bitbake_env_cmd, shell=True,
-                                         stdout=subprocess.PIPE).stdout.read()
+                                         stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     if not bitbake_env_lines:
         print("Couldn't get '%s' output, exiting." % bitbake_env_cmd)
@@ -734,7 +734,7 @@ def yocto_kernel_available_features_list(scripts_path, machine):
     feature_url = find_feature_url(giturl)
 
     feature_cmd = "wget -q -O - " + feature_url
-    tmp = subprocess.Popen(feature_cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+    tmp = subprocess.Popen(feature_cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     print("The current set of kernel features available to %s is:\n" % machine)
 
@@ -785,7 +785,7 @@ def get_feature_desc(git_url, feature):
     """
     feature_desc_url = find_feature_desc_url(git_url, feature)
     feature_desc_cmd = "wget -q -O - " + feature_desc_url
-    tmp = subprocess.Popen(feature_desc_cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+    tmp = subprocess.Popen(feature_desc_cmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     return find_feature_desc(tmp.split("\n"))
 
@@ -1001,7 +1001,7 @@ def base_branches(context):
     print("Getting branches from remote repo %s..." % giturl)
 
     gitcmd = "git ls-remote %s *heads* 2>&1" % (giturl)
-    tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+    tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     branches = []
 
@@ -1031,7 +1031,7 @@ def all_branches(context):
     print("Getting branches from remote repo %s..." % giturl)
 
     gitcmd = "git ls-remote %s *heads* 2>&1" % (giturl)
-    tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read()
+    tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
 
     branches = []
 
diff --git a/scripts/oe-selftest b/scripts/oe-selftest
index b1ecf7f..df76f94 100755
--- a/scripts/oe-selftest
+++ b/scripts/oe-selftest
@@ -371,7 +371,7 @@ def coverage_setup(coverage_source, coverage_include, coverage_omit):
     import subprocess
     builddir = os.environ.get("BUILDDIR")
     pokydir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-    curcommit= subprocess.check_output(["git", "--git-dir", os.path.join(pokydir, ".git"), "rev-parse", "HEAD"])
+    curcommit= subprocess.check_output(["git", "--git-dir", os.path.join(pokydir, ".git"), "rev-parse", "HEAD"]).decode('utf-8')
     coveragerc = "%s/.coveragerc" % builddir
     data_file = "%s/.coverage." % builddir
     data_file += datetime.datetime.now().strftime('%Y%m%dT%H%M%S')
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 15/16] combo-layer: python3: use tempfile.TemporaryFile
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (13 preceding siblings ...)
  2016-06-02 10:13 ` [PATCH 14/16] scripts: python3: decode subprocess output Ed Bartosh
@ 2016-06-02 10:13 ` Ed Bartosh
  2016-06-02 10:13 ` [PATCH 16/16] scripts: python3: change python to python3 in shebang Ed Bartosh
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:13 UTC (permalink / raw)
  To: openembedded-core

Used tempfile.TemporaryFile() API instead of deprecated
os.tmpfile().

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/combo-layer | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/combo-layer b/scripts/combo-layer
index 7f0fa48..eaa7f5a 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -185,10 +185,10 @@ def runcmd(cmd,destdir=None,printerr=True,out=None,env=None):
     """
     logger.debug("run cmd '%s' in %s" % (cmd, os.getcwd() if destdir is None else destdir))
     if not out:
-        out = os.tmpfile()
+        out = tempfile.TemporaryFile()
         err = out
     else:
-        err = os.tmpfile()
+        err = tempfile.TemporaryFile()
     try:
         subprocess.check_call(cmd, stdout=out, stderr=err, cwd=destdir, shell=isinstance(cmd, str), env=env or os.environ)
     except subprocess.CalledProcessError as e:
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 16/16] scripts: python3: change python to python3 in shebang
  2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
                   ` (14 preceding siblings ...)
  2016-06-02 10:13 ` [PATCH 15/16] combo-layer: python3: use tempfile.TemporaryFile Ed Bartosh
@ 2016-06-02 10:13 ` Ed Bartosh
  15 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 10:13 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
---
 scripts/bitbake-whatchanged                 | 2 +-
 scripts/buildhistory-collect-srcrevs        | 2 +-
 scripts/cleanup-workdir                     | 2 +-
 scripts/combo-layer                         | 2 +-
 scripts/contrib/bbvars.py                   | 2 +-
 scripts/contrib/devtool-stress.py           | 2 +-
 scripts/contrib/list-packageconfig-flags.py | 2 +-
 scripts/contrib/verify-homepage.py          | 2 +-
 scripts/cp-noerror                          | 2 +-
 scripts/gen-lockedsig-cache                 | 2 +-
 scripts/lib/devtool/__init__.py             | 2 +-
 scripts/oe-publish-sdk                      | 2 +-
 scripts/oe-trim-schemas                     | 2 +-
 scripts/oepydevshell-internal.py            | 2 +-
 scripts/opkg-query-helper.py                | 2 +-
 scripts/pythondeps                          | 2 +-
 scripts/relocate_sdk.py                     | 2 +-
 scripts/send-error-report                   | 2 +-
 scripts/swabber-strace-attach               | 2 +-
 scripts/sysroot-relativelinks.py            | 2 +-
 scripts/test-remote-image                   | 2 +-
 scripts/tiny/dirsize.py                     | 2 +-
 scripts/tiny/ksize.py                       | 2 +-
 scripts/yocto-bsp                           | 2 +-
 scripts/yocto-kernel                        | 2 +-
 scripts/yocto-layer                         | 2 +-
 26 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/scripts/bitbake-whatchanged b/scripts/bitbake-whatchanged
index 55b61d0..0207777 100755
--- a/scripts/bitbake-whatchanged
+++ b/scripts/bitbake-whatchanged
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 
diff --git a/scripts/buildhistory-collect-srcrevs b/scripts/buildhistory-collect-srcrevs
index 79d2657..8a03580 100755
--- a/scripts/buildhistory-collect-srcrevs
+++ b/scripts/buildhistory-collect-srcrevs
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Collects the recorded SRCREV values from buildhistory and reports on them
 #
diff --git a/scripts/cleanup-workdir b/scripts/cleanup-workdir
index 0b2cf99..86eae37 100755
--- a/scripts/cleanup-workdir
+++ b/scripts/cleanup-workdir
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Copyright (c) 2012 Wind River Systems, Inc.
 #
diff --git a/scripts/combo-layer b/scripts/combo-layer
index eaa7f5a..8f57ba5 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
diff --git a/scripts/contrib/bbvars.py b/scripts/contrib/bbvars.py
index b865dd1..d8d0594 100755
--- a/scripts/contrib/bbvars.py
+++ b/scripts/contrib/bbvars.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/scripts/contrib/devtool-stress.py b/scripts/contrib/devtool-stress.py
index 8cf92ca..2723491 100755
--- a/scripts/contrib/devtool-stress.py
+++ b/scripts/contrib/devtool-stress.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # devtool stress tester
 #
diff --git a/scripts/contrib/list-packageconfig-flags.py b/scripts/contrib/list-packageconfig-flags.py
index 22d0c49..b8327e4 100755
--- a/scripts/contrib/list-packageconfig-flags.py
+++ b/scripts/contrib/list-packageconfig-flags.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/scripts/contrib/verify-homepage.py b/scripts/contrib/verify-homepage.py
index 18bb15b..61a047c4 100755
--- a/scripts/contrib/verify-homepage.py
+++ b/scripts/contrib/verify-homepage.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # This script can be used to verify HOMEPAGE values for all recipes in
 # the current configuration.
diff --git a/scripts/cp-noerror b/scripts/cp-noerror
index d8be677..35eb211 100755
--- a/scripts/cp-noerror
+++ b/scripts/cp-noerror
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Allow copying of $1 to $2 but if files in $1 disappear during the copy operation,
 # don't error.
diff --git a/scripts/gen-lockedsig-cache b/scripts/gen-lockedsig-cache
index 0986a21..26e9b63 100755
--- a/scripts/gen-lockedsig-cache
+++ b/scripts/gen-lockedsig-cache
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import os
 import sys
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index 7005363..77b1fd9 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Development tool - utility functions for plugins
 #
diff --git a/scripts/oe-publish-sdk b/scripts/oe-publish-sdk
index 55872f2..4fe8974 100755
--- a/scripts/oe-publish-sdk
+++ b/scripts/oe-publish-sdk
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # OpenEmbedded SDK publishing tool
 
diff --git a/scripts/oe-trim-schemas b/scripts/oe-trim-schemas
index 29fb3a1..66a1b8d 100755
--- a/scripts/oe-trim-schemas
+++ b/scripts/oe-trim-schemas
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/env python3
 
 import sys
 try:
diff --git a/scripts/oepydevshell-internal.py b/scripts/oepydevshell-internal.py
index 2566606..7761f66 100755
--- a/scripts/oepydevshell-internal.py
+++ b/scripts/oepydevshell-internal.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import os
 import sys
diff --git a/scripts/opkg-query-helper.py b/scripts/opkg-query-helper.py
index 2fb1a78..ce89491 100755
--- a/scripts/opkg-query-helper.py
+++ b/scripts/opkg-query-helper.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # OpenEmbedded opkg query helper utility
 #
diff --git a/scripts/pythondeps b/scripts/pythondeps
index f1e6452..590b976 100755
--- a/scripts/pythondeps
+++ b/scripts/pythondeps
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Determine dependencies of python scripts or available python modules in a search path.
 #
diff --git a/scripts/relocate_sdk.py b/scripts/relocate_sdk.py
index 99fca86..e47b4d9 100755
--- a/scripts/relocate_sdk.py
+++ b/scripts/relocate_sdk.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (c) 2012 Intel Corporation
 #
diff --git a/scripts/send-error-report b/scripts/send-error-report
index 122ce32..ff23552 100755
--- a/scripts/send-error-report
+++ b/scripts/send-error-report
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Sends an error report (if the report-error class was enabled) to a
 # remote server.
diff --git a/scripts/swabber-strace-attach b/scripts/swabber-strace-attach
index f258987..e8f3258 100755
--- a/scripts/swabber-strace-attach
+++ b/scripts/swabber-strace-attach
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 import subprocess
diff --git a/scripts/sysroot-relativelinks.py b/scripts/sysroot-relativelinks.py
index ac26367..e44eba2 100755
--- a/scripts/sysroot-relativelinks.py
+++ b/scripts/sysroot-relativelinks.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import sys
 import os
 
diff --git a/scripts/test-remote-image b/scripts/test-remote-image
index 698948b..27b1cae 100755
--- a/scripts/test-remote-image
+++ b/scripts/test-remote-image
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Copyright (c) 2014 Intel Corporation
 #
diff --git a/scripts/tiny/dirsize.py b/scripts/tiny/dirsize.py
index 0b4fbd1..ddccc5a 100755
--- a/scripts/tiny/dirsize.py
+++ b/scripts/tiny/dirsize.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (c) 2011, Intel Corporation.
 # All rights reserved.
diff --git a/scripts/tiny/ksize.py b/scripts/tiny/ksize.py
index 587c930..b9d2b19 100755
--- a/scripts/tiny/ksize.py
+++ b/scripts/tiny/ksize.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # Copyright (c) 2011, Intel Corporation.
 # All rights reserved.
diff --git a/scripts/yocto-bsp b/scripts/yocto-bsp
index ce30e55..6a422c3 100755
--- a/scripts/yocto-bsp
+++ b/scripts/yocto-bsp
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
diff --git a/scripts/yocto-kernel b/scripts/yocto-kernel
index daaad07..fd97cb7 100755
--- a/scripts/yocto-kernel
+++ b/scripts/yocto-kernel
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
diff --git a/scripts/yocto-layer b/scripts/yocto-layer
index 356972e..a5267f2 100755
--- a/scripts/yocto-layer
+++ b/scripts/yocto-layer
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # ex:ts=4:sw=4:sts=4:et
 # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
 #
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH 01/16] scripts: python3: convert iterables to lists
  2016-06-02 10:12 ` [PATCH 01/16] scripts: python3: convert iterables to lists Ed Bartosh
@ 2016-06-02 13:55   ` Leonardo Sandoval
  2016-06-02 15:04     ` Ed Bartosh
  0 siblings, 1 reply; 20+ messages in thread
From: Leonardo Sandoval @ 2016-06-02 13:55 UTC (permalink / raw)
  To: Ed Bartosh, openembedded-core

Ed,

what is the reason for this change?


On 06/02/2016 05:12 AM, Ed Bartosh wrote:
> Converted return value of items() keys() and values() to
> lists when dictionary is modified in the loop and when
> the result is added to the list.
>
> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
> ---
>   scripts/bitbake-whatchanged                      | 6 +++---
>   scripts/combo-layer                              | 2 +-
>   scripts/lib/devtool/build.py                     | 2 +-
>   scripts/lib/devtool/standard.py                  | 4 ++--
>   scripts/lib/recipetool/create_buildsys.py        | 2 +-
>   scripts/lib/recipetool/create_buildsys_python.py | 6 +++---
>   scripts/oe-pkgdata-util                          | 2 +-
>   7 files changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/scripts/bitbake-whatchanged b/scripts/bitbake-whatchanged
> index a20adb2..b05aead 100755
> --- a/scripts/bitbake-whatchanged
> +++ b/scripts/bitbake-whatchanged
> @@ -120,7 +120,7 @@ def print_added(d_new = None, d_old = None):
>       Print the newly added tasks
>       """
>       added = {}
> -    for k in d_new.keys():
> +    for k in list(d_new.keys()):
>           if k not in d_old:
>               # Add the new one to added dict, and remove it from
>               # d_new, so the remaining ones are the changed ones
> @@ -155,7 +155,7 @@ def print_vrchanged(d_new = None, d_old = None, vr = None):
>       """
>       pvchanged = {}
>       counter = 0
> -    for k in d_new.keys():
> +    for k in list(d_new.keys()):
>           if d_new.get(k).get(vr) != d_old.get(k).get(vr):
>               counter += 1
>               pn, task = split_pntask(k)
> @@ -279,7 +279,7 @@ Note:
>   
>           # Remove the same one from both stamps.
>           cnt_unchanged = 0
> -        for k in new_dict.keys():
> +        for k in list(new_dict.keys()):
>               if k in old_dict:
>                   cnt_unchanged += 1
>                   del(new_dict[k])
> diff --git a/scripts/combo-layer b/scripts/combo-layer
> index 234d9e4..7c41f92 100755
> --- a/scripts/combo-layer
> +++ b/scripts/combo-layer
> @@ -1186,7 +1186,7 @@ def update_with_history(conf, components, revisions, repos):
>           msg = conf_commit_msg(conf, components)
>           new_tree = runcmd("git write-tree", **wargs).strip()
>           new_rev = runcmd("git commit-tree".split() +
> -                         add_p([head] + additional_heads.keys()) +
> +                         add_p([head] + list(additional_heads.keys())) +
>                            ["-m", msg, new_tree],
>                            **wargs).strip()
>           # And done! This is the first time we change the HEAD in the actual work tree.
> diff --git a/scripts/lib/devtool/build.py b/scripts/lib/devtool/build.py
> index 48f6fe1..6be549d 100644
> --- a/scripts/lib/devtool/build.py
> +++ b/scripts/lib/devtool/build.py
> @@ -27,7 +27,7 @@ logger = logging.getLogger('devtool')
>   
>   
>   def _set_file_values(fn, values):
> -    remaining = values.keys()
> +    remaining = list(values.keys())
>   
>       def varfunc(varname, origvalue, op, newlines):
>           newvalue = values.get(varname, origvalue)
> diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
> index 08153c6..a2516d6 100644
> --- a/scripts/lib/devtool/standard.py
> +++ b/scripts/lib/devtool/standard.py
> @@ -998,7 +998,7 @@ def _export_local_files(srctree, rd, destdir):
>           bb.process.run(['git', 'checkout', tree, '--', '.'], cwd=srctree,
>                           env=dict(os.environ, GIT_WORK_TREE=destdir,
>                                    GIT_INDEX_FILE=tmp_index))
> -        new_set = _git_ls_tree(srctree, tree, True).keys()
> +        new_set = list(_git_ls_tree(srctree, tree, True).keys())
>       elif os.path.isdir(local_files_dir):
>           # If not tracked by Git, just copy from working copy
>           new_set = _ls_tree(os.path.join(srctree, 'oe-local-files'))
> @@ -1309,7 +1309,7 @@ def reset(args, config, basepath, workspace):
>           raise DevtoolError("Recipe must be specified, or specify -a/--all to "
>                              "reset all recipes")
>       if args.all:
> -        recipes = workspace.keys()
> +        recipes = list(workspace.keys())
>       else:
>           recipes = [args.recipename]
>   
> diff --git a/scripts/lib/recipetool/create_buildsys.py b/scripts/lib/recipetool/create_buildsys.py
> index de3d9ae..78ae4bc 100644
> --- a/scripts/lib/recipetool/create_buildsys.py
> +++ b/scripts/lib/recipetool/create_buildsys.py
> @@ -682,7 +682,7 @@ class AutotoolsRecipeHandler(RecipeHandler):
>                   process_macro(in_keyword, partial)
>   
>           if extravalues:
> -            for k,v in extravalues.items():
> +            for k,v in list(extravalues.items()):
>                   if v:
>                       if v.startswith('$') or v.startswith('@') or v.startswith('%'):
>                           del extravalues[k]
> diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
> index 55cce0e..aff13cf 100644
> --- a/scripts/lib/recipetool/create_buildsys_python.py
> +++ b/scripts/lib/recipetool/create_buildsys_python.py
> @@ -361,7 +361,7 @@ class PythonRecipeHandler(RecipeHandler):
>   
>           # Naive mapping of setup() arguments to PKG-INFO field names
>           for d in [info, non_literals]:
> -            for key, value in d.items():
> +            for key, value in list(d.items()):
>                   new_key = _map(key)
>                   if new_key != key:
>                       del d[key]
> @@ -443,7 +443,7 @@ class PythonRecipeHandler(RecipeHandler):
>                   elif new_value != value:
>                       info[variable] = new_value
>               elif hasattr(value, 'items'):
> -                for dkey, dvalue in value.items():
> +                for dkey, dvalue in list(value.items()):
>                       new_list = []
>                       for pos, a_value in enumerate(dvalue):
>                           new_value = replace_value(search, replace, a_value)
> @@ -608,7 +608,7 @@ def gather_setup_info(fileobj):
>       visitor.visit(parsed)
>   
>       non_literals, extensions = {}, []
> -    for key, value in visitor.keywords.items():
> +    for key, value in list(visitor.keywords.items()):
>           if key == 'ext_modules':
>               if isinstance(value, list):
>                   for ext in value:
> diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
> index b39d9b5..b16ecc9 100755
> --- a/scripts/oe-pkgdata-util
> +++ b/scripts/oe-pkgdata-util
> @@ -240,7 +240,7 @@ def lookup_pkg(args):
>           sys.exit(1)
>   
>       if args.reverse:
> -        items = mappings.values()
> +        items = list(mappings.values())
>       else:
>           items = []
>           for pkg in pkgs:



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 01/16] scripts: python3: convert iterables to lists
  2016-06-02 13:55   ` Leonardo Sandoval
@ 2016-06-02 15:04     ` Ed Bartosh
  0 siblings, 0 replies; 20+ messages in thread
From: Ed Bartosh @ 2016-06-02 15:04 UTC (permalink / raw)
  To: Leonardo Sandoval; +Cc: openembedded-core

On Thu, Jun 02, 2016 at 08:55:21AM -0500, Leonardo Sandoval wrote:
> Ed,
> 
> what is the reason for this change?
> 
The reason is that in python 3 dict.keys() returns iterator unlike in
pyton 2 where it returns list. If dictionary is changed inside the loop
(which is the case here) "RuntimeError: dictionary changed size during iteration" will be raised.

Another case is when result of dict.keys() is added to the list. This
kind of operations would raise TypeError: unsupported operand type(s)
for +: 'dict_keys' and 'list'


> 
> On 06/02/2016 05:12 AM, Ed Bartosh wrote:
> >Converted return value of items() keys() and values() to
> >lists when dictionary is modified in the loop and when
> >the result is added to the list.
> >
> >Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
> >---
> >  scripts/bitbake-whatchanged                      | 6 +++---
> >  scripts/combo-layer                              | 2 +-
> >  scripts/lib/devtool/build.py                     | 2 +-
> >  scripts/lib/devtool/standard.py                  | 4 ++--
> >  scripts/lib/recipetool/create_buildsys.py        | 2 +-
> >  scripts/lib/recipetool/create_buildsys_python.py | 6 +++---
> >  scripts/oe-pkgdata-util                          | 2 +-
> >  7 files changed, 12 insertions(+), 12 deletions(-)
> >
> >diff --git a/scripts/bitbake-whatchanged b/scripts/bitbake-whatchanged
> >index a20adb2..b05aead 100755
> >--- a/scripts/bitbake-whatchanged
> >+++ b/scripts/bitbake-whatchanged
> >@@ -120,7 +120,7 @@ def print_added(d_new = None, d_old = None):
> >      Print the newly added tasks
> >      """
> >      added = {}
> >-    for k in d_new.keys():
> >+    for k in list(d_new.keys()):
> >          if k not in d_old:
> >              # Add the new one to added dict, and remove it from
> >              # d_new, so the remaining ones are the changed ones
> >@@ -155,7 +155,7 @@ def print_vrchanged(d_new = None, d_old = None, vr = None):
> >      """
> >      pvchanged = {}
> >      counter = 0
> >-    for k in d_new.keys():
> >+    for k in list(d_new.keys()):
> >          if d_new.get(k).get(vr) != d_old.get(k).get(vr):
> >              counter += 1
> >              pn, task = split_pntask(k)
> >@@ -279,7 +279,7 @@ Note:
> >          # Remove the same one from both stamps.
> >          cnt_unchanged = 0
> >-        for k in new_dict.keys():
> >+        for k in list(new_dict.keys()):
> >              if k in old_dict:
> >                  cnt_unchanged += 1
> >                  del(new_dict[k])
> >diff --git a/scripts/combo-layer b/scripts/combo-layer
> >index 234d9e4..7c41f92 100755
> >--- a/scripts/combo-layer
> >+++ b/scripts/combo-layer
> >@@ -1186,7 +1186,7 @@ def update_with_history(conf, components, revisions, repos):
> >          msg = conf_commit_msg(conf, components)
> >          new_tree = runcmd("git write-tree", **wargs).strip()
> >          new_rev = runcmd("git commit-tree".split() +
> >-                         add_p([head] + additional_heads.keys()) +
> >+                         add_p([head] + list(additional_heads.keys())) +
> >                           ["-m", msg, new_tree],
> >                           **wargs).strip()
> >          # And done! This is the first time we change the HEAD in the actual work tree.
> >diff --git a/scripts/lib/devtool/build.py b/scripts/lib/devtool/build.py
> >index 48f6fe1..6be549d 100644
> >--- a/scripts/lib/devtool/build.py
> >+++ b/scripts/lib/devtool/build.py
> >@@ -27,7 +27,7 @@ logger = logging.getLogger('devtool')
> >  def _set_file_values(fn, values):
> >-    remaining = values.keys()
> >+    remaining = list(values.keys())
> >      def varfunc(varname, origvalue, op, newlines):
> >          newvalue = values.get(varname, origvalue)
> >diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
> >index 08153c6..a2516d6 100644
> >--- a/scripts/lib/devtool/standard.py
> >+++ b/scripts/lib/devtool/standard.py
> >@@ -998,7 +998,7 @@ def _export_local_files(srctree, rd, destdir):
> >          bb.process.run(['git', 'checkout', tree, '--', '.'], cwd=srctree,
> >                          env=dict(os.environ, GIT_WORK_TREE=destdir,
> >                                   GIT_INDEX_FILE=tmp_index))
> >-        new_set = _git_ls_tree(srctree, tree, True).keys()
> >+        new_set = list(_git_ls_tree(srctree, tree, True).keys())
> >      elif os.path.isdir(local_files_dir):
> >          # If not tracked by Git, just copy from working copy
> >          new_set = _ls_tree(os.path.join(srctree, 'oe-local-files'))
> >@@ -1309,7 +1309,7 @@ def reset(args, config, basepath, workspace):
> >          raise DevtoolError("Recipe must be specified, or specify -a/--all to "
> >                             "reset all recipes")
> >      if args.all:
> >-        recipes = workspace.keys()
> >+        recipes = list(workspace.keys())
> >      else:
> >          recipes = [args.recipename]
> >diff --git a/scripts/lib/recipetool/create_buildsys.py b/scripts/lib/recipetool/create_buildsys.py
> >index de3d9ae..78ae4bc 100644
> >--- a/scripts/lib/recipetool/create_buildsys.py
> >+++ b/scripts/lib/recipetool/create_buildsys.py
> >@@ -682,7 +682,7 @@ class AutotoolsRecipeHandler(RecipeHandler):
> >                  process_macro(in_keyword, partial)
> >          if extravalues:
> >-            for k,v in extravalues.items():
> >+            for k,v in list(extravalues.items()):
> >                  if v:
> >                      if v.startswith('$') or v.startswith('@') or v.startswith('%'):
> >                          del extravalues[k]
> >diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
> >index 55cce0e..aff13cf 100644
> >--- a/scripts/lib/recipetool/create_buildsys_python.py
> >+++ b/scripts/lib/recipetool/create_buildsys_python.py
> >@@ -361,7 +361,7 @@ class PythonRecipeHandler(RecipeHandler):
> >          # Naive mapping of setup() arguments to PKG-INFO field names
> >          for d in [info, non_literals]:
> >-            for key, value in d.items():
> >+            for key, value in list(d.items()):
> >                  new_key = _map(key)
> >                  if new_key != key:
> >                      del d[key]
> >@@ -443,7 +443,7 @@ class PythonRecipeHandler(RecipeHandler):
> >                  elif new_value != value:
> >                      info[variable] = new_value
> >              elif hasattr(value, 'items'):
> >-                for dkey, dvalue in value.items():
> >+                for dkey, dvalue in list(value.items()):
> >                      new_list = []
> >                      for pos, a_value in enumerate(dvalue):
> >                          new_value = replace_value(search, replace, a_value)
> >@@ -608,7 +608,7 @@ def gather_setup_info(fileobj):
> >      visitor.visit(parsed)
> >      non_literals, extensions = {}, []
> >-    for key, value in visitor.keywords.items():
> >+    for key, value in list(visitor.keywords.items()):
> >          if key == 'ext_modules':
> >              if isinstance(value, list):
> >                  for ext in value:
> >diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
> >index b39d9b5..b16ecc9 100755
> >--- a/scripts/oe-pkgdata-util
> >+++ b/scripts/oe-pkgdata-util
> >@@ -240,7 +240,7 @@ def lookup_pkg(args):
> >          sys.exit(1)
> >      if args.reverse:
> >-        items = mappings.values()
> >+        items = list(mappings.values())
> >      else:
> >          items = []
> >          for pkg in pkgs:
> 

-- 
--
Regards,
Ed


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 12/16] engine: python3: replace iteritems() -> items()
  2016-06-02 10:12 ` [PATCH 12/16] engine: python3: replace iteritems() -> items() Ed Bartosh
@ 2016-06-06 17:34   ` Ibarra Lopez, Humberto
  0 siblings, 0 replies; 20+ messages in thread
From: Ibarra Lopez, Humberto @ 2016-06-06 17:34 UTC (permalink / raw)
  To: Ed Bartosh, openembedded-core

This patch introduced a syntax error. Sent a patch to fix it http://lists.openembedded.org/pipermail/openembedded-core/2016-June/122522.html

Humberto

> -----Original Message-----
> From: openembedded-core-bounces@lists.openembedded.org
> [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf
> Of Ed Bartosh
> Sent: Thursday, June 2, 2016 5:13 AM
> To: openembedded-core@lists.openembedded.org
> Subject: [OE-core] [PATCH 12/16] engine: python3: replace iteritems() ->
> items()
> 
> Used items() as iteritems() doesn't exist in python 3.
> 
> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
> ---
>  scripts/lib/bsp/engine.py | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py index
> 2b87d33..3ed90fa 100644
> --- a/scripts/lib/bsp/engine.py
> +++ b/scripts/lib/bsp/engine.py
> @@ -1385,7 +1385,7 @@ def gen_supplied_property_vals(properties,
> program_lines):
>      Generate user-specified entries for input values instead of
>      generating input prompts.
>      """
> -    for name, val in properties.iteritems():
> +    for name, val in properties.items():
>          program_line = name + " = \"" + val + "\""
>          program_lines.append(program_line)
> 
> @@ -1621,7 +1621,7 @@ def print_dict(items, indent = 0):
>      """
>      Print the values in a possibly nested dictionary.
>      """
> -    for key, val in items.iteritems():
> +    for key, val in items.items():
>          print("    "*indent + "\"%s\" :" % key)
>          if type(val) == dict:
>              print("{")
> @@ -1654,7 +1654,7 @@ def get_properties(input_lines):
>          props = line.props
>          item = {}
>          name = props["name"]
> -        for key, val in props.items():
> +        for key, val props.items():
>              if not key == "name":
>                  item[key] = val
>          properties[name] = item
> --
> 2.1.4
> 
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2016-06-06 17:34 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-02 10:12 [PATCH 00/16] porting scripts to python3 Ed Bartosh
2016-06-02 10:12 ` [PATCH 01/16] scripts: python3: convert iterables to lists Ed Bartosh
2016-06-02 13:55   ` Leonardo Sandoval
2016-06-02 15:04     ` Ed Bartosh
2016-06-02 10:12 ` [PATCH 02/16] scripts: python3: use new style except statement Ed Bartosh
2016-06-02 10:12 ` [PATCH 03/16] scripts: python3: rename raw_input to input Ed Bartosh
2016-06-02 10:12 ` [PATCH 04/16] scripts: python3: fix urllib imports Ed Bartosh
2016-06-02 10:12 ` [PATCH 05/16] ksize.py: python3: get rid of strings.join Ed Bartosh
2016-06-02 10:12 ` [PATCH 06/16] scripts: python3: get rid of __future__ imports Ed Bartosh
2016-06-02 10:12 ` [PATCH 07/16] scripts: python3: use new metaclass syntax Ed Bartosh
2016-06-02 10:12 ` [PATCH 08/16] combo-layer: python3: import reduce Ed Bartosh
2016-06-02 10:12 ` [PATCH 09/16] engine.py: python3: rename sys.maxint to sys.maxsize Ed Bartosh
2016-06-02 10:12 ` [PATCH 10/16] scripts: python3: use explicit relative imports Ed Bartosh
2016-06-02 10:12 ` [PATCH 11/16] scripts: python3: replace exec statement with builtin Ed Bartosh
2016-06-02 10:12 ` [PATCH 12/16] engine: python3: replace iteritems() -> items() Ed Bartosh
2016-06-06 17:34   ` Ibarra Lopez, Humberto
2016-06-02 10:12 ` [PATCH 13/16] dirsize: python3: fix TypeError: unorderable types Ed Bartosh
2016-06-02 10:13 ` [PATCH 14/16] scripts: python3: decode subprocess output Ed Bartosh
2016-06-02 10:13 ` [PATCH 15/16] combo-layer: python3: use tempfile.TemporaryFile Ed Bartosh
2016-06-02 10:13 ` [PATCH 16/16] scripts: python3: change python to python3 in shebang Ed Bartosh

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.