Reviewed-by: Liming Gao <liming....@intel.com> -----Original Message----- From: Yingke Liu [mailto:yingke.d....@intel.com] Sent: Tuesday, June 23, 2015 10:51 AM To: edk2-devel@lists.sourceforge.net Subject: [edk2] [Patch] BaseTools: The token values cannot be numeric same with different PCDs.
Current check only compared string format of toke value. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yingke Liu <yingke.d....@intel.com> --- BaseTools/Source/Python/AutoGen/AutoGen.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index ca7d5ab..7fb1a88 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -651,7 +651,7 @@ class WorkspaceAutoGen(AutoGen): for Pa in self.AutoGenObjectList: for Package in Pa.PackageList: PcdList = Package.Pcds.values() - PcdList.sort(lambda x, y: cmp(x.TokenValue, y.TokenValue)) + PcdList.sort(lambda x, y: cmp(int(x.TokenValue, 0), + int(y.TokenValue, 0))) Count = 0 while (Count < len(PcdList) - 1) : Item = PcdList[Count] @@ -659,13 +659,13 @@ class WorkspaceAutoGen(AutoGen): # # Make sure in the same token space the TokenValue should be unique # - if (Item.TokenValue == ItemNext.TokenValue): + if (int(Item.TokenValue, 0) == int(ItemNext.TokenValue, 0)): SameTokenValuePcdList = [] SameTokenValuePcdList.append(Item) SameTokenValuePcdList.append(ItemNext) RemainPcdListLength = len(PcdList) - Count - 2 for ValueSameCount in range(RemainPcdListLength): - if PcdList[len(PcdList) - RemainPcdListLength + ValueSameCount].TokenValue == Item.TokenValue: + if int(PcdList[len(PcdList) - RemainPcdListLength + ValueSameCount].TokenValue, 0) == int(Item.TokenValue, 0): SameTokenValuePcdList.append(PcdList[len(PcdList) - RemainPcdListLength + ValueSameCount]) else: break; @@ -699,7 +699,7 @@ class WorkspaceAutoGen(AutoGen): # # Check PCDs with same TokenSpaceGuidCName.TokenCName have same token value as well. # - if (Item.TokenSpaceGuidCName == ItemNext.TokenSpaceGuidCName) and (Item.TokenCName == ItemNext.TokenCName) and (Item.TokenValue != ItemNext.TokenValue): + if (Item.TokenSpaceGuidCName == ItemNext.TokenSpaceGuidCName) and (Item.TokenCName == ItemNext.TokenCName) and (int(Item.TokenValue, 0) != int(ItemNext.TokenValue, 0)): EdkLogger.error( 'build', FORMAT_INVALID, -- 1.9.5.msysgit.0 ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel