mirror of https://github.com/acidanthera/audk.git
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> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
911405a3f1
commit
cc71d8b7f8
|
@ -1,7 +1,7 @@
|
||||||
## @file
|
## @file
|
||||||
# This file is used to define each component of the build database
|
# 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
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# 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
|
# which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -44,7 +44,7 @@ from Common.BuildToolError import *
|
||||||
# @var Phase: To store value for Phase, default is "DXE"
|
# @var Phase: To store value for Phase, default is "DXE"
|
||||||
#
|
#
|
||||||
class PcdClassObject(object):
|
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.TokenCName = Name
|
||||||
self.TokenSpaceGuidCName = Guid
|
self.TokenSpaceGuidCName = Guid
|
||||||
self.TokenSpaceGuidValue = GuidValue
|
self.TokenSpaceGuidValue = GuidValue
|
||||||
|
@ -62,6 +62,9 @@ class PcdClassObject(object):
|
||||||
self.validateranges = validateranges
|
self.validateranges = validateranges
|
||||||
self.validlists = validlists
|
self.validlists = validlists
|
||||||
self.expressions = expressions
|
self.expressions = expressions
|
||||||
|
self.DscDefaultValue = None
|
||||||
|
if IsDsc:
|
||||||
|
self.DscDefaultValue = Value
|
||||||
|
|
||||||
## Convert the class to a string
|
## Convert the class to a string
|
||||||
#
|
#
|
||||||
|
|
|
@ -885,8 +885,8 @@ class DscBuildData(PlatformBuildClassObject):
|
||||||
MaxDatumSize,
|
MaxDatumSize,
|
||||||
{},
|
{},
|
||||||
False,
|
False,
|
||||||
None
|
None,
|
||||||
)
|
IsDsc=True)
|
||||||
return Pcds
|
return Pcds
|
||||||
|
|
||||||
## Retrieve dynamic PCD settings
|
## Retrieve dynamic PCD settings
|
||||||
|
@ -950,9 +950,9 @@ class DscBuildData(PlatformBuildClassObject):
|
||||||
MaxDatumSize,
|
MaxDatumSize,
|
||||||
{SkuName : SkuInfo},
|
{SkuName : SkuInfo},
|
||||||
False,
|
False,
|
||||||
None
|
None,
|
||||||
)
|
IsDsc=True)
|
||||||
|
|
||||||
for pcd in Pcds.values():
|
for pcd in Pcds.values():
|
||||||
pcdDecObject = self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]
|
pcdDecObject = self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]
|
||||||
if 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' not in pcd.SkuInfoList.keys():
|
if 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' not in pcd.SkuInfoList.keys():
|
||||||
|
@ -1069,9 +1069,8 @@ class DscBuildData(PlatformBuildClassObject):
|
||||||
None,
|
None,
|
||||||
pcdDecObject.validateranges,
|
pcdDecObject.validateranges,
|
||||||
pcdDecObject.validlists,
|
pcdDecObject.validlists,
|
||||||
pcdDecObject.expressions
|
pcdDecObject.expressions,
|
||||||
)
|
IsDsc=True)
|
||||||
|
|
||||||
|
|
||||||
for pcd in Pcds.values():
|
for pcd in Pcds.values():
|
||||||
SkuInfoObj = pcd.SkuInfoList.values()[0]
|
SkuInfoObj = pcd.SkuInfoList.values()[0]
|
||||||
|
@ -1179,8 +1178,8 @@ class DscBuildData(PlatformBuildClassObject):
|
||||||
MaxDatumSize,
|
MaxDatumSize,
|
||||||
{SkuName : SkuInfo},
|
{SkuName : SkuInfo},
|
||||||
False,
|
False,
|
||||||
None
|
None,
|
||||||
)
|
IsDsc=True)
|
||||||
for pcd in Pcds.values():
|
for pcd in Pcds.values():
|
||||||
SkuInfoObj = pcd.SkuInfoList.values()[0]
|
SkuInfoObj = pcd.SkuInfoList.values()[0]
|
||||||
pcdDecObject = self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]
|
pcdDecObject = self._DecPcds[pcd.TokenCName,pcd.TokenSpaceGuidCName]
|
||||||
|
|
|
@ -833,7 +833,7 @@ class PcdReport(object):
|
||||||
for Arch in Wa.ArchList:
|
for Arch in Wa.ArchList:
|
||||||
Platform = Wa.BuildDatabase[Wa.MetaFile, Arch, Wa.BuildTarget, Wa.ToolChain]
|
Platform = Wa.BuildDatabase[Wa.MetaFile, Arch, Wa.BuildTarget, Wa.ToolChain]
|
||||||
for (TokenCName, TokenSpaceGuidCName) in Platform.Pcds:
|
for (TokenCName, TokenSpaceGuidCName) in Platform.Pcds:
|
||||||
DscDefaultValue = Platform.Pcds[(TokenCName, TokenSpaceGuidCName)].DefaultValue
|
DscDefaultValue = Platform.Pcds[(TokenCName, TokenSpaceGuidCName)].DscDefaultValue
|
||||||
if DscDefaultValue:
|
if DscDefaultValue:
|
||||||
self.DscPcdDefault[(TokenCName, TokenSpaceGuidCName)] = DscDefaultValue
|
self.DscPcdDefault[(TokenCName, TokenSpaceGuidCName)] = DscDefaultValue
|
||||||
|
|
||||||
|
@ -914,6 +914,7 @@ class PcdReport(object):
|
||||||
#
|
#
|
||||||
DecDefaultValue = self.DecPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName, DecType))
|
DecDefaultValue = self.DecPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName, DecType))
|
||||||
DscDefaultValue = self.DscPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName))
|
DscDefaultValue = self.DscPcdDefault.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName))
|
||||||
|
DscDefaultValBak= DscDefaultValue
|
||||||
DscDefaultValue = self.FdfPcdSet.get((Pcd.TokenCName, Key), DscDefaultValue)
|
DscDefaultValue = self.FdfPcdSet.get((Pcd.TokenCName, Key), DscDefaultValue)
|
||||||
InfDefaultValue = None
|
InfDefaultValue = None
|
||||||
|
|
||||||
|
@ -1000,8 +1001,8 @@ class PcdReport(object):
|
||||||
else:
|
else:
|
||||||
FileWrite(File, '%*s' % (self.MaxLen + 4, SkuInfo.VpdOffset))
|
FileWrite(File, '%*s' % (self.MaxLen + 4, SkuInfo.VpdOffset))
|
||||||
|
|
||||||
if not DscMatch and DscDefaultValue != None:
|
if not DscMatch and DscDefaultValBak != None:
|
||||||
FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'DSC DEFAULT', DscDefaultValue.strip()))
|
FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'DSC DEFAULT', DscDefaultValBak.strip()))
|
||||||
|
|
||||||
if not InfMatch and InfDefaultValue != None:
|
if not InfMatch and InfDefaultValue != None:
|
||||||
FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'INF DEFAULT', InfDefaultValue.strip()))
|
FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'INF DEFAULT', InfDefaultValue.strip()))
|
||||||
|
|
Loading…
Reference in New Issue