From: Vladimir Olovyannikov <vladimir.olovyannikov@broadcom.com>
To: Laszlo Ersek <lersek@redhat.com>, edk2-devel@lists.01.org
Cc: Bob Feng <bob.c.feng@intel.com>,
Liming Gao <liming.gao@intel.com>,
Yonghong Zhu <yonghong.zhu@intel.com>
Subject: Re: [PATCH] BaseTools/BuildReport: fix report for platforms/arches without struct PCDs
Date: Tue, 5 Feb 2019 08:58:18 -0800 [thread overview]
Message-ID: <25510a796451b6ffcc9ada39be8d3d6d@mail.gmail.com> (raw)
In-Reply-To: <20190205112213.682-1-lersek@redhat.com>
Laszlo,
Thanks a lot for the prompt fix. Works now.
Tested-by: Vladimir Olovyannikov <vladimir.olovyannikov@broadcom.com>
-----Original Message-----
From: Laszlo Ersek [mailto:lersek@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.olovyannikov@broadcom.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1513
Fixes: 97c8f5b9e7d3136b6051a05cf056ce5ca9e79893
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Vladimir Olovyannikov <vladimir.olovyannikov@broadcom.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@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
next prev parent reply other threads:[~2019-02-05 16:58 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-05 11:22 [PATCH] BaseTools/BuildReport: fix report for platforms/arches without struct PCDs Laszlo Ersek
2019-02-05 16:58 ` Vladimir Olovyannikov [this message]
2019-02-06 23:08 ` FW: " Carsey, Jaben
2019-02-07 13:27 ` Laszlo Ersek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=25510a796451b6ffcc9ada39be8d3d6d@mail.gmail.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox