public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Carsey, Jaben" <jaben.carsey@intel.com>
To: Laszlo Ersek <lersek@redhat.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	"Gao, Liming" <liming.gao@intel.com>
Subject: Re: [PATCH v1 17/27] BaseTools: DataType - cleanup list constants
Date: Fri, 4 May 2018 14:18:48 +0000	[thread overview]
Message-ID: <CB6E33457884FA40993F35157061515CA3CEDA4A@FMSMSX103.amr.corp.intel.com> (raw)
In-Reply-To: <814bebab-3b06-ce21-4fbb-326cc0a49121@redhat.com>

Laszlo,

Wow.  I thought I had tested, but clearly I missed that.

Do you think we just revert back the name change short term?  I agree that mixing internal data structure names and names in the config file seems wrong, I don’t know the ROI for separation.  Maybe use a dict to translate?

-Jaben

> -----Original Message-----
> From: Laszlo Ersek [mailto:lersek@redhat.com]
> Sent: Friday, May 04, 2018 4:15 AM
> To: Carsey, Jaben <jaben.carsey@intel.com>
> Cc: edk2-devel@lists.01.org; Gao, Liming <liming.gao@intel.com>
> Subject: Re: [edk2] [PATCH v1 17/27] BaseTools: DataType - cleanup list
> constants
> Importance: High
> 
> Hi,
> 
> On 04/20/18 17:51, Jaben Carsey wrote:
> > remove unused ones
> > convert lists used for membership testing to sets
> > use shared ones not local ones
> >
> > Cc: Liming Gao <liming.gao@intel.com>
> > Cc: Yonghong Zhu <yonghong.zhu@intel.com>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
> > ---
> >  BaseTools/Source/Python/AutoGen/AutoGen.py           | 32 ++++++++------
> ---
> >  BaseTools/Source/Python/AutoGen/GenC.py              | 36 ++++++++--------
> ----
> >  BaseTools/Source/Python/AutoGen/GenPcdDb.py          |  4 +--
> >  BaseTools/Source/Python/Common/DataType.py           | 29 ++++++--------
> --
> >  BaseTools/Source/Python/Ecc/Configuration.py         |  2 +-
> >  BaseTools/Source/Python/Ecc/c.py                     |  2 +-
> >  BaseTools/Source/Python/GenFds/FdfParser.py          |  2 +-
> >  BaseTools/Source/Python/GenFds/Ffs.py                | 20 +----------
> >  BaseTools/Source/Python/GenFds/OptRomInfStatement.py |  1 -
> >  BaseTools/Source/Python/Workspace/InfBuildData.py    |  2 +-
> >  BaseTools/Source/Python/Workspace/MetaFileParser.py  |  4 +--
> >  BaseTools/Source/Python/build/build.py               |  4 +--
> >  12 files changed, 53 insertions(+), 85 deletions(-)
> 
> I think this patch (commit eece4292acc80) broke the Ecc tool:
> 
> > diff --git a/BaseTools/Source/Python/Ecc/Configuration.py
> b/BaseTools/Source/Python/Ecc/Configuration.py
> > index b523858e1b1f..b5b583be8c4a 100644
> > --- a/BaseTools/Source/Python/Ecc/Configuration.py
> > +++ b/BaseTools/Source/Python/Ecc/Configuration.py
> > @@ -53,7 +53,7 @@ class Configuration(object):
> >
> >          # List customized Modifer here, split with ','
> >          # Defaultly use the definition in class DataType
> > -        self.ModifierList = MODIFIER_LIST
> > +        self.ModifierSet = MODIFIER_SET
> >
> >          ## General Checking
> >          self.GeneralCheckAll = 0
> 
> When I run Ecc, it prints:
> 
>   BaseTools/Source/Python/Ecc/config.ini(44): error F004: Invalid
>   configuration option 'ModifierList' was found
> 
> The error comes from "BaseTools/Source/Python/Ecc/Configuration.py":
> 
>         LineNo = 0
>         for Line in open(Filepath, 'r'):
>             LineNo = LineNo + 1
>             Line = CleanString(Line)
>             if Line != '':
>                 List = GetSplitValueList(Line, TAB_EQUAL_SPLIT)
>                 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)
>                 if List[0] == 'ModifierList':
>                     List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)
>                 if List[0] == 'MetaDataFileCheckPathOfGenerateFileList' and List[1]
> == "":
>                     continue
>                 if List[0] == 'SkipDirList':
>                     List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)
>                 if List[0] == 'SkipFileList':
>                     List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)
>                 if List[0] == 'BinaryExtList':
>                     List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)
>                 if List[0] == 'Copyright':
>                     List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)
>                 self.__dict__[List[0]] = List[1]
> 
> Basically, the condition
> 
>   List[0] not in self.__dict__
> 
> expects that option names in the "config.ini" file match the attributes
> / members of the Python object directly. Thus, if we rename a member,
> such as from "ModifierList" to "ModifierSet", then all the config files
> that used to contain "ModifierList" now have to rename their
> "ModifierList" options to "ModifierSet" as well.
> 
> This looks brittle to me; option names in config files are public, while
> object member names are an implementation detail. They shouldn't be
> coupled.
> 
> Thanks
> Laszlo

  reply	other threads:[~2018-05-04 14:18 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-20 15:51 [PATCH v1 00/27] BaseTools refactoring Jaben Carsey
2018-04-20 15:51 ` [PATCH v1 01/27] BaseTools: Misc - refactor RegEx to minimize multiple compiling Jaben Carsey
2018-04-25  8:49   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 02/27] BaseTools: GenPatchPcdTable " Jaben Carsey
2018-04-25  8:50   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 03/27] BaseTools: Share RegEx between files Jaben Carsey
2018-04-25  8:51   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 04/27] BaseTools: Workspace - refactor RegEx to minimize multiple compiling Jaben Carsey
2018-04-25  8:50   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 05/27] BaseTools: Autogen - replace string constants with those from DataType Jaben Carsey
2018-04-25  8:50   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 06/27] BaseTools: simplify if call Jaben Carsey
2018-04-25  8:50   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 07/27] BaseTools: Workspace - refactor GetStructurePcdInfo Jaben Carsey
2018-04-25  8:50   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 08/27] BaseTools: AutoGen - remove dictionary populated, but never accessed Jaben Carsey
2018-04-25  8:50   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 09/27] BaseTools: AutoGen - remove unused variables Jaben Carsey
2018-04-25  8:52   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 10/27] BaseTools: Remove extra .keys() Jaben Carsey
2018-04-25  8:51   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 11/27] BaseTools: Workspace/MetaFileParser - refactor dicts Jaben Carsey
2018-04-20 15:51 ` [PATCH v1 12/27] BaseTools: remove dict from DscBuildData Jaben Carsey
2018-04-25  8:50   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 13/27] BaseTools: replace string constants used for module types Jaben Carsey
2018-04-25  5:57   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 14/27] BaseTools: Define and use a set for common list Jaben Carsey
2018-05-02  6:48   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 15/27] BaseTools: Share a dictionary instead of keeping multiples Jaben Carsey
2018-04-20 15:51 ` [PATCH v1 16/27] BaseTools: Replace EDK Component strings with predefined constant Jaben Carsey
2018-04-24  7:42   ` Zhu, Yonghong
2018-04-24 14:13     ` Carsey, Jaben
2018-04-20 15:51 ` [PATCH v1 17/27] BaseTools: DataType - cleanup list constants Jaben Carsey
2018-05-04 11:14   ` Laszlo Ersek
2018-05-04 14:18     ` Carsey, Jaben [this message]
2018-05-04 15:03       ` Laszlo Ersek
2018-04-20 15:51 ` [PATCH v1 18/27] BaseTools: Replace PCD type strings with predefined constant Jaben Carsey
2018-04-25  6:00   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 19/27] BaseTools: Replace Binary File " Jaben Carsey
2018-04-24  7:38   ` Zhu, Yonghong
2018-04-24 14:12     ` Carsey, Jaben
2018-04-20 15:51 ` [PATCH v1 20/27] BaseTools: remove duplicate variable Jaben Carsey
2018-04-25  8:51   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 21/27] BaseTools: replace string with predefined constant Jaben Carsey
2018-04-25  6:04   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 22/27] BaseTools: remove redundant if comparison Jaben Carsey
2018-05-02  6:49   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 23/27] BaseTools: AutoGen - use dafultdict instead of dict Jaben Carsey
2018-04-20 15:51 ` [PATCH v1 24/27] BaseTools: GenFds - simplify testing for Hex number Jaben Carsey
2018-04-25  8:51   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 25/27] BaseTools: AutoGen - use defaultdict to auto initialize Jaben Carsey
2018-04-25  8:52   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 26/27] BaseTools: remove unused MigrationUtilities.py Jaben Carsey
2018-05-02  6:49   ` Zhu, Yonghong
2018-04-20 15:51 ` [PATCH v1 27/27] BaseTools: CommonClass - remove unused classes Jaben Carsey
2018-04-25  8:51   ` Zhu, Yonghong

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=CB6E33457884FA40993F35157061515CA3CEDA4A@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