public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [Patch] BaseTools: Fix a bug use 'COMMON' as CodeBase in BuildOptions section
@ 2016-08-17 11:10 Yonghong Zhu
  2016-08-19  5:26 ` Gao, Liming
  0 siblings, 1 reply; 2+ messages in thread
From: Yonghong Zhu @ 2016-08-17 11:10 UTC (permalink / raw)
  To: edk2-devel; +Cc: Liming Gao, Kurt Kennett

Current BaseTools query the BuildOptions not cover the case that use
'COMMON' as CodeBase, while DSC spec allow this usage. This Patch add
support for such 'common.DXE_RUNTIME_DRIVER' as the Scope2 in the query
Condition.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Kurt Kennett <Kurt.Kennett@microsoft.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
---
 BaseTools/Source/Python/Workspace/MetaFileTable.py     | 8 +++++++-
 BaseTools/Source/Python/Workspace/WorkspaceDatabase.py | 3 ++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/BaseTools/Source/Python/Workspace/MetaFileTable.py b/BaseTools/Source/Python/Workspace/MetaFileTable.py
index ab18070..aedcaca 100644
--- a/BaseTools/Source/Python/Workspace/MetaFileTable.py
+++ b/BaseTools/Source/Python/Workspace/MetaFileTable.py
@@ -339,11 +339,17 @@ class PlatformTable(MetaFileTable):
         ValueString = "Value1,Value2,Value3,Scope1,Scope2,ID,StartLine"
 
         if Scope1 != None and Scope1 != 'COMMON':
             ConditionString += " AND (Scope1='%s' OR Scope1='COMMON')" % Scope1
         if Scope2 != None and Scope2 != 'COMMON':
-            ConditionString += " AND (Scope2='%s' OR Scope2='COMMON' OR Scope2='DEFAULT')" % Scope2
+            # Cover the case that CodeBase is 'COMMON' for BuildOptions section
+            if '.' in Scope2:
+                Index = Scope2.index('.')
+                NewScope = 'COMMON'+ Scope2[Index:]
+                ConditionString += " AND (Scope2='%s' OR Scope2='COMMON' OR Scope2='DEFAULT' OR Scope2='%s')" % (Scope2, NewScope)
+            else:
+                ConditionString += " AND (Scope2='%s' OR Scope2='COMMON' OR Scope2='DEFAULT')" % Scope2
 
         if BelongsToItem != None:
             ConditionString += " AND BelongsToItem=%s" % BelongsToItem
         else:
             ConditionString += " AND BelongsToItem<0"
diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
index 86d8c32..ceaa4b8 100644
--- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
+++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
@@ -800,13 +800,14 @@ class DscBuildData(PlatformBuildClassObject):
             self._ModuleTypeOptions = sdict()
         if (Edk, ModuleType) not in self._ModuleTypeOptions:
             options = sdict()
             self._ModuleTypeOptions[Edk, ModuleType] = options
             DriverType = '%s.%s' % (Edk, ModuleType)
+            CommonDriverType = '%s.%s' % ('COMMON', ModuleType)
             RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, DriverType]
             for ToolChainFamily, ToolChain, Option, Arch, Type, Dummy3, Dummy4 in RecordList:
-                if Type == DriverType:
+                if Type == DriverType or Type == CommonDriverType:
                     Key = (ToolChainFamily, ToolChain, Edk)
                     if Key not in options or not ToolChain.endswith('_FLAGS') or Option.startswith('='):
                         options[Key] = Option
                     else:
                         options[Key] += ' ' + Option
-- 
2.6.1.windows.1



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Patch] BaseTools: Fix a bug use 'COMMON' as CodeBase in BuildOptions section
  2016-08-17 11:10 [Patch] BaseTools: Fix a bug use 'COMMON' as CodeBase in BuildOptions section Yonghong Zhu
@ 2016-08-19  5:26 ` Gao, Liming
  0 siblings, 0 replies; 2+ messages in thread
From: Gao, Liming @ 2016-08-19  5:26 UTC (permalink / raw)
  To: Zhu, Yonghong, edk2-devel@lists.01.org

Reviewed-by: Liming Gao <liming.gao@intel.com>

> -----Original Message-----
> From: Zhu, Yonghong
> Sent: Wednesday, August 17, 2016 7:11 PM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming <liming.gao@intel.com>; Kurt Kennett
> <Kurt.Kennett@microsoft.com>
> Subject: [Patch] BaseTools: Fix a bug use 'COMMON' as CodeBase in
> BuildOptions section
> 
> Current BaseTools query the BuildOptions not cover the case that use
> 'COMMON' as CodeBase, while DSC spec allow this usage. This Patch add
> support for such 'common.DXE_RUNTIME_DRIVER' as the Scope2 in the
> query
> Condition.
> 
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Kurt Kennett <Kurt.Kennett@microsoft.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
> ---
>  BaseTools/Source/Python/Workspace/MetaFileTable.py     | 8 +++++++-
>  BaseTools/Source/Python/Workspace/WorkspaceDatabase.py | 3 ++-
>  2 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/BaseTools/Source/Python/Workspace/MetaFileTable.py
> b/BaseTools/Source/Python/Workspace/MetaFileTable.py
> index ab18070..aedcaca 100644
> --- a/BaseTools/Source/Python/Workspace/MetaFileTable.py
> +++ b/BaseTools/Source/Python/Workspace/MetaFileTable.py
> @@ -339,11 +339,17 @@ class PlatformTable(MetaFileTable):
>          ValueString = "Value1,Value2,Value3,Scope1,Scope2,ID,StartLine"
> 
>          if Scope1 != None and Scope1 != 'COMMON':
>              ConditionString += " AND (Scope1='%s' OR Scope1='COMMON')" %
> Scope1
>          if Scope2 != None and Scope2 != 'COMMON':
> -            ConditionString += " AND (Scope2='%s' OR Scope2='COMMON' OR
> Scope2='DEFAULT')" % Scope2
> +            # Cover the case that CodeBase is 'COMMON' for BuildOptions
> section
> +            if '.' in Scope2:
> +                Index = Scope2.index('.')
> +                NewScope = 'COMMON'+ Scope2[Index:]
> +                ConditionString += " AND (Scope2='%s' OR Scope2='COMMON' OR
> Scope2='DEFAULT' OR Scope2='%s')" % (Scope2, NewScope)
> +            else:
> +                ConditionString += " AND (Scope2='%s' OR Scope2='COMMON' OR
> Scope2='DEFAULT')" % Scope2
> 
>          if BelongsToItem != None:
>              ConditionString += " AND BelongsToItem=%s" % BelongsToItem
>          else:
>              ConditionString += " AND BelongsToItem<0"
> diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> index 86d8c32..ceaa4b8 100644
> --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
> @@ -800,13 +800,14 @@ class DscBuildData(PlatformBuildClassObject):
>              self._ModuleTypeOptions = sdict()
>          if (Edk, ModuleType) not in self._ModuleTypeOptions:
>              options = sdict()
>              self._ModuleTypeOptions[Edk, ModuleType] = options
>              DriverType = '%s.%s' % (Edk, ModuleType)
> +            CommonDriverType = '%s.%s' % ('COMMON', ModuleType)
>              RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION,
> self._Arch, DriverType]
>              for ToolChainFamily, ToolChain, Option, Arch, Type, Dummy3,
> Dummy4 in RecordList:
> -                if Type == DriverType:
> +                if Type == DriverType or Type == CommonDriverType:
>                      Key = (ToolChainFamily, ToolChain, Edk)
>                      if Key not in options or not ToolChain.endswith('_FLAGS') or
> Option.startswith('='):
>                          options[Key] = Option
>                      else:
>                          options[Key] += ' ' + Option
> --
> 2.6.1.windows.1



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-08-19  5:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-17 11:10 [Patch] BaseTools: Fix a bug use 'COMMON' as CodeBase in BuildOptions section Yonghong Zhu
2016-08-19  5:26 ` Gao, Liming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox