]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: Fix the bug 'DSC DEFAULT' in report wrongly use FDF value
authorYonghong Zhu <yonghong.zhu@intel.com>
Mon, 9 Oct 2017 13:15:04 +0000 (21:15 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Wed, 11 Oct 2017 05:51:25 +0000 (13:51 +0800)
current the PCD value in DSC file may be override by FDF file, then it
cause the 'DSC DEFAULT' in build report wrongly display the FDF value
but not the DSC file's value.
This patch add a attribute DscDefaultValue for PcdClassObject to save
the actual DSC file's PCD value and use this value to display for 'DSC
DEFAULT'.

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/Workspace/BuildClassObject.py
BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
BaseTools/Source/Python/build/BuildReport.py

index ea26e5e5a137c212487d122a0e3f906e2ec25c87..5fa497b803d4e93e1c5db85b310c8389432badd1 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # This file is used to define each component of the build database\r
 #\r
-# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -44,7 +44,7 @@ from Common.BuildToolError import *
 # @var Phase:                To store value for Phase, default is "DXE"\r
 #\r
 class PcdClassObject(object):\r
-    def __init__(self, Name = None, Guid = None, Type = None, DatumType = None, Value = None, Token = None, MaxDatumSize = None, SkuInfoList = {}, IsOverrided = False, GuidValue = None, validateranges = [], validlists = [], expressions = []):\r
+    def __init__(self, Name = None, Guid = None, Type = None, DatumType = None, Value = None, Token = None, MaxDatumSize = None, SkuInfoList = {}, IsOverrided = False, GuidValue = None, validateranges = [], validlists = [], expressions = [], IsDsc = False):\r
         self.TokenCName = Name\r
         self.TokenSpaceGuidCName = Guid\r
         self.TokenSpaceGuidValue = GuidValue\r
@@ -62,6 +62,9 @@ class PcdClassObject(object):
         self.validateranges = validateranges\r
         self.validlists = validlists\r
         self.expressions = expressions\r
+        self.DscDefaultValue = None\r
+        if IsDsc:\r
+            self.DscDefaultValue = Value\r
         \r
     ## Convert the class to a string\r
     #\r
index b61722144c5455901ba621be968b915844b2caef..2c4b973901a9b92982d4856a540a413031739d89 100644 (file)
@@ -885,8 +885,8 @@ class DscBuildData(PlatformBuildClassObject):
                                                 MaxDatumSize,\r
                                                 {},\r
                                                 False,\r
-                                                None\r
-                                                )\r
+                                                None,\r
+                                                IsDsc=True)\r
         return Pcds\r
 \r
     ## Retrieve dynamic PCD settings\r
@@ -950,9 +950,9 @@ class DscBuildData(PlatformBuildClassObject):
                                                     MaxDatumSize,\r
                                                     {SkuName : SkuInfo},\r
                                                     False,\r
-                                                    None\r
-                                                    )\r
-        \r
+                                                    None,\r
+                                                    IsDsc=True)\r
+\r
         for pcd in Pcds.values():\r
             pcdDecObject = self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]\r
             if 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' not in pcd.SkuInfoList.keys():                \r
@@ -1069,9 +1069,8 @@ class DscBuildData(PlatformBuildClassObject):
                                                 None,\r
                                                 pcdDecObject.validateranges,\r
                                                 pcdDecObject.validlists,\r
-                                                pcdDecObject.expressions\r
-                                                )\r
-                \r
+                                                pcdDecObject.expressions,\r
+                                                IsDsc=True)\r
 \r
         for pcd in Pcds.values():\r
             SkuInfoObj = pcd.SkuInfoList.values()[0]\r
@@ -1179,8 +1178,8 @@ class DscBuildData(PlatformBuildClassObject):
                                                 MaxDatumSize,\r
                                                 {SkuName : SkuInfo},\r
                                                 False,\r
-                                                None\r
-                                                )\r
+                                                None,\r
+                                                IsDsc=True)\r
         for pcd in Pcds.values():\r
             SkuInfoObj = pcd.SkuInfoList.values()[0]\r
             pcdDecObject = self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]\r
index f0e9093c7abd9b349029536a2f93632a6355e02f..6a4d7e099b69806f631d6dea6b5f37a79ca0126d 100644 (file)
@@ -833,7 +833,7 @@ class PcdReport(object):
         for Arch in Wa.ArchList:\r
             Platform = Wa.BuildDatabase[Wa.MetaFile, Arch, Wa.BuildTarget, Wa.ToolChain]\r
             for (TokenCName, TokenSpaceGuidCName) in Platform.Pcds:\r
-                DscDefaultValue = Platform.Pcds[(TokenCName, TokenSpaceGuidCName)].DefaultValue\r
+                DscDefaultValue = Platform.Pcds[(TokenCName, TokenSpaceGuidCName)].DscDefaultValue\r
                 if DscDefaultValue:\r
                     self.DscPcdDefault[(TokenCName, TokenSpaceGuidCName)] = DscDefaultValue\r
 \r
@@ -914,6 +914,7 @@ class PcdReport(object):
                     #\r
                     DecDefaultValue = self.DecPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName, DecType))\r
                     DscDefaultValue = self.DscPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName))\r
+                    DscDefaultValBak= DscDefaultValue\r
                     DscDefaultValue = self.FdfPcdSet.get((Pcd.TokenCName, Key), DscDefaultValue)\r
                     InfDefaultValue = None\r
                     \r
@@ -1000,8 +1001,8 @@ class PcdReport(object):
                             else:\r
                                 FileWrite(File, '%*s' % (self.MaxLen + 4, SkuInfo.VpdOffset))\r
                                \r
-                    if not DscMatch and DscDefaultValue != None:\r
-                        FileWrite(File, '    %*s = %s' % (self.MaxLen + 19, 'DSC DEFAULT', DscDefaultValue.strip()))\r
+                    if not DscMatch and DscDefaultValBak != None:\r
+                        FileWrite(File, '    %*s = %s' % (self.MaxLen + 19, 'DSC DEFAULT', DscDefaultValBak.strip()))\r
 \r
                     if not InfMatch and InfDefaultValue != None:\r
                         FileWrite(File, '    %*s = %s' % (self.MaxLen + 19, 'INF DEFAULT', InfDefaultValue.strip()))\r