public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Gao, Liming" <liming.gao@intel.com>
To: "Zhu, Yonghong" <yonghong.zhu@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [Patch] BaseTools: Fix the bug 'DSC DEFAULT' in report wrongly use FDF value
Date: Wed, 11 Oct 2017 04:48:07 +0000	[thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E169BBA@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <1507556220-19680-1-git-send-email-yonghong.zhu@intel.com>

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

>-----Original Message-----
>From: Zhu, Yonghong
>Sent: Monday, October 09, 2017 9:37 PM
>To: edk2-devel@lists.01.org
>Cc: Gao, Liming <liming.gao@intel.com>
>Subject: [Patch] BaseTools: Fix the bug 'DSC DEFAULT' in report wrongly use
>FDF value
>
>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>
>---
> BaseTools/Source/Python/Workspace/BuildClassObject.py |  7 +++++--
> .../Source/Python/Workspace/WorkspaceDatabase.py      | 19 +++++++++----
>------
> BaseTools/Source/Python/build/BuildReport.py          |  7 ++++---
> 3 files changed, 18 insertions(+), 15 deletions(-)
>
>diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py
>b/BaseTools/Source/Python/Workspace/BuildClassObject.py
>index ea26e5e..5fa497b 100644
>--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
>+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
>@@ -1,9 +1,9 @@
> ## @file
> # This file is used to define each component of the build database
> #
>-# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
>+# Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
> # This program and the accompanying materials
> # are licensed and made available under the terms and conditions of the BSD
>License
> # which accompanies this distribution.  The full text of the license may be
>found at
> # http://opensource.org/licenses/bsd-license.php
> #
>@@ -42,11 +42,11 @@ from Common.BuildToolError import *
> # @var SkuInfoList:          To store value for SkuInfoList
> # @var IsOverrided:          To store value for IsOverrided
> # @var Phase:                To store value for Phase, default is "DXE"
> #
> class PcdClassObject(object):
>-    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 = []):
>+    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):
>         self.TokenCName = Name
>         self.TokenSpaceGuidCName = Guid
>         self.TokenSpaceGuidValue = GuidValue
>         self.Type = Type
>         self.DatumType = DatumType
>@@ -60,10 +60,13 @@ class PcdClassObject(object):
>         self.IsFromBinaryInf = False
>         self.IsFromDsc = False
>         self.validateranges = validateranges
>         self.validlists = validlists
>         self.expressions = expressions
>+        self.DscDefaultValue = None
>+        if IsDsc:
>+            self.DscDefaultValue = Value
>
>     ## Convert the class to a string
>     #
>     #  Convert each member of the class to string
>     #  Organize to a signle line format string
>diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
>b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
>index b617221..2c4b973 100644
>--- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
>+++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
>@@ -883,12 +883,12 @@ class DscBuildData(PlatformBuildClassObject):
>                                                 PcdValue,
>                                                 '',
>                                                 MaxDatumSize,
>                                                 {},
>                                                 False,
>-                                                None
>-                                                )
>+                                                None,
>+                                                IsDsc=True)
>         return Pcds
>
>     ## Retrieve dynamic PCD settings
>     #
>     #   @param  Type    PCD type
>@@ -948,13 +948,13 @@ class DscBuildData(PlatformBuildClassObject):
>                                                     PcdValue,
>                                                     '',
>                                                     MaxDatumSize,
>                                                     {SkuName : SkuInfo},
>                                                     False,
>-                                                    None
>-                                                    )
>-
>+                                                    None,
>+                                                    IsDsc=True)
>+
>         for pcd in Pcds.values():
>             pcdDecObject =
>self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]
>             if 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' not in
>pcd.SkuInfoList.keys():
>                 valuefromDec = pcdDecObject.DefaultValue
>                 SkuInfo = SkuInfoClass('DEFAULT', '0', '', '', '', '', '', valuefromDec)
>@@ -1067,13 +1067,12 @@ class DscBuildData(PlatformBuildClassObject):
>                                                 {SkuName : SkuInfo},
>                                                 False,
>                                                 None,
>                                                 pcdDecObject.validateranges,
>                                                 pcdDecObject.validlists,
>-                                                pcdDecObject.expressions
>-                                                )
>-
>+                                                pcdDecObject.expressions,
>+                                                IsDsc=True)
>
>         for pcd in Pcds.values():
>             SkuInfoObj = pcd.SkuInfoList.values()[0]
>             pcdDecObject =
>self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]
>             # Only fix the value while no value provided in DSC file.
>@@ -1177,12 +1176,12 @@ class DscBuildData(PlatformBuildClassObject):
>                                                 InitialValue,
>                                                 '',
>                                                 MaxDatumSize,
>                                                 {SkuName : SkuInfo},
>                                                 False,
>-                                                None
>-                                                )
>+                                                None,
>+                                                IsDsc=True)
>         for pcd in Pcds.values():
>             SkuInfoObj = pcd.SkuInfoList.values()[0]
>             pcdDecObject =
>self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]
>             if 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' not in
>pcd.SkuInfoList.keys():
>                 valuefromDec = pcdDecObject.DefaultValue
>diff --git a/BaseTools/Source/Python/build/BuildReport.py
>b/BaseTools/Source/Python/build/BuildReport.py
>index f0e9093..6a4d7e0 100644
>--- a/BaseTools/Source/Python/build/BuildReport.py
>+++ b/BaseTools/Source/Python/build/BuildReport.py
>@@ -831,11 +831,11 @@ class PcdReport(object):
>         #
>         self.DscPcdDefault = {}
>         for Arch in Wa.ArchList:
>             Platform = Wa.BuildDatabase[Wa.MetaFile, Arch, Wa.BuildTarget,
>Wa.ToolChain]
>             for (TokenCName, TokenSpaceGuidCName) in Platform.Pcds:
>-                DscDefaultValue = Platform.Pcds[(TokenCName,
>TokenSpaceGuidCName)].DefaultValue
>+                DscDefaultValue = Platform.Pcds[(TokenCName,
>TokenSpaceGuidCName)].DscDefaultValue
>                 if DscDefaultValue:
>                     self.DscPcdDefault[(TokenCName, TokenSpaceGuidCName)] =
>DscDefaultValue
>
>     def GenerateReport(self, File, ModulePcdSet):
>         if self.ConditionalPcds:
>@@ -912,10 +912,11 @@ class PcdReport(object):
>                     #
>                     # Get PCD default value and their override relationship
>                     #
>                     DecDefaultValue = self.DecPcdDefault.get((Pcd.TokenCName,
>Pcd.TokenSpaceGuidCName, DecType))
>                     DscDefaultValue = self.DscPcdDefault.get((Pcd.TokenCName,
>Pcd.TokenSpaceGuidCName))
>+                    DscDefaultValBak= DscDefaultValue
>                     DscDefaultValue = self.FdfPcdSet.get((Pcd.TokenCName, Key),
>DscDefaultValue)
>                     InfDefaultValue = None
>
>                     PcdValue = DecDefaultValue
>                     if DscDefaultValue:
>@@ -998,12 +999,12 @@ class PcdReport(object):
>                             if TypeName in ('DYNHII', 'DEXHII'):
>                                 FileWrite(File, '%*s: %s: %s' % (self.MaxLen + 4,
>SkuInfo.VariableGuid, SkuInfo.VariableName, SkuInfo.VariableOffset))
>                             else:
>                                 FileWrite(File, '%*s' % (self.MaxLen + 4, SkuInfo.VpdOffset))
>
>-                    if not DscMatch and DscDefaultValue != None:
>-                        FileWrite(File, '    %*s = %s' % (self.MaxLen + 19, 'DSC DEFAULT',
>DscDefaultValue.strip()))
>+                    if not DscMatch and DscDefaultValBak != None:
>+                        FileWrite(File, '    %*s = %s' % (self.MaxLen + 19, 'DSC DEFAULT',
>DscDefaultValBak.strip()))
>
>                     if not InfMatch and InfDefaultValue != None:
>                         FileWrite(File, '    %*s = %s' % (self.MaxLen + 19, 'INF DEFAULT',
>InfDefaultValue.strip()))
>
>                     if not DecMatch and DecDefaultValue != None:
>--
>2.6.1.windows.1



  reply	other threads:[~2017-10-11  4:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-09 13:37 [Patch] BaseTools: Fix the bug 'DSC DEFAULT' in report wrongly use FDF value Yonghong Zhu
2017-10-11  4:48 ` Gao, Liming [this message]
  -- strict thread matches above, loose matches on Subject: below --
2017-10-09 13:41 Yonghong Zhu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A89E2EF3DFEDB4C8BFDE51014F606A14E169BBA@SHSMSX104.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox