[edk2-devel] [PATCH] UefiPayloadPkg:Add YAML support version configuration

kasimx.liu@intel.com posted 1 patch 11 months, 3 weeks ago
Failed in applying to current master (apply log)
UefiPayloadPkg/Settings/UplSettings.yaml | 11 ++++++++++
UefiPayloadPkg/UniversalPayloadBuild.py  | 28 ++++++++++++++++++++++--
2 files changed, 37 insertions(+), 2 deletions(-)
create mode 100644 UefiPayloadPkg/Settings/UplSettings.yaml
[edk2-devel] [PATCH] UefiPayloadPkg:Add YAML support version configuration
Posted by kasimx.liu@intel.com 11 months, 3 weeks ago
From: KasimX Liu <kasimx.liu@intel.com>

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4445

To record the default value of SpecRevision and Revision.

add '-st' command of input YAML setting file

Cc: Guo Dong <guo.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: James Lu <james.lu@intel.com>
Cc: Gua Guo <gua.guo@intel.com>
Signed-off-by: KasimX Liu <kasimx.liu@intel.com>
---
 UefiPayloadPkg/Settings/UplSettings.yaml | 11 ++++++++++
 UefiPayloadPkg/UniversalPayloadBuild.py  | 28 ++++++++++++++++++++++--
 2 files changed, 37 insertions(+), 2 deletions(-)
 create mode 100644 UefiPayloadPkg/Settings/UplSettings.yaml

diff --git a/UefiPayloadPkg/Settings/UplSettings.yaml b/UefiPayloadPkg/Settings/UplSettings.yaml
new file mode 100644
index 0000000000..959170ae76
--- /dev/null
+++ b/UefiPayloadPkg/Settings/UplSettings.yaml
@@ -0,0 +1,11 @@
+## @file
+# Set shell variable EDK_TOOL_PATH to this folder
+#
+# Copyright (c) Microsoft Corporation.
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+{
+  'SpecRevision': '0x0070',
+  'Revision': '0x0000010105'
+}
diff --git a/UefiPayloadPkg/UniversalPayloadBuild.py b/UefiPayloadPkg/UniversalPayloadBuild.py
index 416946a431..a32c76a2da 100644
--- a/UefiPayloadPkg/UniversalPayloadBuild.py
+++ b/UefiPayloadPkg/UniversalPayloadBuild.py
@@ -13,6 +13,7 @@ import sys
 from   ctypes import *
 from Tools.ElfFv import ReplaceFv
 sys.dont_write_bytecode = True
+import re
 
 class UPLD_INFO_HEADER(LittleEndianStructure):
     _pack_ = 1
@@ -153,6 +154,18 @@ def main():
 
         return int('0x{0:02x}{1:02x}'.format(Major, Minor), 0)
 
+    def GetUplVerFile(Argument):
+      FilePath = open(os.path.abspath(Argument), 'r')
+      FileControl = FilePath.read()
+      SpecRevision = ""
+      Revision = ""
+      Rule1 = r"\{\n*.+: *'(?P<SpecRevision>.+)', *.+: '(?P<Revision>.+)'\n\}"
+      ModuleObjs = re.finditer(Rule1, FileControl, re.I|re.S)
+      for ModeObj in ModuleObjs:
+        SpecRevision = ModeObj.group("SpecRevision")
+        Revision = ModeObj.group("Revision")
+      return SpecRevision, Revision
+
     def Validate32BitInteger (Argument):
         try:
             Value = int (Argument, 0)
@@ -184,14 +197,25 @@ def main():
     parser.add_argument('-i', '--ImageId', type=str, help='Specify payload ID (16 bytes maximal).', default ='UEFI')
     parser.add_argument('-q', '--Quiet', action='store_true', help='Disable all build messages except FATAL ERRORS.')
     parser.add_argument("-p", "--pcd", action="append")
-    parser.add_argument("-s", "--SpecRevision", type=ValidateSpecRevision, default ='0.7', help='Indicates compliance with a revision of this specification in the BCD format.')
-    parser.add_argument("-r", "--Revision", type=Validate32BitInteger, default ='0x0000010105', help='Revision of the Payload binary. Major.Minor.Revision.Build')
+    group1 = parser.add_mutually_exclusive_group()
+    arg_a = group1.add_argument('-st',"--Settings",type=GetUplVerFile, default="UefiPayloadPkg\\Settings\\UplSettings.yaml", help='Get the UplSettings.yaml')
+    group1.add_argument('-s', "--SpecRevision", type=ValidateSpecRevision, default ='0.7', help='Indicates compliance with a revision of this specification in the BCD format.')
+    group2 = parser.add_mutually_exclusive_group()
+    group2.add_argument('-r', "--Revision", type=Validate32BitInteger, default ='0x0000010105', help='Revision of the Payload binary. Major.Minor.Revision.Build')
+    group2._group_actions.append(arg_a)
+
     parser.add_argument("-o", "--ProducerId", default ='INTEL', help='A null-terminated OEM-supplied string that identifies the payload producer (16 bytes maximal).')
     parser.add_argument("-e", "--BuildEntryOnly", action='store_true', help='Build UniversalPayload Entry file')
     parser.add_argument("-pb", "--PreBuildUplBinary", default=None, help='Specify the UniversalPayload file')
     parser.add_argument("-sk", "--SkipBuild", action='store_true', help='Skip UniversalPayload build')
     parser.add_argument("-af", "--AddFv", type=ValidateAddFv, action='append', help='Add or replace specific FV into payload, Ex: uefi_fv=XXX.fv')
     args = parser.parse_args()
+    SpecRevision, Revision= args.Settings
+    if SpecRevision != args.SpecRevision:
+        args.SpecRevision = SpecRevision
+    if Revision != args.Revision:
+        args.Revision = Revision
+    print(args)
 
     MultiFvList = []
     UniversalPayloadBinary = args.PreBuildUplBinary
-- 
2.39.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#104148): https://edk2.groups.io/g/devel/message/104148
Mute This Topic: https://groups.io/mt/98710279/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-