public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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



  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