]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Fix Sku inherit issue.
authorBobCF <bob.c.feng@intel.com>
Wed, 27 Dec 2017 06:03:34 +0000 (14:03 +0800)
committerLiming Gao <liming.gao@intel.com>
Mon, 8 Jan 2018 03:32:04 +0000 (11:32 +0800)
The final Pcd value should only be override by its parents.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Feng Bob C <bob.c.feng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
BaseTools/Source/Python/Common/Misc.py
BaseTools/Source/Python/Workspace/DscBuildData.py

index 15ad9e4f2eca37851748f578708b3328c1d467dc..a8ed718aa5d8008717d61f2ea81f1aa6e0f179ac 100644 (file)
@@ -2251,6 +2251,8 @@ class SkuClass():
         return self.__SkuInherit.get(skuname,"DEFAULT")\r
 \r
     def GetSkuChain(self,sku):\r
         return self.__SkuInherit.get(skuname,"DEFAULT")\r
 \r
     def GetSkuChain(self,sku):\r
+        if sku == "DEFAULT":\r
+            return ["DEFAULT"]\r
         skulist = [sku]\r
         nextsku = sku\r
         while 1:\r
         skulist = [sku]\r
         nextsku = sku\r
         while 1:\r
index 97ce5b24620c7949e4e0b9c95f81b3d5ed1b39d7..4a87fd17629467fc0536ccf0a769943e053bafe3 100644 (file)
@@ -1327,7 +1327,7 @@ class DscBuildData(PlatformBuildClassObject):
                         while '[' in FieldName:\r
                             FieldName = FieldName.rsplit('[', 1)[0]\r
                             CApp = CApp + '  __FLEXIBLE_SIZE(Size, %s, %s, %d);\n' % (Pcd.DatumType, FieldName.strip("."), ArrayIndex + 1)\r
                         while '[' in FieldName:\r
                             FieldName = FieldName.rsplit('[', 1)[0]\r
                             CApp = CApp + '  __FLEXIBLE_SIZE(Size, %s, %s, %d);\n' % (Pcd.DatumType, FieldName.strip("."), ArrayIndex + 1)\r
-            for skuname in self.SkuIdMgr.SkuOverrideOrder():\r
+            for skuname in self.SkuIdMgr.GetSkuChain(SkuName):\r
                 inherit_OverrideValues = Pcd.SkuOverrideValues[skuname]\r
                 for FieldList in [inherit_OverrideValues.get(DefaultStoreName)]:\r
                     if not FieldList:\r
                 inherit_OverrideValues = Pcd.SkuOverrideValues[skuname]\r
                 for FieldList in [inherit_OverrideValues.get(DefaultStoreName)]:\r
                     if not FieldList:\r
@@ -1391,7 +1391,7 @@ class DscBuildData(PlatformBuildClassObject):
                             CApp = CApp + '  Pcd->%s = %dULL; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
                         else:\r
                             CApp = CApp + '  Pcd->%s = %d; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
                             CApp = CApp + '  Pcd->%s = %dULL; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
                         else:\r
                             CApp = CApp + '  Pcd->%s = %d; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
-            for skuname in self.SkuIdMgr.SkuOverrideOrder():\r
+            for skuname in self.SkuIdMgr.GetSkuChain(SkuName):\r
                 inherit_OverrideValues = Pcd.SkuOverrideValues[skuname]\r
                 for FieldList in [Pcd.DefaultFromDSC,inherit_OverrideValues.get(DefaultStoreName)]:\r
                     if not FieldList:\r
                 inherit_OverrideValues = Pcd.SkuOverrideValues[skuname]\r
                 for FieldList in [Pcd.DefaultFromDSC,inherit_OverrideValues.get(DefaultStoreName)]:\r
                     if not FieldList:\r