Reviewed-by: Liming Gao <liming....@intel.com>

>-----Original Message-----
>From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>Bob Feng
>Sent: Wednesday, September 04, 2019 3:54 PM
>To: devel@edk2.groups.io
>Cc: Feng, Bob C <bob.c.f...@intel.com>; Gao, Liming
><liming....@intel.com>; Shi, Steven <steven....@intel.com>
>Subject: [edk2-devel] [Patch 1/1] BaseTools: Sort Pcd settings to make
>PcdTokenNumber be fixed
>
>BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2147
>
>This patch is to sort the Pcd settings so that PcdTokenNumber
>will not change if the platform's Pcd settings are the same.
>
>Signed-off-by: Bob Feng <bob.c.f...@intel.com>
>Cc: Liming Gao <liming....@intel.com>
>Cc: Steven Shi <steven....@intel.com>
>---
> BaseTools/Source/Python/AutoGen/PlatformAutoGen.py    |  3 ++-
> BaseTools/Source/Python/Workspace/BuildClassObject.py | 10 ++++++++++
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
>diff --git a/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
>b/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
>index 565424a95ead..a16918fd3178 100644
>--- a/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
>+++ b/BaseTools/Source/Python/AutoGen/PlatformAutoGen.py
>@@ -437,11 +437,11 @@ class PlatformAutoGen(AutoGen):
>             NoDatumTypePcdListString = "\n\t\t".join(NoDatumTypePcdList)
>             EdkLogger.error("build", AUTOGEN_ERROR, "PCD setting error",
>                             File=self.MetaFile,
>                             ExtraData="\n\tPCD(s) without 
> MaxDatumSize:\n\t\t%s\n"
>                                       % NoDatumTypePcdListString)
>-        self._NonDynamicPcdList = self._NonDynaPcdList_
>+        self._NonDynamicPcdList = sorted(self._NonDynaPcdList_)
>         self._DynamicPcdList = self._DynaPcdList_
>
>     def SortDynamicPcd(self):
>         #
>         # Sort dynamic PCD list to:
>@@ -700,10 +700,11 @@ class PlatformAutoGen(AutoGen):
>                     OtherPcdArray.add(Pcd)
>             del self._DynamicPcdList[:]
>         self._DynamicPcdList.extend(list(UnicodePcdArray))
>         self._DynamicPcdList.extend(list(HiiPcdArray))
>         self._DynamicPcdList.extend(list(OtherPcdArray))
>+        self._DynamicPcdList.sort()
>         allskuset = [(SkuName, Sku.SkuId) for pcd in self._DynamicPcdList for
>(SkuName, Sku) in pcd.SkuInfoList.items()]
>         for pcd in self._DynamicPcdList:
>             if len(pcd.SkuInfoList) == 1:
>                 for (SkuName, SkuId) in allskuset:
>                     if isinstance(SkuId, str) and eval(SkuId) == 0 or SkuId 
> == 0:
>diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py
>b/BaseTools/Source/Python/Workspace/BuildClassObject.py
>index 5d2bb733752a..db40e3b10c3c 100644
>--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
>+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
>@@ -12,10 +12,11 @@ import re
> from collections import OrderedDict
> from Common.Misc import CopyDict,ArrayIndex
> import copy
> import Common.EdkLogger as EdkLogger
> from Common.BuildToolError import OPTION_VALUE_INVALID
>+from Common.caching import cached_property
> StructPattern = re.compile(r'[_a-zA-Z][0-9A-Za-z_\[\]]*$')
>
> ## PcdClassObject
> #
> # This Class is used for PcdObject
>@@ -225,10 +226,19 @@ class PcdClassObject(object):
>     # @retval truple() Key for hash table
>     #
>     def __hash__(self):
>         return hash((self.TokenCName, self.TokenSpaceGuidCName))
>
>+    @cached_property
>+    def _fullname(self):
>+        return ".".join((self.TokenSpaceGuidCName,self.TokenCName))
>+
>+    def __lt__(self,pcd):
>+        return self._fullname < pcd._fullname
>+    def __gt__(self,pcd):
>+        return self._fullname > pcd._fullname
>+
>     def sharedcopy(self,new_pcd):
>         new_pcd.TokenCName = self.TokenCName
>         new_pcd.TokenSpaceGuidCName = self.TokenSpaceGuidCName
>         new_pcd.TokenSpaceGuidValue = self.TokenSpaceGuidValue
>         new_pcd.Type = self.Type
>--
>2.20.1.windows.1
>
>
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#47021): https://edk2.groups.io/g/devel/message/47021
Mute This Topic: https://groups.io/mt/33135853/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to