public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value
       [not found] <cover.1657518401.git.yi1.li@intel.com>
@ 2022-07-11  5:48 ` yi1 li
  2022-07-22  2:28   ` [edk2-devel] " Yuwei Chen
  2022-07-24  5:06   ` Bob Feng
  0 siblings, 2 replies; 4+ messages in thread
From: yi1 li @ 2022-07-11  5:48 UTC (permalink / raw)
  To: devel; +Cc: Yi Li, Bob Feng, Liming Gao

This patch is a bug fix about FeatureFlagExpression in INF file:
 INF [Source] section now unconditionally use Pcd default value in DEC
 when handling FeatureFlagExpression, it is wrong.
 If a Pcd value has been set in the DSC file, we should use latest
 value in DSC instead of default value.

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>

Signed-off-by: Yi Li <yi1.li@intel.com>
---
 BaseTools/Source/Python/Workspace/InfBuildData.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py b/BaseTools/Source/Python/Workspace/InfBuildData.py
index 5b9b3d7b4f..e4ff1c6686 100644
--- a/BaseTools/Source/Python/Workspace/InfBuildData.py
+++ b/BaseTools/Source/Python/Workspace/InfBuildData.py
@@ -1084,7 +1084,9 @@ class InfBuildData(ModuleBuildClassObject):
         else:
             for Name, Guid in self.Pcds:
                 if self.Pcds[(Name, Guid)].Type == 'FeatureFlag' or self.Pcds[(Name, Guid)].Type == 'FixedAtBuild':
-                    Pcds['%s.%s' % (Guid, Name)] = self.Pcds[(Name, Guid)].DefaultValue
+                    PcdFullName = '%s.%s' % (Guid, Name);
+                    if not PcdFullName in Pcds:
+                        Pcds[PcdFullName] = self.Pcds[(Name, Guid)].DefaultValue
             try:
                 Value = ValueExpression(Instance, Pcds)()
                 if Value == True:
-- 
2.31.1.windows.1


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

* Re: [edk2-devel] [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value
  2022-07-11  5:48 ` [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value yi1 li
@ 2022-07-22  2:28   ` Yuwei Chen
  2022-07-22  2:46     ` yi1 li
  2022-07-24  5:06   ` Bob Feng
  1 sibling, 1 reply; 4+ messages in thread
From: Yuwei Chen @ 2022-07-22  2:28 UTC (permalink / raw)
  To: devel@edk2.groups.io, Li, Yi1; +Cc: Feng, Bob C, Gao, Liming

Hi Yi,

Could you describe the bug with an example? In which scenario the dsc defined pcd will not override the dec definition? 

Thanks,
Christine
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of yi1 li
> Sent: Monday, July 11, 2022 1:48 PM
> To: devel@edk2.groups.io
> Cc: Li, Yi1 <yi1.li@intel.com>; Feng, Bob C <bob.c.feng@intel.com>; Gao,
> Liming <gaoliming@byosoft.com.cn>
> Subject: [edk2-devel] [PATCH 1/1] BaseTools: INF should use latest Pcd value
> instead of default value
> 
> This patch is a bug fix about FeatureFlagExpression in INF file:
>  INF [Source] section now unconditionally use Pcd default value in DEC  when
> handling FeatureFlagExpression, it is wrong.
>  If a Pcd value has been set in the DSC file, we should use latest  value in DSC
> instead of default value.
> 
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> 
> Signed-off-by: Yi Li <yi1.li@intel.com>
> ---
>  BaseTools/Source/Python/Workspace/InfBuildData.py | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py
> b/BaseTools/Source/Python/Workspace/InfBuildData.py
> index 5b9b3d7b4f..e4ff1c6686 100644
> --- a/BaseTools/Source/Python/Workspace/InfBuildData.py
> +++ b/BaseTools/Source/Python/Workspace/InfBuildData.py
> @@ -1084,7 +1084,9 @@ class InfBuildData(ModuleBuildClassObject):
>          else:
>              for Name, Guid in self.Pcds:
>                  if self.Pcds[(Name, Guid)].Type == 'FeatureFlag' or self.Pcds[(Name,
> Guid)].Type == 'FixedAtBuild':
> -                    Pcds['%s.%s' % (Guid, Name)] = self.Pcds[(Name,
> Guid)].DefaultValue
> +                    PcdFullName = '%s.%s' % (Guid, Name);
> +                    if not PcdFullName in Pcds:
> +                        Pcds[PcdFullName] = self.Pcds[(Name,
> + Guid)].DefaultValue
>              try:
>                  Value = ValueExpression(Instance, Pcds)()
>                  if Value == True:
> --
> 2.31.1.windows.1
> 
> 
> 
> 
> 


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

* Re: [edk2-devel] [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value
  2022-07-22  2:28   ` [edk2-devel] " Yuwei Chen
@ 2022-07-22  2:46     ` yi1 li
  0 siblings, 0 replies; 4+ messages in thread
From: yi1 li @ 2022-07-22  2:46 UTC (permalink / raw)
  To: Chen, Christine, devel@edk2.groups.io; +Cc: Feng, Bob C, Gao, Liming

Hi Christine,

Thanks for review, and this bug is come from commit : https://github.com/tianocore/edk2/commit/bf9230a9f3dde065c3c8b4175ccd32e44e8f0362

This commit introduce a new feature to conditional build source file in INF,
Such like: curve25519.c      |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled

The issue is :
If FeatureFlagExpression is a PCD expression, not just PCD, e.g. (!gEfiTestGuid.Pcd) ,(NOT gEfiTestGuid.Pcd) ...,
Basetools can not calculate the correct value.

The root-cause is INF now use default PCD value in DEC (self.Pcds[(Name, Guid)].DefaultValue) when calculating expression,
If a PCD has be set in DSC (the new value will be stored in gPlatformFinalPcds), we need to use the new value.

Hope it's clear.

-----Original Message-----
From: Chen, Christine <yuwei.chen@intel.com> 
Sent: Friday, July 22, 2022 10:29 AM
To: devel@edk2.groups.io; Li, Yi1 <yi1.li@intel.com>
Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>
Subject: RE: [edk2-devel] [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value

Hi Yi,

Could you describe the bug with an example? In which scenario the dsc defined pcd will not override the dec definition? 

Thanks,
Christine
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of yi1 li
> Sent: Monday, July 11, 2022 1:48 PM
> To: devel@edk2.groups.io
> Cc: Li, Yi1 <yi1.li@intel.com>; Feng, Bob C <bob.c.feng@intel.com>; 
> Gao, Liming <gaoliming@byosoft.com.cn>
> Subject: [edk2-devel] [PATCH 1/1] BaseTools: INF should use latest Pcd 
> value instead of default value
> 
> This patch is a bug fix about FeatureFlagExpression in INF file:
>  INF [Source] section now unconditionally use Pcd default value in DEC  
> when handling FeatureFlagExpression, it is wrong.
>  If a Pcd value has been set in the DSC file, we should use latest  
> value in DSC instead of default value.
> 
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> 
> Signed-off-by: Yi Li <yi1.li@intel.com>
> ---
>  BaseTools/Source/Python/Workspace/InfBuildData.py | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py
> b/BaseTools/Source/Python/Workspace/InfBuildData.py
> index 5b9b3d7b4f..e4ff1c6686 100644
> --- a/BaseTools/Source/Python/Workspace/InfBuildData.py
> +++ b/BaseTools/Source/Python/Workspace/InfBuildData.py
> @@ -1084,7 +1084,9 @@ class InfBuildData(ModuleBuildClassObject):
>          else:
>              for Name, Guid in self.Pcds:
>                  if self.Pcds[(Name, Guid)].Type == 'FeatureFlag' or 
> self.Pcds[(Name, Guid)].Type == 'FixedAtBuild':
> -                    Pcds['%s.%s' % (Guid, Name)] = self.Pcds[(Name,
> Guid)].DefaultValue
> +                    PcdFullName = '%s.%s' % (Guid, Name);
> +                    if not PcdFullName in Pcds:
> +                        Pcds[PcdFullName] = self.Pcds[(Name, 
> + Guid)].DefaultValue
>              try:
>                  Value = ValueExpression(Instance, Pcds)()
>                  if Value == True:
> --
> 2.31.1.windows.1
> 
> 
> 
> 
> 


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

* Re: [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value
  2022-07-11  5:48 ` [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value yi1 li
  2022-07-22  2:28   ` [edk2-devel] " Yuwei Chen
@ 2022-07-24  5:06   ` Bob Feng
  1 sibling, 0 replies; 4+ messages in thread
From: Bob Feng @ 2022-07-24  5:06 UTC (permalink / raw)
  To: Li, Yi1, devel@edk2.groups.io; +Cc: Gao, Liming

Reviewed-by: Bob Feng <bob.c.feng@intel.com>

-----Original Message-----
From: Li, Yi1 <yi1.li@intel.com> 
Sent: Monday, July 11, 2022 1:48 PM
To: devel@edk2.groups.io
Cc: Li, Yi1 <yi1.li@intel.com>; Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>
Subject: [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value

This patch is a bug fix about FeatureFlagExpression in INF file:
 INF [Source] section now unconditionally use Pcd default value in DEC  when handling FeatureFlagExpression, it is wrong.
 If a Pcd value has been set in the DSC file, we should use latest  value in DSC instead of default value.

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>

Signed-off-by: Yi Li <yi1.li@intel.com>
---
 BaseTools/Source/Python/Workspace/InfBuildData.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py b/BaseTools/Source/Python/Workspace/InfBuildData.py
index 5b9b3d7b4f..e4ff1c6686 100644
--- a/BaseTools/Source/Python/Workspace/InfBuildData.py
+++ b/BaseTools/Source/Python/Workspace/InfBuildData.py
@@ -1084,7 +1084,9 @@ class InfBuildData(ModuleBuildClassObject):
         else:
             for Name, Guid in self.Pcds:
                 if self.Pcds[(Name, Guid)].Type == 'FeatureFlag' or self.Pcds[(Name, Guid)].Type == 'FixedAtBuild':
-                    Pcds['%s.%s' % (Guid, Name)] = self.Pcds[(Name, Guid)].DefaultValue
+                    PcdFullName = '%s.%s' % (Guid, Name);
+                    if not PcdFullName in Pcds:
+                        Pcds[PcdFullName] = self.Pcds[(Name, 
+ Guid)].DefaultValue
             try:
                 Value = ValueExpression(Instance, Pcds)()
                 if Value == True:
--
2.31.1.windows.1


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

end of thread, other threads:[~2022-07-24  5:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <cover.1657518401.git.yi1.li@intel.com>
2022-07-11  5:48 ` [PATCH 1/1] BaseTools: INF should use latest Pcd value instead of default value yi1 li
2022-07-22  2:28   ` [edk2-devel] " Yuwei Chen
2022-07-22  2:46     ` yi1 li
2022-07-24  5:06   ` Bob Feng

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