]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: DSC Components section support flexible PCD
authorYunhua Feng <yunhuax.feng@intel.com>
Sat, 3 Mar 2018 01:12:18 +0000 (09:12 +0800)
committerLiming Gao <liming.gao@intel.com>
Sat, 3 Mar 2018 04:40:35 +0000 (12:40 +0800)
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>
BaseTools/Source/Python/GenFds/FfsInfStatement.py
BaseTools/Source/Python/PatchPcdValue/PatchPcdValue.py

index b0b242be8d7104f745a0bdf4fdba5cdaf0d08ca3..dfff892e21491e51c251c4a88dc3b6906bb44800 100644 (file)
@@ -46,6 +46,7 @@ from Common.LongFilePathSupport import OpenLongFilePath as open
 import Common.GlobalData as GlobalData\r
 from DepexSection import DepexSection\r
 from Common.Misc import SaveFileOnChange\r
+from Common.Expression import *\r
 \r
 ## generate FFS from INF\r
 #\r
@@ -279,6 +280,20 @@ class FfsInfStatement(FfsInfStatementClassObject):
 \r
             if not DscOverride and not FdfOverride and not BuildOptionOverride:\r
                 continue\r
+\r
+            # Support Flexible PCD format\r
+            if DefaultValue:\r
+                try:\r
+                    DefaultValue = ValueExpressionEx(DefaultValue, Pcd.DatumType, Platform._GuidDict)(True)\r
+                except BadExpression:\r
+                    EdkLogger.error("GenFds", GENFDS_ERROR, 'PCD [%s.%s] Value "%s"' %(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, DefaultValue), File=self.InfFileName)\r
+\r
+            if Pcd.DefaultValue:\r
+                try:\r
+                    Pcd.DefaultValue = ValueExpressionEx(Pcd.DefaultValue, Pcd.DatumType, Platform._GuidDict)(True)\r
+                except BadExpression:\r
+                    EdkLogger.error("GenFds", GENFDS_ERROR, 'PCD [%s.%s] Value "%s"' %(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, Pcd.DefaultValue),File=self.InfFileName)\r
+\r
             # Check value, if value are equal, no need to patch\r
             if Pcd.DatumType == "VOID*":\r
                 if Pcd.DefaultValue == DefaultValue or DefaultValue in [None, '']:\r
index 882da81930da267e02ba412fe9c4a69feb5b2bd8..942ba88d200f98c70ba163443aa6727140666402 100644 (file)
@@ -161,10 +161,11 @@ def PatchBinaryFile(FileName, ValueOffset, TypeName, ValueString, MaxSize=0):
             #\r
             # Patch {0x1, 0x2, ...} byte by byte\r
             #\r
-            ValueList = ValueString[1 : len(ValueString) - 1].split(', ')\r
+            ValueList = ValueString[1 : len(ValueString) - 1].split(',')\r
             Index = 0\r
             try:\r
                 for ByteString in ValueList:\r
+                    ByteString = ByteString.strip()\r
                     if ByteString.upper().startswith('0X'):\r
                         ByteValue = int(ByteString, 16)\r
                     else:\r