I sent this earlier, but failed the mailing list part.

Reviewed-by: Jaben Carsey <jaben.car...@intel.com>
And pushed.

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> Vladimir Olovyannikov via edk2-devel
> Sent: Tuesday, February 05, 2019 8:58 AM
> To: Laszlo Ersek <ler...@redhat.com>; edk2-devel@lists.01.org
> Cc: Gao, Liming <liming....@intel.com>
> Subject: Re: [edk2] [PATCH] BaseTools/BuildReport: fix report for
> platforms/arches without struct PCDs
> 
> Laszlo,
> Thanks a lot for the prompt fix. Works now.
> 
> Tested-by: Vladimir Olovyannikov <vladimir.olovyanni...@broadcom.com>
> 
> -----Original Message-----
> From: Laszlo Ersek [mailto:ler...@redhat.com]
> Sent: Tuesday, February 5, 2019 3:22 AM
> To: edk2-devel@lists.01.org
> Cc: Bob Feng; Liming Gao; Vladimir Olovyannikov; Yonghong Zhu
> Subject: [PATCH] BaseTools/BuildReport: fix report for platforms/arches
> without struct PCDs
> 
> The goal of commit 97c8f5b9e7d3 ("BaseTools:StructurePCD value display
> incorrect in "Not used" section.", 2019-02-02) was to display the full
> contents of such structure PCDs in the build report that were set in the
> platform DSC or the FDF, but not used in any module INFs. The listings
> would appear in the
> 
>   PCDs not used by modules or in conditional directives
> 
> section of the build report.
> 
> Commit 97c8f5b9e7d3 assumed that any (platform, architecture)
> combination
> would have a (possibly empty) set of structure PCD (and so the set of the
> structure PCDs could be filtered for set-but-unused ones).
> 
> This is not the case: in "DscBuildData.py", in method
> UpdateStructuredPcds(), if "S_pcd_set" remains an empty OrderedDict(),
> then it is not added to "GlobalData.gStructurePcd" *at all*, for the
> current (platform, architecture) combination.
> 
> As a result, when the PCD report tries to fetch the set of structure PCDs
> for the current (platform, architecture), "GlobalData.gStructurePcd" does
> not return an empty OrderedDict(); instead, it raises a KeyError. Fix it
> by defaulting to an empty OrderedDict(), with the get() method.
> 
> Reported-by: Vladimir Olovyannikov
> <vladimir.olovyanni...@broadcom.com>
> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1513
> Fixes: 97c8f5b9e7d3136b6051a05cf056ce5ca9e79893
> Cc: Bob Feng <bob.c.f...@intel.com>
> Cc: Liming Gao <liming....@intel.com>
> Cc: Vladimir Olovyannikov <vladimir.olovyanni...@broadcom.com>
> Cc: Yonghong Zhu <yonghong....@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Laszlo Ersek <ler...@redhat.com>
> ---
> 
> Notes:
>     Repo:   https://github.com/lersek/edk2.git
>     Branch: report_without_struct_pcds
> 
>  BaseTools/Source/Python/build/BuildReport.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Source/Python/build/BuildReport.py
> b/BaseTools/Source/Python/build/BuildReport.py
> index e457660fcef3..0b98d62cb6aa 100644
> --- a/BaseTools/Source/Python/build/BuildReport.py
> +++ b/BaseTools/Source/Python/build/BuildReport.py
> @@ -780,7 +780,7 @@ class PcdReport(object):
>              # Collect the PCD defined in DSC/FDF file, but not used in
> module
>              #
>              UnusedPcdFullList = []
> -            StructPcdDict = GlobalData.gStructurePcd[self.Arch]
> +            StructPcdDict = GlobalData.gStructurePcd.get(self.Arch,
> collections.OrderedDict())
>              for Name, Guid in StructPcdDict:
>                  if (Name, Guid) not in Pa.Platform.Pcds:
>                      Pcd = StructPcdDict[(Name, Guid)]
> --
> 2.19.1.3.g30247aa5d201
> _______________________________________________
> 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

Reply via email to