[edk2] [Patch] BaseTools: Remove the duplicate Pcd items

Yonghong Zhu posted 1 patch 5 years, 9 months ago
Failed in applying to current master (apply log)
BaseTools/Source/Python/AutoGen/AutoGen.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[edk2] [Patch] BaseTools: Remove the duplicate Pcd items
Posted by Yonghong Zhu 5 years, 9 months ago
The case is the Pcd item both used in 1 module inf and 1 lib inf, and
in the DSC component section, it override the Pcd value.
In the module, the pcd value is the override value, but in the lib inf
the pcd value is the value that in the DSC PCD section's value, then it
cause the Pcd value is different in the module and lib. but actually we
only need use the Pcd value in the module to decide whether it use the
same value.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
---
 BaseTools/Source/Python/AutoGen/AutoGen.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py
index 289309f..cf53c2b 100644
--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
@@ -1289,11 +1289,11 @@ class PlatformAutoGen(AutoGen):
     def CollectFixedAtBuildPcds(self):
         for LibAuto in self.LibraryAutoGenList:
             FixedAtBuildPcds = {}
             ShareFixedAtBuildPcdsSameValue = {}
             for Module in LibAuto._ReferenceModules:
-                for Pcd in Module.FixedAtBuildPcds + LibAuto.FixedAtBuildPcds:
+                for Pcd in set(Module.FixedAtBuildPcds + LibAuto.FixedAtBuildPcds):
                     DefaultValue = Pcd.DefaultValue
                     # Cover the case: DSC component override the Pcd value and the Pcd only used in one Lib
                     if Pcd in Module.LibraryPcdList:
                         Index = Module.LibraryPcdList.index(Pcd)
                         DefaultValue = Module.LibraryPcdList[Index].DefaultValue
-- 
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: Remove the duplicate Pcd items
Posted by Gao, Liming 5 years, 9 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 Yonghong Zhu
> Sent: Tuesday, July 17, 2018 10:04 AM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [Patch] BaseTools: Remove the duplicate Pcd items
> 
> The case is the Pcd item both used in 1 module inf and 1 lib inf, and
> in the DSC component section, it override the Pcd value.
> In the module, the pcd value is the override value, but in the lib inf
> the pcd value is the value that in the DSC PCD section's value, then it
> cause the Pcd value is different in the module and lib. but actually we
> only need use the Pcd value in the module to decide whether it use the
> same value.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
> ---
>  BaseTools/Source/Python/AutoGen/AutoGen.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py
> index 289309f..cf53c2b 100644
> --- a/BaseTools/Source/Python/AutoGen/AutoGen.py
> +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
> @@ -1289,11 +1289,11 @@ class PlatformAutoGen(AutoGen):
>      def CollectFixedAtBuildPcds(self):
>          for LibAuto in self.LibraryAutoGenList:
>              FixedAtBuildPcds = {}
>              ShareFixedAtBuildPcdsSameValue = {}
>              for Module in LibAuto._ReferenceModules:
> -                for Pcd in Module.FixedAtBuildPcds + LibAuto.FixedAtBuildPcds:
> +                for Pcd in set(Module.FixedAtBuildPcds + LibAuto.FixedAtBuildPcds):
>                      DefaultValue = Pcd.DefaultValue
>                      # Cover the case: DSC component override the Pcd value and the Pcd only used in one Lib
>                      if Pcd in Module.LibraryPcdList:
>                          Index = Module.LibraryPcdList.index(Pcd)
>                          DefaultValue = Module.LibraryPcdList[Index].DefaultValue
> --
> 2.6.1.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