Re: [edk2] [Patch] BaseTools: Structure Pcd in CommandLine.
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.
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob FengCc: 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.
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob FengCc: 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 -