From: "Gao, Liming" <liming.gao@intel.com>
To: "Feng, Bob C" <bob.c.feng@intel.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [Patch] BaseTool: Error handling for PCD datumtype.
Date: Mon, 19 Mar 2018 04:08:29 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E1E892E@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20180319040519.19352-1-bob.c.feng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
>-----Original Message-----
>From: Feng, Bob C
>Sent: Monday, March 19, 2018 12:05 PM
>To: edk2-devel@lists.01.org
>Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <liming.gao@intel.com>
>Subject: [Patch] BaseTool: Error handling for PCD datumtype.
>
>Report error if the Pcd DatumType is wrong.
>
>Contributed-under: TianoCore Contribution Agreement 1.1
>Signed-off-by: Bob Feng <bob.c.feng@intel.com>
>Cc: Liming Gao <liming.gao@intel.com>
>---
> BaseTools/Source/Python/Workspace/BuildClassObject.py | 2 ++
> BaseTools/Source/Python/Workspace/DecBuildData.py | 13 +++++++++----
> 2 files changed, 11 insertions(+), 4 deletions(-)
>
>diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py
>b/BaseTools/Source/Python/Workspace/BuildClassObject.py
>index 1352fa21c8..a306dc0b23 100644
>--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
>+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
>@@ -67,10 +67,11 @@ class PcdClassObject(object):
> self.DscDefaultValue = None
> self.DscRawValue = None
> if IsDsc:
> self.DscDefaultValue = Value
> self.PcdValueFromComm = ""
>+ self.DefinitionPosition = ("","")
>
> ## Convert the class to a string
> #
> # Convert each member of the class to string
> # Organize to a signle line format string
>@@ -176,10 +177,11 @@ class StructurePcd(PcdClassObject):
> self.validateranges = PcdObject.validateranges if
>PcdObject.validateranges else self.validateranges
> self.validlists = PcdObject.validlists if PcdObject.validlists else self.validlists
> self.expressions = PcdObject.expressions if PcdObject.expressions else
>self.expressions
> self.DscRawValue = PcdObject.DscRawValue if PcdObject.DscRawValue
>else self.DscRawValue
> self.PcdValueFromComm = PcdObject.PcdValueFromComm if
>PcdObject.PcdValueFromComm else self.PcdValueFromComm
>+ self.DefinitionPosition = PcdObject.DefinitionPosition if
>PcdObject.DefinitionPosition else self.DefinitionPosition
> if type(PcdObject) is StructurePcd:
> self.StructuredPcdIncludeFile = PcdObject.StructuredPcdIncludeFile if
>PcdObject.StructuredPcdIncludeFile else self.StructuredPcdIncludeFile
> self.PackageDecs = PcdObject.PackageDecs if PcdObject.PackageDecs
>else self.PackageDecs
> self.DefaultValues = PcdObject.DefaultValues if
>PcdObject.DefaultValues else self.DefaultValues
> self.PcdMode = PcdObject.PcdMode if PcdObject.PcdMode else
>self.PcdMode
>diff --git a/BaseTools/Source/Python/Workspace/DecBuildData.py
>b/BaseTools/Source/Python/Workspace/DecBuildData.py
>index ee00ec0719..4d6edadc8f 100644
>--- a/BaseTools/Source/Python/Workspace/DecBuildData.py
>+++ b/BaseTools/Source/Python/Workspace/DecBuildData.py
>@@ -392,15 +392,11 @@ class DecBuildData(PackageBuildClassObject):
> struct_pcd.SetDecDefaultValue(item.DefaultValue)
> else:
> struct_pcd.AddDefaultValue(item.TokenCName,
>item.DefaultValue,self.MetaFile.File,LineNo)
>
> struct_pcd.PackageDecs = dep_pkgs
>- if not struct_pcd.StructuredPcdIncludeFile:
>- EdkLogger.error("build", PCD_STRUCTURE_PCD_ERROR, "The
>structure Pcd %s.%s header file is not found in %s line %s \n" %
>(struct_pcd.TokenSpaceGuidCName,
>struct_pcd.TokenCName,self.MetaFile.File,LineNo ))
>-
> str_pcd_set.append(struct_pcd)
>-
> return str_pcd_set
>
> ## Retrieve PCD declarations for given type
> def _GetPcd(self, Type):
> Pcds = sdict()
>@@ -444,18 +440,27 @@ class DecBuildData(PackageBuildClassObject):
> None,
> list(validateranges),
> list(validlists),
> list(expressions)
> )
>+ PcdObj.DefinitionPosition = (self.MetaFile.File,LineNo)
> if "." in TokenSpaceGuid:
> StrPcdSet.append((PcdObj,LineNo))
> else:
> Pcds[PcdCName, TokenSpaceGuid, self._PCD_TYPE_STRING_[Type]]
>= PcdObj
>
> StructurePcds = self.ProcessStructurePcd(StrPcdSet)
> for pcd in StructurePcds:
> Pcds[pcd.TokenCName, pcd.TokenSpaceGuidCName,
>self._PCD_TYPE_STRING_[Type]] = pcd
>+ StructPattern = re.compile(r'[_a-zA-Z][0-9A-Za-z_]*$')
>+ for pcd in Pcds.values():
>+ if pcd.DatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32,
>TAB_UINT64, TAB_VOID, "BOOLEAN"]:
>+ if StructPattern.match(pcd.DatumType) == None:
>+ EdkLogger.error('build', FORMAT_INVALID, "DatumType only
>support BOOLEAN, UINT8, UINT16, UINT32, UINT64, VOID* or a valid struct
>name.", pcd.DefinitionPosition[0],pcd.DefinitionPosition[1])
>+ for struct_pcd in Pcds.values():
>+ if isinstance(struct_pcd,StructurePcd) and not
>struct_pcd.StructuredPcdIncludeFile:
>+ EdkLogger.error("build", PCD_STRUCTURE_PCD_ERROR, "The
>structure Pcd %s.%s header file is not found in %s line %s \n" %
>(struct_pcd.TokenSpaceGuidCName,
>struct_pcd.TokenCName,struct_pcd.DefinitionPosition[0],struct_pcd.Definitio
>nPosition[1] ))
>
> return Pcds
> @property
> def CommonIncludes(self):
> if self._CommonIncludes is None:
>--
>2.14.3.windows.1
next prev parent reply other threads:[~2018-03-19 4:02 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-19 4:05 [Patch] BaseTool: Error handling for PCD datumtype BobCF
2018-03-19 4:08 ` Gao, Liming [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-03-05 1:39 BobCF
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=4A89E2EF3DFEDB4C8BFDE51014F606A14E1E892E@SHSMSX104.ccr.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