From: "Carsey, Jaben" <jaben.carsey@intel.com>
To: Laszlo Ersek <lersek@redhat.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Gao, Liming" <liming.gao@intel.com>,
"Zhu, Yonghong" <yonghong.zhu@intel.com>
Subject: Re: [PATCH v1 1/1] BaseTools: Ecc - add dict for config file to internal translation
Date: Fri, 4 May 2018 16:47:41 +0000 [thread overview]
Message-ID: <CB6E33457884FA40993F35157061515CA3CEDEA3@FMSMSX103.amr.corp.intel.com> (raw)
In-Reply-To: <d96cca9b-58ee-483d-6914-85433d72f81f@redhat.com>
I worked up and sent out a v2.
I think that if we only use the translation when acing the dict, we can leave the rest of the code as it.
> -----Original Message-----
> From: Laszlo Ersek [mailto:lersek@redhat.com]
> Sent: Friday, May 04, 2018 9:20 AM
> To: Carsey, Jaben <jaben.carsey@intel.com>; edk2-devel@lists.01.org
> Cc: Gao, Liming <liming.gao@intel.com>; Zhu, Yonghong
> <yonghong.zhu@intel.com>
> Subject: Re: [PATCH v1 1/1] BaseTools: Ecc - add dict for config file to internal
> translation
> Importance: High
>
> On 05/04/18 18:01, Jaben Carsey wrote:
> > Cc: Liming Gao <liming.gao@intel.com>
> > Cc: Yonghong Zhu <yonghong.zhu@intel.com>
> > Cc: Laszlo Ersek <lersek@redhat.com>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
> > ---
> > BaseTools/Source/Python/Ecc/Configuration.py | 8 +++++++-
> > 1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/BaseTools/Source/Python/Ecc/Configuration.py
> b/BaseTools/Source/Python/Ecc/Configuration.py
> > index b5b583be8c4a..8bc6975c3b41 100644
> > --- a/BaseTools/Source/Python/Ecc/Configuration.py
> > +++ b/BaseTools/Source/Python/Ecc/Configuration.py
> > @@ -1,7 +1,7 @@
> > ## @file
> > # This file is used to define class Configuration
> > #
> > -# Copyright (c) 2008 - 2017, Intel Corporation. All rights reserved.<BR>
> > +# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
> > # This program and the accompanying materials
> > # are licensed and made available under the terms and conditions of the
> BSD License
> > # which accompanies this distribution. The full text of the license may be
> found at
> > @@ -20,6 +20,10 @@ from Common.DataType import *
> > from Common.String import *
> > from Common.LongFilePathSupport import OpenLongFilePath as open
> >
> > +_ConfigFileToInternalTranslation = {
> > + "ModifierList":"ModifierSet"
> > + }
> > +
> > ## Configuration
> > #
> > # This class is used to define all items in configuration file
> > @@ -297,6 +301,8 @@ class Configuration(object):
> > Line = CleanString(Line)
> > if Line != '':
> > List = GetSplitValueList(Line, TAB_EQUAL_SPLIT)
> > + if List[0] in _ConfigFileToInternalTranslation:
> > + List[0] = _ConfigFileToInternalTranslation[List[0]]
> > if List[0] not in self.__dict__:
> > ErrorMsg = "Invalid configuration option '%s' was found" % List[0]
> > EdkLogger.error("Ecc", EdkLogger.ECC_ERROR, ErrorMsg, File =
> Filepath, Line = LineNo)
> >
>
> I have some comments:
>
> (1) Can you please give a short summary in the commit message why this
> patch is needed?
>
> I suggest we also reference the commit that introduced the problem:
> eece4292acc80.
>
> (2) I think at this point we have only a handful of keywords / config
> options that we recognize. Is that right? Because, I'd like to suggest
> the following:
>
> - add them all to the dictionary (and they all will be identity-mapped
> except for "ModifierList":"ModifierSet"),
> - always go through the dict; don't make it optional.
>
> Reasons:
> - if someone introduces a new option, they won't be able to parse it
> without adding it first to the dict as well (with identity mapping),
> - and keeping everything in the dict all the time is good because if
> someone renames something else next time, their text seach will
> immediately turn up the mapping as well, and they won't forget to update
> it right off the bat. It's easier to update an occurrence that your
> search finds than remembering to add a new translation.
>
> (3) In connection with (2), I'm not really a fan of translating List[0]
> in-place. I think we should have a separate variable for original and
> translated name.
>
> ... In fact, I think this patch is technically incorrect; it translates
> ModifierList to ModifierSet in-place, which might be good for accessing
> the renamed object member; however, the option check still -- correctly
> -- uses the public option name:
>
> if List[0] == 'ModifierList':
> List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)
>
> and now it wouldn't match.
>
> So even if we do translate List[0] in-place, we'll have to preserve the
> original option name that was read from the file, for option matching.
>
> Thanks
> Laszlo
prev parent reply other threads:[~2018-05-04 16:47 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1525449622.git.jaben.carsey@intel.com>
2018-05-04 16:01 ` [PATCH v1 1/1] BaseTools: Ecc - add dict for config file to internal translation Jaben Carsey
2018-05-04 16:20 ` Laszlo Ersek
2018-05-04 16:47 ` Carsey, Jaben [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CB6E33457884FA40993F35157061515CA3CEDEA3@FMSMSX103.amr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox