[edk2] [Patch] BaseTools: Fixed Build failed issue.

BobCF posted 1 patch 6 years, 10 months ago
Failed in applying to current master (apply log)
BaseTools/Source/Python/Workspace/DscBuildData.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
[edk2] [Patch] BaseTools: Fixed Build failed issue.
Posted by BobCF 6 years, 10 months ago
If the PCD is not used in DSC file and user set
that PCD value from Command line, build will fail.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
---
 BaseTools/Source/Python/Workspace/DscBuildData.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py
index 1da4f03ab8..6e3cd0f3f1 100644
--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
@@ -896,11 +896,12 @@ class DscBuildData(PlatformBuildClassObject):
                 else:
                     pcdobj = self._Pcds.get((pcd[1],pcd[0]))
                     if pcdobj:
                         pcdset.append((pcd[0],pcd[1], pcdobj.DefaultValue))
                     else:
-                        pcdset.append((pcd[0],pcd[1],pcd[3]))
+                        pcdvalue = pcd[3] if len(pcd) == 4 else pcd[2]
+                        pcdset.append((pcd[0],pcd[1],pcdvalue))
         GlobalData.BuildOptionPcd = pcdset
     def GetFieldValueFromComm(self,ValueStr,TokenSpaceGuidCName, TokenCName, FieldName):
         PredictedFieldType = "VOID*"
         if ValueStr.startswith('L'):
             if not ValueStr[1]:
@@ -2163,14 +2164,18 @@ class DscBuildData(PlatformBuildClassObject):
 
 
         for pcd in Pcds.values():
             SkuInfoObj = pcd.SkuInfoList.values()[0]
             pcdDecObject = self._DecPcds[pcd.TokenCName, pcd.TokenSpaceGuidCName]
+            pcd.DatumType = pcdDecObject.DatumType
             # Only fix the value while no value provided in DSC file.
             for sku in pcd.SkuInfoList.values():
                 if (sku.HiiDefaultValue == "" or sku.HiiDefaultValue == None):
                     sku.HiiDefaultValue = pcdDecObject.DefaultValue
+                    for default_store in sku.DefaultStoreDict:
+                        sku.DefaultStoreDict[default_store]=pcdDecObject.DefaultValue
+                    pcd.DefaultValue = pcdDecObject.DefaultValue
             if 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' not in pcd.SkuInfoList.keys():
                 valuefromDec = pcdDecObject.DefaultValue
                 SkuInfo = SkuInfoClass('DEFAULT', '0', SkuInfoObj.VariableName, SkuInfoObj.VariableGuid, SkuInfoObj.VariableOffset, valuefromDec,VariableAttribute=SkuInfoObj.VariableAttribute,DefaultStore={DefaultStore:valuefromDec})
                 pcd.SkuInfoList['DEFAULT'] = SkuInfo
             elif 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' in pcd.SkuInfoList.keys():
-- 
2.14.3.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [Patch] BaseTools: Fixed Build failed issue.
Posted by Gao, Liming 6 years, 10 months ago
Reviewed-by: Liming Gao <liming.gao@intel.com>

>-----Original Message-----
>From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>BobCF
>Sent: Tuesday, February 06, 2018 3:21 PM
>To: edk2-devel@lists.01.org
>Cc: Gao, Liming <liming.gao@intel.com>
>Subject: [edk2] [Patch] BaseTools: Fixed Build failed issue.
>
>If the PCD is not used in DSC file and user set
>that PCD value from Command line, build will fail.
>
>Contributed-under: TianoCore Contribution Agreement 1.1
>Signed-off-by: Bob Feng <bob.c.feng@intel.com>
>Cc: Liming Gao <liming.gao@intel.com>
>---
> BaseTools/Source/Python/Workspace/DscBuildData.py | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
>diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py
>b/BaseTools/Source/Python/Workspace/DscBuildData.py
>index 1da4f03ab8..6e3cd0f3f1 100644
>--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
>+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
>@@ -896,11 +896,12 @@ class DscBuildData(PlatformBuildClassObject):
>                 else:
>                     pcdobj = self._Pcds.get((pcd[1],pcd[0]))
>                     if pcdobj:
>                         pcdset.append((pcd[0],pcd[1], pcdobj.DefaultValue))
>                     else:
>-                        pcdset.append((pcd[0],pcd[1],pcd[3]))
>+                        pcdvalue = pcd[3] if len(pcd) == 4 else pcd[2]
>+                        pcdset.append((pcd[0],pcd[1],pcdvalue))
>         GlobalData.BuildOptionPcd = pcdset
>     def GetFieldValueFromComm(self,ValueStr,TokenSpaceGuidCName,
>TokenCName, FieldName):
>         PredictedFieldType = "VOID*"
>         if ValueStr.startswith('L'):
>             if not ValueStr[1]:
>@@ -2163,14 +2164,18 @@ class DscBuildData(PlatformBuildClassObject):
>
>
>         for pcd in Pcds.values():
>             SkuInfoObj = pcd.SkuInfoList.values()[0]
>             pcdDecObject = self._DecPcds[pcd.TokenCName,
>pcd.TokenSpaceGuidCName]
>+            pcd.DatumType = pcdDecObject.DatumType
>             # Only fix the value while no value provided in DSC file.
>             for sku in pcd.SkuInfoList.values():
>                 if (sku.HiiDefaultValue == "" or sku.HiiDefaultValue == None):
>                     sku.HiiDefaultValue = pcdDecObject.DefaultValue
>+                    for default_store in sku.DefaultStoreDict:
>+
>sku.DefaultStoreDict[default_store]=pcdDecObject.DefaultValue
>+                    pcd.DefaultValue = pcdDecObject.DefaultValue
>             if 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' not in
>pcd.SkuInfoList.keys():
>                 valuefromDec = pcdDecObject.DefaultValue
>                 SkuInfo = SkuInfoClass('DEFAULT', '0', SkuInfoObj.VariableName,
>SkuInfoObj.VariableGuid, SkuInfoObj.VariableOffset,
>valuefromDec,VariableAttribute=SkuInfoObj.VariableAttribute,DefaultStore=
>{DefaultStore:valuefromDec})
>                 pcd.SkuInfoList['DEFAULT'] = SkuInfo
>             elif 'DEFAULT' not in pcd.SkuInfoList.keys() and 'COMMON' in
>pcd.SkuInfoList.keys():
>--
>2.14.3.windows.1
>
>_______________________________________________
>edk2-devel mailing list
>edk2-devel@lists.01.org
>https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel