[OE-core] [PATCH 1/1] useradd-staticids.bbclass: Make sure opened files are closed

George McCollister george.mccollister at gmail.com
Thu Jun 16 13:07:25 UTC 2016


On Thu, Jun 9, 2016 at 6:07 PM, Peter Kjellerstedt
<peter.kjellerstedt at axis.com> wrote:
> This avoids warnings about unclosed files with Python 3.
>
> Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
> ---
>  meta/classes/useradd-staticids.bbclass | 30 +++++++++++++++++-------------
>  1 file changed, 17 insertions(+), 13 deletions(-)
>
> diff --git a/meta/classes/useradd-staticids.bbclass b/meta/classes/useradd-staticids.bbclass
> index a9b506d..440c0e3 100644
> --- a/meta/classes/useradd-staticids.bbclass
> +++ b/meta/classes/useradd-staticids.bbclass
> @@ -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]]))
This is still broken for me. As far as I can tell itertools.imap
doesn't exist in Python 3.

> +            except IOError as e:
> +                if e.errno == errno.ENOENT:
> +                    pass
>
>          return id_table
>
> --
> 2.8.3
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list