[edk2] [Patch] BaseTools: Fix the regression issue caused by commit dc4c77

Yonghong Zhu posted 1 patch 7 years, 1 month ago
Failed in applying to current master (apply log)
BaseTools/Source/Python/Workspace/WorkspaceDatabase.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[edk2] [Patch] BaseTools: Fix the regression issue caused by commit dc4c77
Posted by Yonghong Zhu 7 years, 1 month ago
In the last commit dc4c77, the _GetHeaderInfo will be called more than
once, which cause the self._ConstructorList.append(Value) append some
duplicate value.

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
---
 BaseTools/Source/Python/Workspace/WorkspaceDatabase.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
index 0686721..c1af5c7 100644
--- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
+++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
@@ -1828,12 +1828,10 @@ class InfBuildData(ModuleBuildClassObject):
             self.__Macros = {}
             # EDK_GLOBAL defined macros can be applied to EDK module
             if self.AutoGenVersion < 0x00010005:
                 self.__Macros.update(GlobalData.gEdkGlobal)
                 self.__Macros.update(GlobalData.gGlobalDefines)
-            else:
-                self.__Macros.update(self.Defines)
         return self.__Macros
 
     ## Get architecture
     def _GetArch(self):
         return self._Arch
@@ -1894,10 +1892,11 @@ class InfBuildData(ModuleBuildClassObject):
             if Name in self:
                 self[Name] = Value
                 if self._Defs == None:
                     self._Defs = sdict()
                 self._Defs[Name] = Value
+                self._Macros[Name] = Value
             # some special items in [Defines] section need special treatment
             elif Name in ('EFI_SPECIFICATION_VERSION', 'UEFI_SPECIFICATION_VERSION', 'EDK_RELEASE_VERSION', 'PI_SPECIFICATION_VERSION'):
                 if Name in ('EFI_SPECIFICATION_VERSION', 'UEFI_SPECIFICATION_VERSION'):
                     Name = 'UEFI_SPECIFICATION_VERSION'
                 if self._Specification == None:
@@ -1954,10 +1953,11 @@ class InfBuildData(ModuleBuildClassObject):
                     self._CustomMakefile[TokenList[0]] = TokenList[1]
             else:
                 if self._Defs == None:
                     self._Defs = sdict()
                 self._Defs[Name] = Value
+                self._Macros[Name] = Value
 
         #
         # Retrieve information in sections specific to Edk.x modules
         #
         if self.AutoGenVersion >= 0x00010005:
-- 
2.6.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [Patch] BaseTools: Fix the regression issue caused by commit dc4c77
Posted by Ard Biesheuvel 7 years, 1 month ago
On 22 February 2017 at 16:03, Yonghong Zhu <yonghong.zhu@intel.com> wrote:
> In the last commit dc4c77, the _GetHeaderInfo will be called more than
> once, which cause the self._ConstructorList.append(Value) append some
> duplicate value.
>
> Cc: Liming Gao <liming.gao@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>

Works for me, thanks

Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

> ---
>  BaseTools/Source/Python/Workspace/WorkspaceDatabase.py | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> index 0686721..c1af5c7 100644
> --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> @@ -1828,12 +1828,10 @@ class InfBuildData(ModuleBuildClassObject):
>              self.__Macros = {}
>              # EDK_GLOBAL defined macros can be applied to EDK module
>              if self.AutoGenVersion < 0x00010005:
>                  self.__Macros.update(GlobalData.gEdkGlobal)
>                  self.__Macros.update(GlobalData.gGlobalDefines)
> -            else:
> -                self.__Macros.update(self.Defines)
>          return self.__Macros
>
>      ## Get architecture
>      def _GetArch(self):
>          return self._Arch
> @@ -1894,10 +1892,11 @@ class InfBuildData(ModuleBuildClassObject):
>              if Name in self:
>                  self[Name] = Value
>                  if self._Defs == None:
>                      self._Defs = sdict()
>                  self._Defs[Name] = Value
> +                self._Macros[Name] = Value
>              # some special items in [Defines] section need special treatment
>              elif Name in ('EFI_SPECIFICATION_VERSION', 'UEFI_SPECIFICATION_VERSION', 'EDK_RELEASE_VERSION', 'PI_SPECIFICATION_VERSION'):
>                  if Name in ('EFI_SPECIFICATION_VERSION', 'UEFI_SPECIFICATION_VERSION'):
>                      Name = 'UEFI_SPECIFICATION_VERSION'
>                  if self._Specification == None:
> @@ -1954,10 +1953,11 @@ class InfBuildData(ModuleBuildClassObject):
>                      self._CustomMakefile[TokenList[0]] = TokenList[1]
>              else:
>                  if self._Defs == None:
>                      self._Defs = sdict()
>                  self._Defs[Name] = Value
> +                self._Macros[Name] = Value
>
>          #
>          # Retrieve information in sections specific to Edk.x modules
>          #
>          if self.AutoGenVersion >= 0x00010005:
> --
> 2.6.1.windows.1
>
> _______________________________________________
> 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
Re: [edk2] [Patch] BaseTools: Fix the regression issue caused by commit dc4c77
Posted by Gao, Liming 7 years, 1 month ago
Reviewed-by: Liming Gao <liming.gao@intel.com>

>-----Original Message-----
>From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>Yonghong Zhu
>Sent: Thursday, February 23, 2017 12:03 AM
>To: edk2-devel@lists.01.org
>Cc: Gao, Liming <liming.gao@intel.com>
>Subject: [edk2] [Patch] BaseTools: Fix the regression issue caused by commit
>dc4c77
>
>In the last commit dc4c77, the _GetHeaderInfo will be called more than
>once, which cause the self._ConstructorList.append(Value) append some
>duplicate value.
>
>Cc: Liming Gao <liming.gao@intel.com>
>Contributed-under: TianoCore Contribution Agreement 1.0
>Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
>---
> BaseTools/Source/Python/Workspace/WorkspaceDatabase.py | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
>diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
>b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
>index 0686721..c1af5c7 100644
>--- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
>+++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
>@@ -1828,12 +1828,10 @@ class InfBuildData(ModuleBuildClassObject):
>             self.__Macros = {}
>             # EDK_GLOBAL defined macros can be applied to EDK module
>             if self.AutoGenVersion < 0x00010005:
>                 self.__Macros.update(GlobalData.gEdkGlobal)
>                 self.__Macros.update(GlobalData.gGlobalDefines)
>-            else:
>-                self.__Macros.update(self.Defines)
>         return self.__Macros
>
>     ## Get architecture
>     def _GetArch(self):
>         return self._Arch
>@@ -1894,10 +1892,11 @@ class InfBuildData(ModuleBuildClassObject):
>             if Name in self:
>                 self[Name] = Value
>                 if self._Defs == None:
>                     self._Defs = sdict()
>                 self._Defs[Name] = Value
>+                self._Macros[Name] = Value
>             # some special items in [Defines] section need special treatment
>             elif Name in ('EFI_SPECIFICATION_VERSION',
>'UEFI_SPECIFICATION_VERSION', 'EDK_RELEASE_VERSION',
>'PI_SPECIFICATION_VERSION'):
>                 if Name in ('EFI_SPECIFICATION_VERSION',
>'UEFI_SPECIFICATION_VERSION'):
>                     Name = 'UEFI_SPECIFICATION_VERSION'
>                 if self._Specification == None:
>@@ -1954,10 +1953,11 @@ class InfBuildData(ModuleBuildClassObject):
>                     self._CustomMakefile[TokenList[0]] = TokenList[1]
>             else:
>                 if self._Defs == None:
>                     self._Defs = sdict()
>                 self._Defs[Name] = Value
>+                self._Macros[Name] = Value
>
>         #
>         # Retrieve information in sections specific to Edk.x modules
>         #
>         if self.AutoGenVersion >= 0x00010005:
>--
>2.6.1.windows.1
>
>_______________________________________________
>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
Re: [edk2] [Patch] BaseTools: Fix the regression issue caused by commit dc4c77
Posted by Laszlo Ersek 7 years, 1 month ago
On 02/22/17 17:03, Yonghong Zhu wrote:
> In the last commit dc4c77, the _GetHeaderInfo will be called more than
> once, which cause the self._ConstructorList.append(Value) append some
> duplicate value.
> 
> Cc: Liming Gao <liming.gao@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
> ---
>  BaseTools/Source/Python/Workspace/WorkspaceDatabase.py | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

I see that this patch has been committed. It fixes the issue for me as well.

Tested-by: Laszlo Ersek <lersek@redhat.com>

Thanks!
Laszlo

> diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> index 0686721..c1af5c7 100644
> --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> @@ -1828,12 +1828,10 @@ class InfBuildData(ModuleBuildClassObject):
>              self.__Macros = {}
>              # EDK_GLOBAL defined macros can be applied to EDK module
>              if self.AutoGenVersion < 0x00010005:
>                  self.__Macros.update(GlobalData.gEdkGlobal)
>                  self.__Macros.update(GlobalData.gGlobalDefines)
> -            else:
> -                self.__Macros.update(self.Defines)
>          return self.__Macros
>  
>      ## Get architecture
>      def _GetArch(self):
>          return self._Arch
> @@ -1894,10 +1892,11 @@ class InfBuildData(ModuleBuildClassObject):
>              if Name in self:
>                  self[Name] = Value
>                  if self._Defs == None:
>                      self._Defs = sdict()
>                  self._Defs[Name] = Value
> +                self._Macros[Name] = Value
>              # some special items in [Defines] section need special treatment
>              elif Name in ('EFI_SPECIFICATION_VERSION', 'UEFI_SPECIFICATION_VERSION', 'EDK_RELEASE_VERSION', 'PI_SPECIFICATION_VERSION'):
>                  if Name in ('EFI_SPECIFICATION_VERSION', 'UEFI_SPECIFICATION_VERSION'):
>                      Name = 'UEFI_SPECIFICATION_VERSION'
>                  if self._Specification == None:
> @@ -1954,10 +1953,11 @@ class InfBuildData(ModuleBuildClassObject):
>                      self._CustomMakefile[TokenList[0]] = TokenList[1]
>              else:
>                  if self._Defs == None:
>                      self._Defs = sdict()
>                  self._Defs[Name] = Value
> +                self._Macros[Name] = Value
>  
>          #
>          # Retrieve information in sections specific to Edk.x modules
>          #
>          if self.AutoGenVersion >= 0x00010005:
> 

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