[edk2] [Patch] BaseTools: Fix the bug to correctly check Pcd type that in FDF file

Yonghong Zhu posted 1 patch 7 years, 5 months ago
Failed in applying to current master (apply log)
BaseTools/Source/Python/build/BuildReport.py | 7 +++++++
1 file changed, 7 insertions(+)
[edk2] [Patch] BaseTools: Fix the bug to correctly check Pcd type that in FDF file
Posted by Yonghong Zhu 7 years, 5 months ago
We set Pcd value in FDF and used this Pcd as PatchableInModule type in
module, it cause build report generate failure. because we incorrectly
set the Pcd type during check whether the Pcd is used.

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
---
 BaseTools/Source/Python/build/BuildReport.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/BaseTools/Source/Python/build/BuildReport.py b/BaseTools/Source/Python/build/BuildReport.py
index a1ee43a..a7cbb6a 100644
--- a/BaseTools/Source/Python/build/BuildReport.py
+++ b/BaseTools/Source/Python/build/BuildReport.py
@@ -736,10 +736,17 @@ class PcdReport(object):
             #
             UnusedPcdFullList = []
             for item in Pa.Platform.Pcds:
                 Pcd = Pa.Platform.Pcds[item]
                 if not Pcd.Type:
+                    # check the Pcd in FDF file, whether it is used in module first
+                    for T in ["FixedAtBuild", "PatchableInModule", "FeatureFlag", "Dynamic", "DynamicEx"]:
+                        PcdList = self.AllPcds.setdefault(Pcd.TokenSpaceGuidCName, {}).setdefault(T, [])
+                        if Pcd in PcdList:
+                            Pcd.Type = T
+                            break
+                if not Pcd.Type:
                     PcdTypeFlag = False
                     for package in Pa.PackageList:
                         for T in ["FixedAtBuild", "PatchableInModule", "FeatureFlag", "Dynamic", "DynamicEx"]:
                             if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName, T) in package.Pcds:
                                 Pcd.Type = T
-- 
2.6.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [Patch] BaseTools: Fix the bug to correctly check Pcd type that in FDF file
Posted by Gao, Liming 7 years, 4 months ago
Reviewed-by: Liming Gao <liming.gao@intel.com>

> -----Original Message-----
> From: Zhu, Yonghong
> Sent: Thursday, July 27, 2017 11:38 AM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming <liming.gao@intel.com>
> Subject: [Patch] BaseTools: Fix the bug to correctly check Pcd type that in FDF file
> 
> We set Pcd value in FDF and used this Pcd as PatchableInModule type in
> module, it cause build report generate failure. because we incorrectly
> set the Pcd type during check whether the Pcd is used.
> 
> Cc: Liming Gao <liming.gao@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
> ---
>  BaseTools/Source/Python/build/BuildReport.py | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/BaseTools/Source/Python/build/BuildReport.py b/BaseTools/Source/Python/build/BuildReport.py
> index a1ee43a..a7cbb6a 100644
> --- a/BaseTools/Source/Python/build/BuildReport.py
> +++ b/BaseTools/Source/Python/build/BuildReport.py
> @@ -736,10 +736,17 @@ class PcdReport(object):
>              #
>              UnusedPcdFullList = []
>              for item in Pa.Platform.Pcds:
>                  Pcd = Pa.Platform.Pcds[item]
>                  if not Pcd.Type:
> +                    # check the Pcd in FDF file, whether it is used in module first
> +                    for T in ["FixedAtBuild", "PatchableInModule", "FeatureFlag", "Dynamic", "DynamicEx"]:
> +                        PcdList = self.AllPcds.setdefault(Pcd.TokenSpaceGuidCName, {}).setdefault(T, [])
> +                        if Pcd in PcdList:
> +                            Pcd.Type = T
> +                            break
> +                if not Pcd.Type:
>                      PcdTypeFlag = False
>                      for package in Pa.PackageList:
>                          for T in ["FixedAtBuild", "PatchableInModule", "FeatureFlag", "Dynamic", "DynamicEx"]:
>                              if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName, T) in package.Pcds:
>                                  Pcd.Type = T
> --
> 2.6.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel