]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Enhance the *P Flag display for Structure Pcd
authorYonghong Zhu <yonghong.zhu@intel.com>
Mon, 15 Oct 2018 06:51:55 +0000 (14:51 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Mon, 15 Oct 2018 07:26:48 +0000 (15:26 +0800)
Cover the case:
1.only define the structure Pcd in DEC file, it should not have any
Flag.
2.In the DEC file and DSC file only have the PCD's default value, and
without the field value, it should have *P Flag.
(re-add this patch since it be reverted in Python3 migration patches,
but this patch is not related with Python3)

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
BaseTools/Source/Python/build/BuildReport.py

index 4fe29f124d842d3371de129f0a173f7b6b3978f8..50db50378067e597e2f3e79299e6c56ed6266f5f 100644 (file)
@@ -1079,37 +1079,48 @@ class PcdReport(object):
                         DecMatch = False\r
                     elif Pcd.SkuOverrideValues:\r
                         DscOverride = False\r
-                        if not Pcd.SkuInfoList:\r
-                            OverrideValues = Pcd.SkuOverrideValues\r
-                            if OverrideValues:\r
-                                Keys = OverrideValues.keys()\r
-                                Data = OverrideValues[Keys[0]]\r
-                                Struct = Data.values()[0]\r
-                                DscOverride = self.ParseStruct(Struct)\r
+                        if Pcd.DefaultFromDSC:\r
+                            DscOverride = True\r
                         else:\r
-                            SkuList = sorted(Pcd.SkuInfoList.keys())\r
-                            for Sku in SkuList:\r
-                                SkuInfo = Pcd.SkuInfoList[Sku]\r
-                                if TypeName in ('DYNHII', 'DEXHII'):\r
-                                    if SkuInfo.DefaultStoreDict:\r
-                                        DefaultStoreList = sorted(SkuInfo.DefaultStoreDict.keys())\r
-                                        for DefaultStore in DefaultStoreList:\r
-                                            OverrideValues = Pcd.SkuOverrideValues[Sku]\r
-                                            DscOverride = self.ParseStruct(OverrideValues[DefaultStore])\r
-                                            if DscOverride:\r
-                                                break\r
-                                else:\r
-                                    OverrideValues = Pcd.SkuOverrideValues[Sku]\r
+                            DictLen = 0\r
+                            for item in Pcd.SkuOverrideValues:\r
+                                DictLen += len(Pcd.SkuOverrideValues[item])\r
+                            if not DictLen:\r
+                                DscOverride = False\r
+                            else:\r
+                                if not Pcd.SkuInfoList:\r
+                                    OverrideValues = Pcd.SkuOverrideValues\r
                                     if OverrideValues:\r
-                                        Keys = OverrideValues.keys()\r
-                                        OverrideFieldStruct = self.OverrideFieldValue(Pcd, OverrideValues[Keys[0]])\r
-                                        DscOverride = self.ParseStruct(OverrideFieldStruct)\r
-                                if DscOverride:\r
-                                    break\r
+                                        Keys = list(OverrideValues.keys())\r
+                                        Data = OverrideValues[Keys[0]]\r
+                                        Struct = list(Data.values())\r
+                                        DscOverride = self.ParseStruct(Struct[0])\r
+                                else:\r
+                                    SkuList = sorted(Pcd.SkuInfoList.keys())\r
+                                    for Sku in SkuList:\r
+                                        SkuInfo = Pcd.SkuInfoList[Sku]\r
+                                        if TypeName in ('DYNHII', 'DEXHII'):\r
+                                            if SkuInfo.DefaultStoreDict:\r
+                                                DefaultStoreList = sorted(SkuInfo.DefaultStoreDict.keys())\r
+                                                for DefaultStore in DefaultStoreList:\r
+                                                    OverrideValues = Pcd.SkuOverrideValues[Sku]\r
+                                                    DscOverride = self.ParseStruct(OverrideValues[DefaultStore])\r
+                                                    if DscOverride:\r
+                                                        break\r
+                                        else:\r
+                                            OverrideValues = Pcd.SkuOverrideValues[Sku]\r
+                                            if OverrideValues:\r
+                                                Keys = list(OverrideValues.keys())\r
+                                                OverrideFieldStruct = self.OverrideFieldValue(Pcd, OverrideValues[Keys[0]])\r
+                                                DscOverride = self.ParseStruct(OverrideFieldStruct)\r
+                                        if DscOverride:\r
+                                            break\r
                         if DscOverride:\r
                             DscDefaultValue = True\r
                             DscMatch = True\r
                             DecMatch = False\r
+                        else:\r
+                            DecMatch = True\r
                     else:\r
                         DscDefaultValue = True\r
                         DscMatch = True\r
@@ -1256,11 +1267,12 @@ class PcdReport(object):
             if IsStructure:\r
                 OverrideValues = Pcd.SkuOverrideValues\r
                 if OverrideValues:\r
-                    Keys = OverrideValues.keys()\r
+                    Keys = list(OverrideValues.keys())\r
                     Data = OverrideValues[Keys[0]]\r
-                    Struct = Data.values()[0]\r
-                    OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct)\r
-                    self.PrintStructureInfo(File, OverrideFieldStruct)\r
+                    Struct = list(Data.values())\r
+                    if Struct:\r
+                        OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct[0])\r
+                        self.PrintStructureInfo(File, OverrideFieldStruct)\r
             self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
         else:\r
             FirstPrint = True\r