BaseTools:Fixed build failure when specifying multiple BUILDTARGET

With Python3, the dict.value() method returns an iterator.
If a dictionary is updated while an iterator on its keys is used,
a RuntimeError is generated.
Converting the iterator to a list() forces a copy of the mutable
keys in an immutable list which can be safely iterated.

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Zhiju.Fan <zhijux.fan@intel.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
This commit is contained in:
Fan, ZhijuX 2019-02-19 18:56:03 +08:00 committed by Feng, Bob C
parent 7da3ed89d4
commit e8d13fef90
1 changed files with 1 additions and 1 deletions

View File

@ -580,7 +580,7 @@ class WorkspaceAutoGen(AutoGen):
if NewPcd2 not in GlobalData.MixedPcd[item]:
GlobalData.MixedPcd[item].append(NewPcd2)
for BuildData in PGen.BuildDatabase._CACHE_.values():
for BuildData in list(PGen.BuildDatabase._CACHE_.values()):
if BuildData.Arch != Arch:
continue
for key in BuildData.Pcds: