BaseTools: DSC Components section support flexible PCD

DSC Components section support flexible PCD, and for binary driver, we
need patch this value. Update the split char ',' not ', ' because some
value may have space, while others may not have this space.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com>
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Yunhua Feng
2018-03-03 09:12:18 +08:00
committed by Liming Gao
parent 0e2a5749d8
commit 0537f332c9
2 changed files with 17 additions and 1 deletions

View File

@ -46,6 +46,7 @@ from Common.LongFilePathSupport import OpenLongFilePath as open
import Common.GlobalData as GlobalData import Common.GlobalData as GlobalData
from DepexSection import DepexSection from DepexSection import DepexSection
from Common.Misc import SaveFileOnChange from Common.Misc import SaveFileOnChange
from Common.Expression import *
## generate FFS from INF ## generate FFS from INF
# #
@ -279,6 +280,20 @@ class FfsInfStatement(FfsInfStatementClassObject):
if not DscOverride and not FdfOverride and not BuildOptionOverride: if not DscOverride and not FdfOverride and not BuildOptionOverride:
continue continue
# Support Flexible PCD format
if DefaultValue:
try:
DefaultValue = ValueExpressionEx(DefaultValue, Pcd.DatumType, Platform._GuidDict)(True)
except BadExpression:
EdkLogger.error("GenFds", GENFDS_ERROR, 'PCD [%s.%s] Value "%s"' %(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, DefaultValue), File=self.InfFileName)
if Pcd.DefaultValue:
try:
Pcd.DefaultValue = ValueExpressionEx(Pcd.DefaultValue, Pcd.DatumType, Platform._GuidDict)(True)
except BadExpression:
EdkLogger.error("GenFds", GENFDS_ERROR, 'PCD [%s.%s] Value "%s"' %(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, Pcd.DefaultValue),File=self.InfFileName)
# Check value, if value are equal, no need to patch # Check value, if value are equal, no need to patch
if Pcd.DatumType == "VOID*": if Pcd.DatumType == "VOID*":
if Pcd.DefaultValue == DefaultValue or DefaultValue in [None, '']: if Pcd.DefaultValue == DefaultValue or DefaultValue in [None, '']:

View File

@ -165,6 +165,7 @@ def PatchBinaryFile(FileName, ValueOffset, TypeName, ValueString, MaxSize=0):
Index = 0 Index = 0
try: try:
for ByteString in ValueList: for ByteString in ValueList:
ByteString = ByteString.strip()
if ByteString.upper().startswith('0X'): if ByteString.upper().startswith('0X'):
ByteValue = int(ByteString, 16) ByteValue = int(ByteString, 16)
else: else: