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