Reviewed-by: Liming Gao <[email protected]> >-----Original Message----- >From: Zhao, ZhiqiangX >Sent: Wednesday, September 26, 2018 6:06 PM >To: [email protected] >Cc: Zhao, ZhiqiangX <[email protected]>; Gao, Liming ><[email protected]>; Zhu, Yonghong <[email protected]>; Feng, >Bob C <[email protected]> >Subject: [PATCH] BaseTools: Convert string value of void* pcd in command >line to array. > >For void* type pcd in command line, if its value is string, then >convert the string value to array format. For example, >build --pcd gUefiOvmfPkgTokenSpaceGuid.PcdTest="c", >convert the pcd value from "c" to "{0x63,0x00}". > >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: ZhiqiangX Zhao <[email protected]> >Cc: Liming Gao <[email protected]> >Cc: Yonghong Zhu <[email protected]> >Cc: Bob Feng <[email protected]> >--- > BaseTools/Source/Python/Workspace/DscBuildData.py | 38 >++++++++++++++++++----- > 1 file changed, 30 insertions(+), 8 deletions(-) > >diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py >b/BaseTools/Source/Python/Workspace/DscBuildData.py >index ac0f0bee47..0bb2c17732 100644 >--- a/BaseTools/Source/Python/Workspace/DscBuildData.py >+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py >@@ -1299,16 +1299,29 @@ class DscBuildData(PlatformBuildClassObject): > if isinstance(self._DecPcds.get((Pcd.TokenCName, >Pcd.TokenSpaceGuidCName), None), StructurePcd): > self._DecPcds.get((Pcd.TokenCName, >Pcd.TokenSpaceGuidCName)).PcdValueFromComm = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] > else: >- Pcd.PcdValueFromComm = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] >- Pcd.DefaultValue = NoFiledValues[(Pcd.TokenSpaceGuidCName, >Pcd.TokenCName)][0] >+ if Pcd.DatumType in TAB_PCD_NUMERIC_TYPES: >+ Pcd.PcdValueFromComm = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] >+ Pcd.DefaultValue = >NoFiledValues[(Pcd.TokenSpaceGuidCName, >Pcd.TokenCName)][0] >+ else: >+ Pcd.PcdValueFromComm = >StringToArray(NoFiledValues[(Pcd.TokenSpaceGuidCName, >Pcd.TokenCName)][0]) >+ Pcd.DefaultValue = >StringToArray(NoFiledValues[(Pcd.TokenSpaceGuidCName, >Pcd.TokenCName)][0]) > for sku in Pcd.SkuInfoList: > SkuInfo = Pcd.SkuInfoList[sku] > if SkuInfo.DefaultValue: >- SkuInfo.DefaultValue = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] >+ if Pcd.DatumType in TAB_PCD_NUMERIC_TYPES: >+ SkuInfo.DefaultValue = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] >+ else: >+ SkuInfo.DefaultValue = >StringToArray(NoFiledValues[(Pcd.TokenSpaceGuidCName, >Pcd.TokenCName)][0]) > else: >- SkuInfo.HiiDefaultValue = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] >+ if Pcd.DatumType in TAB_PCD_NUMERIC_TYPES: >+ SkuInfo.HiiDefaultValue = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] >+ else: >+ SkuInfo.HiiDefaultValue = >StringToArray(NoFiledValues[(Pcd.TokenSpaceGuidCName, >Pcd.TokenCName)][0]) > for defaultstore in SkuInfo.DefaultStoreDict: >- SkuInfo.DefaultStoreDict[defaultstore] = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] >+ if Pcd.DatumType in TAB_PCD_NUMERIC_TYPES: >+ SkuInfo.DefaultStoreDict[defaultstore] = >NoFiledValues[(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)][0] >+ else: >+ SkuInfo.DefaultStoreDict[defaultstore] = >StringToArray(NoFiledValues[(Pcd.TokenSpaceGuidCName, >Pcd.TokenCName)][0]) > if Pcd.Type in >[self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII], >self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII]]: > if Pcd.DatumType == TAB_VOID: > if not Pcd.MaxDatumSize: >@@ -1320,17 +1333,26 @@ class DscBuildData(PlatformBuildClassObject): > else: > PcdInDec = self.DecPcds.get((Name, Guid)) > if PcdInDec: >- PcdInDec.PcdValueFromComm = NoFiledValues[(Guid, Name)][0] >+ if PcdInDec.DatumType in TAB_PCD_NUMERIC_TYPES: >+ PcdInDec.PcdValueFromComm = NoFiledValues[(Guid, >Name)][0] >+ else: >+ PcdInDec.PcdValueFromComm = >StringToArray(NoFiledValues[(Guid, Name)][0]) > if PcdInDec.Type in >[self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD], > >self._PCD_TYPE_STRING_[MODEL_PCD_PATCHABLE_IN_MODULE], > > self._PCD_TYPE_STRING_[MODEL_PCD_FEATURE_FLAG], > > self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC], > > self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX]]: > self.Pcds[Name, Guid] = copy.deepcopy(PcdInDec) >- self.Pcds[Name, Guid].DefaultValue = NoFiledValues[( >Guid, >Name)][0] >+ if PcdInDec.DatumType in TAB_PCD_NUMERIC_TYPES: >+ self.Pcds[Name, Guid].DefaultValue = >NoFiledValues[( Guid, >Name)][0] >+ else: >+ self.Pcds[Name, Guid].DefaultValue = >StringToArray(NoFiledValues[( Guid, Name)][0]) > if PcdInDec.Type in >[self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC], > > self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX]]: >- self.Pcds[Name, Guid].SkuInfoList = >{TAB_DEFAULT:SkuInfoClass(TAB_DEFAULT, self.SkuIds[TAB_DEFAULT][0], '', >'', '', '', '', NoFiledValues[( Guid, Name)][0])} >+ if PcdInDec.DatumType in TAB_PCD_NUMERIC_TYPES: >+ self.Pcds[Name, Guid].SkuInfoList = >{TAB_DEFAULT:SkuInfoClass(TAB_DEFAULT, self.SkuIds[TAB_DEFAULT][0], '', >'', '', '', '', NoFiledValues[( Guid, Name)][0])} >+ else: >+ self.Pcds[Name, Guid].SkuInfoList = >{TAB_DEFAULT:SkuInfoClass(TAB_DEFAULT, self.SkuIds[TAB_DEFAULT][0], '', >'', '', '', '', StringToArray(NoFiledValues[( Guid, Name)][0]))} > return AllPcds > > def OverrideByFdfOverAll(self,AllPcds): >-- >2.14.1.windows.1
_______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

