Re: [edk2] [Patch] BaseTools/GenFds: enhance INF built arch filter

2016-05-12 Thread Gao, Liming
Reviewed-by: Liming Gao 

> -Original Message-
> From: Zhu, Yonghong
> Sent: Wednesday, May 11, 2016 5:30 PM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming 
> Subject: [Patch] BaseTools/GenFds: enhance INF built arch filter
> 
> The bug is use FILE_GUID override to build the same module more than
> once, GenFds report warning "xxx NOT found in DSC file; Is it really
> a binary module?". The root cause is the module path with FILE_GUID
> overridden has the file name FILE_GUIDmodule.inf, then
> PlatformDataBase.Modules use FILE_GUIDmodule.inf as key which cause
> __GetPlatformArchList__ return empty.
> 
> Cc: Liming Gao 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu 
> ---
>  BaseTools/Source/Python/GenFds/FfsInfStatement.py | 10 ++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/BaseTools/Source/Python/GenFds/FfsInfStatement.py
> b/BaseTools/Source/Python/GenFds/FfsInfStatement.py
> index bba42c7..b0b22d1 100644
> --- a/BaseTools/Source/Python/GenFds/FfsInfStatement.py
> +++ b/BaseTools/Source/Python/GenFds/FfsInfStatement.py
> @@ -568,10 +568,20 @@ class FfsInfStatement(FfsInfStatementClassObject):
>  for Arch in GenFdsGlobalVariable.ArchList :
>  PlatformDataBase =
> GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.Active
> Platform, Arch, GenFdsGlobalVariable.TargetName,
> GenFdsGlobalVariable.ToolChainTag]
>  if  PlatformDataBase != None:
>  if InfFileKey in PlatformDataBase.Modules:
>  DscArchList.append (Arch)
> +else:
> +#
> +# BaseTools support build same module more than once, the
> module path with FILE_GUID overridden has
> +# the file name FILE_GUIDmodule.inf, then
> PlatformDataBase.Modules use FILE_GUIDmodule.inf as key,
> +# but the path (self.MetaFile.Path) is the real path
> +#
> +for key in PlatformDataBase.Modules.keys():
> +if InfFileKey ==
> str((PlatformDataBase.Modules[key]).MetaFile.Path):
> +DscArchList.append (Arch)
> +break
> 
>  return DscArchList
> 
>  ## GetCurrentArch() method
>  #
> --
> 2.6.1.windows.1

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


[edk2] [Patch] BaseTools/GenFds: enhance INF built arch filter

2016-05-11 Thread Yonghong Zhu
The bug is use FILE_GUID override to build the same module more than
once, GenFds report warning "xxx NOT found in DSC file; Is it really
a binary module?". The root cause is the module path with FILE_GUID
overridden has the file name FILE_GUIDmodule.inf, then
PlatformDataBase.Modules use FILE_GUIDmodule.inf as key which cause
__GetPlatformArchList__ return empty.

Cc: Liming Gao 
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu 
---
 BaseTools/Source/Python/GenFds/FfsInfStatement.py | 10 ++
 1 file changed, 10 insertions(+)

diff --git a/BaseTools/Source/Python/GenFds/FfsInfStatement.py 
b/BaseTools/Source/Python/GenFds/FfsInfStatement.py
index bba42c7..b0b22d1 100644
--- a/BaseTools/Source/Python/GenFds/FfsInfStatement.py
+++ b/BaseTools/Source/Python/GenFds/FfsInfStatement.py
@@ -568,10 +568,20 @@ class FfsInfStatement(FfsInfStatementClassObject):
 for Arch in GenFdsGlobalVariable.ArchList :
 PlatformDataBase = 
GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, 
Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
 if  PlatformDataBase != None:
 if InfFileKey in PlatformDataBase.Modules:
 DscArchList.append (Arch)
+else:
+#
+# BaseTools support build same module more than once, the 
module path with FILE_GUID overridden has
+# the file name FILE_GUIDmodule.inf, then 
PlatformDataBase.Modules use FILE_GUIDmodule.inf as key,
+# but the path (self.MetaFile.Path) is the real path
+#
+for key in PlatformDataBase.Modules.keys():
+if InfFileKey == 
str((PlatformDataBase.Modules[key]).MetaFile.Path):
+DscArchList.append (Arch)
+break
 
 return DscArchList
 
 ## GetCurrentArch() method
 #
-- 
2.6.1.windows.1

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel