Make useradd-staticids.bbclass Python 3 compatible
cover Make useradd-staticids.bbclass Python 3 compatible
Avoid warnings with Python 3 due to files that are not closed in useradd-staticids.bbclass.
//Peter
The following changes since commit 40e789d1fee7f0df2d23230fff38325119ad2935:
bitbake: lib/bb/main.py: Fix use of BBPOSTCONF and BBPRECONF (2016-06-09 18:00:58 +0100)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib pkj/useradd-staticids-py3
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=pkj/useradd-staticids-py3
Peter Kjellerstedt (1):
useradd-staticids.bbclass: Make sure opened files are closed
meta/classes/useradd-staticids.bbclass | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-)
Signature · 1 line
2.8.3
PATCH 1/1 useradd-staticids.bbclass: Make sure opened files are closed
This avoids warnings about unclosed files with Python 3.
--- meta/classes/useradd-staticids.bbclass | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-)
meta/classes/useradd-staticids.bbclass +17 -13
@@ -4,6 +4,7 @@ def update_useradd_static_config(d): import argparse import itertools import re + import errno class myArgumentParser( argparse.ArgumentParser ): def _print_message(self, message, file=None):
@@ -30,19 +31,22 @@ def update_useradd_static_config(d): are set).""" id_table = dict() for conf in file_list.split(): - if os.path.exists(conf): - f = open(conf, "r") - for line in f: - if line.startswith('#'): - continue - # Make sure there always are at least exp_fields elements in - # the field list. This allows for leaving out trailing - # colons in the files. - fields = list_extend(line.rstrip().split(":"), exp_fields) - if fields[0] not in id_table: - id_table[fields[0]] = fields - else: - id_table[fields[0]] = list(itertools.imap(lambda x, y: x or y, fields, id_table[fields[0]])) + try: + with open(conf, "r") as f: + for line in f: + if line.startswith('#'): + continue + # Make sure there always are at least exp_fields + # elements in the field list. This allows for leaving + # out trailing colons in the files. + fields = list_extend(line.rstrip().split(":"), exp_fields) + if fields[0] not in id_table: + id_table[fields[0]] = fields + else: + id_table[fields[0]] = list(itertools.imap(lambda x, y: x or y, fields, id_table[fields[0]])) + except IOError as e: + if e.errno == errno.ENOENT: + pass return id_table
Signature · 1 line
2.8.3
Re: [PATCH 1/1] useradd-staticids.bbclass: Make sure opened files are closed
Quoted 39 lines · Peter Kjellerstedt
This avoids warnings about unclosed files with Python 3.
Signed-off-by Peter Kjellerstedt <[email protected]>--- meta/classes/useradd-staticids.bbclass | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-)meta/classes/useradd-staticids.bbclass +4
-13@@ -4,6 +4,7 @@ def update_useradd_static_config(d): import argparse import itertools import re + import errno class myArgumentParser( argparse.ArgumentParser ): def _print_message(self, message, file=None):@@ -30,19 +31,22 @@ def update_useradd_static_config(d): are set).""" id_table = dict() for conf in file_list.split(): - if os.path.exists(conf): - f = open(conf, "r") - for line in f: - if line.startswith('#'): - continue - # Make sure there always are at least exp_fields elements in - # the field list. This allows for leaving out trailing - # colons in the files. - fields = list_extend(line.rstrip().split(":"), exp_fields) - if fields[0] not in id_table: - id_table[fields[0]] = fields - else: - id_table[fields[0]] = list(itertools.imap(lambda x, y: x or y, fields, id_table[fields[0]])) + try: + with open(conf, "r") as f: + for line in f:
meta/classes/useradd-staticids.bbclass def update_useradd_static_config(d): · line 46
Quoted 10 lines
meta/classes/useradd-staticids.bbclass +10
-0+ if line.startswith('#'): + continue + # Make sure there always are at least exp_fields + # elements in the field list. This allows for leaving + # out trailing colons in the files. + fields = list_extend(line.rstrip().split(":"), exp_fields) + if fields[0] not in id_table: + id_table[fields[0]] = fields + else: + id_table[fields[0]] = list(itertools.imap(lambda x, y: x or y, fields, id_table[fields[0]]))
This is still broken for me. As far as I can tell itertools.imap doesn't exist in Python 3.
Quoted 14 lines
meta/classes/useradd-staticids.bbclass +3
-1+ except IOError as e: + if e.errno == errno.ENOENT: + pass return id_table --2.8.3
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core