Re: [edk2] [Patch] BaseTools: Structure Pcd in CommandLine.

2018-01-31 Thread Gao, Liming
Reviewed-by: Liming Gao 

>-Original Message-
>From: Feng, Bob C
>Sent: Wednesday, January 31, 2018 4:49 PM
>To: edk2-devel@lists.01.org
>Cc: Feng, Bob C ; Gao, Liming 
>Subject: [Patch] BaseTools: Structure Pcd in CommandLine.
>
>Contributed-under: TianoCore Contribution Agreement 1.1
>Signed-off-by: Bob Feng 
>Cc: Liming Gao 
>---
> BaseTools/Source/Python/AutoGen/AutoGen.py| 110 +++-
> BaseTools/Source/Python/Common/Expression.py  |   2 +-
> BaseTools/Source/Python/Common/Misc.py|   2 +-
> BaseTools/Source/Python/GenFds/FfsInfStatement.py |   1 +
> BaseTools/Source/Python/GenFds/GenFds.py  |   4 +-
> BaseTools/Source/Python/Workspace/DscBuildData.py | 210
>+-
> BaseTools/Source/Python/build/build.py|   2 +-
> 7 files changed, 233 insertions(+), 98 deletions(-)
>
>diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py
>b/BaseTools/Source/Python/AutoGen/AutoGen.py
>index 1cf50e872f..405bfa145a 100644
>--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
>+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
>@@ -396,100 +396,22 @@ class WorkspaceAutoGen(AutoGen):
>
> # apply SKU and inject PCDs from Flash Definition file
> for Arch in self.ArchList:
> Platform = self.BuildDatabase[self.MetaFile, Arch, Target, 
> Toolchain]
>
>-DecPcds = {}
>-DecPcdsKey = set()
>-PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, 
>Arch)
>-if GlobalData.BuildOptionPcd:
>-for i, pcd in enumerate(GlobalData.BuildOptionPcd):
>-if type(pcd) is tuple:
>-continue
>-(pcdname, pcdvalue) = pcd.split('=')
>-if not pcdvalue:
>-EdkLogger.error('build', AUTOGEN_ERROR, "No Value 
>specified
>for the PCD %s." % (pcdname))
>-if '.' in pcdname:
>-(TokenSpaceGuidCName, TokenCName) = pcdname.split('.')
>-HasTokenSpace = True
>-else:
>-TokenCName = pcdname
>-TokenSpaceGuidCName = ''
>-HasTokenSpace = False
>-TokenSpaceGuidCNameList = []
>-FoundFlag = False
>-PcdDatumType = ''
>-NewValue = ''
>-for package in PGen.PackageList:
>-Guids = package.Guids
>-self._GuidDict.update(Guids)
>-for package in PGen.PackageList:
>-for key in package.Pcds:
>-PcdItem = package.Pcds[key]
>-if HasTokenSpace:
>-if (PcdItem.TokenCName, 
>PcdItem.TokenSpaceGuidCName)
>== (TokenCName, TokenSpaceGuidCName):
>-PcdDatumType = PcdItem.DatumType
>-if pcdvalue.startswith('H'):
>-try:
>-pcdvalue = 
>ValueExpressionEx(pcdvalue[1:],
>PcdDatumType, self._GuidDict)(True)
>-except BadExpression, Value:
>-if Value.result > 1:
>-EdkLogger.error('Parser', 
>FORMAT_INVALID, 'PCD
>[%s.%s] Value "%s",  %s' %
>-
>(TokenSpaceGuidCName, TokenCName,
>pcdvalue, Value))
>-pcdvalue = 'H' + pcdvalue
>-NewValue =
>BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName,
>PcdDatumType, pcdvalue)
>-FoundFlag = True
>-else:
>-if PcdItem.TokenCName == TokenCName:
>-if not PcdItem.TokenSpaceGuidCName in
>TokenSpaceGuidCNameList:
>-if len (TokenSpaceGuidCNameList) < 1:
>-
>TokenSpaceGuidCNameList.append(PcdItem.TokenSpaceGuidCName)
>-PcdDatumType = PcdItem.DatumType
>-TokenSpaceGuidCName =
>PcdItem.TokenSpaceGuidCName
>-if pcdvalue.startswith('H'):
>-try:
>-pcdvalue = 
>ValueExpressionEx(pcdvalue[1:],
>PcdDatumType, self._GuidDict)(True)
>-except BadExpression, Value:
>-EdkLogger.error('Parser', 
>FORMAT_INVALID, 'PCD
>[%s.%s] Value "%s", %s' %
>- 

[edk2] [Patch] BaseTools: Structure Pcd in CommandLine.

2018-01-31 Thread BobCF
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bob Feng 
Cc: Liming Gao 
---
 BaseTools/Source/Python/AutoGen/AutoGen.py| 110 +++-
 BaseTools/Source/Python/Common/Expression.py  |   2 +-
 BaseTools/Source/Python/Common/Misc.py|   2 +-
 BaseTools/Source/Python/GenFds/FfsInfStatement.py |   1 +
 BaseTools/Source/Python/GenFds/GenFds.py  |   4 +-
 BaseTools/Source/Python/Workspace/DscBuildData.py | 210 +-
 BaseTools/Source/Python/build/build.py|   2 +-
 7 files changed, 233 insertions(+), 98 deletions(-)

diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py 
b/BaseTools/Source/Python/AutoGen/AutoGen.py
index 1cf50e872f..405bfa145a 100644
--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
@@ -396,100 +396,22 @@ class WorkspaceAutoGen(AutoGen):
 
 # apply SKU and inject PCDs from Flash Definition file
 for Arch in self.ArchList:
 Platform = self.BuildDatabase[self.MetaFile, Arch, Target, 
Toolchain]
 
-DecPcds = {}
-DecPcdsKey = set()
-PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, 
Arch)
-if GlobalData.BuildOptionPcd:
-for i, pcd in enumerate(GlobalData.BuildOptionPcd):
-if type(pcd) is tuple:
-continue
-(pcdname, pcdvalue) = pcd.split('=')
-if not pcdvalue:
-EdkLogger.error('build', AUTOGEN_ERROR, "No Value 
specified for the PCD %s." % (pcdname))
-if '.' in pcdname:
-(TokenSpaceGuidCName, TokenCName) = pcdname.split('.')
-HasTokenSpace = True
-else:
-TokenCName = pcdname
-TokenSpaceGuidCName = ''
-HasTokenSpace = False
-TokenSpaceGuidCNameList = []
-FoundFlag = False
-PcdDatumType = ''
-NewValue = ''
-for package in PGen.PackageList:
-Guids = package.Guids
-self._GuidDict.update(Guids)
-for package in PGen.PackageList:
-for key in package.Pcds:
-PcdItem = package.Pcds[key]
-if HasTokenSpace:
-if (PcdItem.TokenCName, 
PcdItem.TokenSpaceGuidCName) == (TokenCName, TokenSpaceGuidCName):
-PcdDatumType = PcdItem.DatumType
-if pcdvalue.startswith('H'):
-try:
-pcdvalue = 
ValueExpressionEx(pcdvalue[1:], PcdDatumType, self._GuidDict)(True)
-except BadExpression, Value:
-if Value.result > 1:
-EdkLogger.error('Parser', 
FORMAT_INVALID, 'PCD [%s.%s] Value "%s",  %s' %
-
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))
-pcdvalue = 'H' + pcdvalue
-NewValue = 
BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, 
pcdvalue)
-FoundFlag = True
-else:
-if PcdItem.TokenCName == TokenCName:
-if not PcdItem.TokenSpaceGuidCName in 
TokenSpaceGuidCNameList:
-if len (TokenSpaceGuidCNameList) < 1:
-
TokenSpaceGuidCNameList.append(PcdItem.TokenSpaceGuidCName)
-PcdDatumType = PcdItem.DatumType
-TokenSpaceGuidCName = 
PcdItem.TokenSpaceGuidCName
-if pcdvalue.startswith('H'):
-try:
-pcdvalue = 
ValueExpressionEx(pcdvalue[1:], PcdDatumType, self._GuidDict)(True)
-except BadExpression, Value:
-EdkLogger.error('Parser', 
FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %
-
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))
-pcdvalue = 'H' + pcdvalue
-NewValue = 
BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, 
pcdvalue)
-

[edk2] [Patch] BaseTools: Structure Pcd in CommandLine.

2018-01-28 Thread BobCF
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bob Feng 
Cc: Liming Gao 
---
 BaseTools/Source/Python/AutoGen/AutoGen.py| 110 +++-
 BaseTools/Source/Python/Common/Expression.py  |   2 +-
 BaseTools/Source/Python/Common/Misc.py|   2 +-
 BaseTools/Source/Python/GenFds/FfsInfStatement.py |   1 +
 BaseTools/Source/Python/GenFds/GenFds.py  |   4 +-
 BaseTools/Source/Python/Workspace/DscBuildData.py | 210 +-
 6 files changed, 232 insertions(+), 97 deletions(-)

diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py 
b/BaseTools/Source/Python/AutoGen/AutoGen.py
index ab178c9a4a..0a253ff3bc 100644
--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
@@ -396,100 +396,22 @@ class WorkspaceAutoGen(AutoGen):
 
 # apply SKU and inject PCDs from Flash Definition file
 for Arch in self.ArchList:
 Platform = self.BuildDatabase[self.MetaFile, Arch, Target, 
Toolchain]
 
-DecPcds = {}
-DecPcdsKey = set()
-PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, 
Arch)
-if GlobalData.BuildOptionPcd:
-for i, pcd in enumerate(GlobalData.BuildOptionPcd):
-if type(pcd) is tuple:
-continue
-(pcdname, pcdvalue) = pcd.split('=')
-if not pcdvalue:
-EdkLogger.error('build', AUTOGEN_ERROR, "No Value 
specified for the PCD %s." % (pcdname))
-if '.' in pcdname:
-(TokenSpaceGuidCName, TokenCName) = pcdname.split('.')
-HasTokenSpace = True
-else:
-TokenCName = pcdname
-TokenSpaceGuidCName = ''
-HasTokenSpace = False
-TokenSpaceGuidCNameList = []
-FoundFlag = False
-PcdDatumType = ''
-NewValue = ''
-for package in PGen.PackageList:
-Guids = package.Guids
-self._GuidDict.update(Guids)
-for package in PGen.PackageList:
-for key in package.Pcds:
-PcdItem = package.Pcds[key]
-if HasTokenSpace:
-if (PcdItem.TokenCName, 
PcdItem.TokenSpaceGuidCName) == (TokenCName, TokenSpaceGuidCName):
-PcdDatumType = PcdItem.DatumType
-if pcdvalue.startswith('H'):
-try:
-pcdvalue = 
ValueExpressionEx(pcdvalue[1:], PcdDatumType, self._GuidDict)(True)
-except BadExpression, Value:
-if Value.result > 1:
-EdkLogger.error('Parser', 
FORMAT_INVALID, 'PCD [%s.%s] Value "%s",  %s' %
-
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))
-pcdvalue = 'H' + pcdvalue
-NewValue = 
BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, 
pcdvalue)
-FoundFlag = True
-else:
-if PcdItem.TokenCName == TokenCName:
-if not PcdItem.TokenSpaceGuidCName in 
TokenSpaceGuidCNameList:
-if len (TokenSpaceGuidCNameList) < 1:
-
TokenSpaceGuidCNameList.append(PcdItem.TokenSpaceGuidCName)
-PcdDatumType = PcdItem.DatumType
-TokenSpaceGuidCName = 
PcdItem.TokenSpaceGuidCName
-if pcdvalue.startswith('H'):
-try:
-pcdvalue = 
ValueExpressionEx(pcdvalue[1:], PcdDatumType, self._GuidDict)(True)
-except BadExpression, Value:
-EdkLogger.error('Parser', 
FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %
-
(TokenSpaceGuidCName, TokenCName, pcdvalue, Value))
-pcdvalue = 'H' + pcdvalue
-NewValue = 
BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, 
pcdvalue)
-FoundFlag = True
-