From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web10.6597.1678950111571141620 for ; Thu, 16 Mar 2023 00:01:51 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=jtfVQuyS; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: kasimx.liu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1678950111; x=1710486111; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=k8u68Qty+EZYoGfNLCxrzUu3HCo9ZP44XKEBjiX1GYQ=; b=jtfVQuySk4NlH72kaymS49Z4je4wYRi++vuWYiDv78eg0+G4aYV+wHCU msi6RHN8ReO5rv5C4j5tNoVsQUBCXe4eKW4je+AUK/FZXVPusjo/7yDct l9JaavNv6/SsMlJAkMa8j9Oz4fIaInbyPjnxh6ORfUfuy+JH/1/R4jLKm 50dbSyTqmx14692B0QQyxV8qa9UQGDEFDRIhzUx5yBlDoV0o4B9rsBLdB fWgJPMnhhXTkOCdbi89pSlWRep+aKFSW5nxOHnrGkwsUcmFros764VG3e b4CHZ4hWu5jBe2JhFDfezHeePW4UTMMjAUBE8PFZiSF3fp4XVe72qR/TN w==; X-IronPort-AV: E=McAfee;i="6500,9779,10650"; a="335393007" X-IronPort-AV: E=Sophos;i="5.98,265,1673942400"; d="scan'208";a="335393007" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2023 00:01:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10650"; a="1009121391" X-IronPort-AV: E=Sophos;i="5.98,265,1673942400"; d="scan'208";a="1009121391" Received: from jenkailx-desk1.gar.corp.intel.com ([10.227.107.51]) by fmsmga005.fm.intel.com with ESMTP; 16 Mar 2023 00:01:20 -0700 From: kasimx.liu@intel.com To: devel@edk2.groups.io Cc: KasimX Liu , Guo Dong , Ray Ni , James Lu , Gua Guo Subject: [PATCH] UefiPayloadPkg:Add new build commands for Universalpayload Date: Thu, 16 Mar 2023 15:01:15 +0800 Message-Id: <1629baa064819fae7cf91506b145151f131c5deb.1678949430.git.kasimx.liu@intel.com> X-Mailer: git-send-email 2.39.1.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: KasimX Liu REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4375 add '-pb' command of build bios with exist PreUniversalpayload file. '-e' command of olny build the Universalpayloadentry file. Cc: Guo Dong Cc: Ray Ni Cc: James Lu Cc: Gua Guo Signed-off-by: KasimX Liu --- UefiPayloadPkg/UniversalPayloadBuild.py | 78 +++++++++++++------------ 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/UefiPayloadPkg/UniversalPayloadBuild.py b/UefiPayloadPkg/Unive= rsalPayloadBuild.py index 522855eba4..aad4f7f195 100644 --- a/UefiPayloadPkg/UniversalPayloadBuild.py +++ b/UefiPayloadPkg/UniversalPayloadBuild.py @@ -65,6 +65,8 @@ def BuildUniversalPayload(Args, MacroList): ObjCopyFlag =3D "elf32-i386"=0D EntryOutputDir =3D os.path.join(BuildDir, "{}_{}".format (BuildTar= get, ElfToolChain), os.path.normpath("IA32/UefiPayloadPkg/UefiPayloadEntry/= UniversalPayloadEntry/DEBUG/UniversalPayloadEntry.dll"))=0D =0D + if Args.PreBuildUplBinary is not None:=0D + EntryOutputDir =3D os.path.abspath(Args.PreBuildUplBinary)=0D EntryModuleInf =3D os.path.normpath("UefiPayloadPkg/UefiPayloadEntry/U= niversalPayloadEntry.inf")=0D DscPath =3D os.path.normpath("UefiPayloadPkg/UefiPayloadPkg.dsc")=0D DxeFvOutputDir =3D os.path.join(BuildDir, "{}_{}".format (BuildTarget,= ToolChain), os.path.normpath("FV/DXEFV.Fv"))=0D @@ -95,18 +97,19 @@ def BuildUniversalPayload(Args, MacroList): #=0D # Building DXE core and DXE drivers as DXEFV.=0D #=0D - BuildPayload =3D "build -p {} -b {} -a X64 -t {} -y {} {}".format (Dsc= Path, BuildTarget, ToolChain, PayloadReportPath, Quiet)=0D - BuildPayload +=3D Pcds=0D - BuildPayload +=3D Defines=0D - RunCommand(BuildPayload)=0D + if Args.BuildEntryOnly =3D=3D False:=0D + BuildPayload =3D "build -p {} -b {} -a X64 -t {} -y {} {}".format = (DscPath, BuildTarget, ToolChain, PayloadReportPath, Quiet)=0D + BuildPayload +=3D Pcds=0D + BuildPayload +=3D Defines=0D + RunCommand(BuildPayload)=0D #=0D # Building Universal Payload entry.=0D #=0D - BuildModule =3D "build -p {} -b {} -a {} -m {} -t {} -y {} {}".format = (DscPath, BuildTarget, BuildArch, EntryModuleInf, ElfToolChain, ModuleRepor= tPath, Quiet)=0D - BuildModule +=3D Pcds=0D - BuildModule +=3D Defines=0D - RunCommand(BuildModule)=0D -=0D + if Args.PreBuildUplBinary is None:=0D + BuildModule =3D "build -p {} -b {} -a {} -m {} -t {} -y {} {}".for= mat (DscPath, BuildTarget, BuildArch, EntryModuleInf, ElfToolChain, ModuleR= eportPath, Quiet)=0D + BuildModule +=3D Pcds=0D + BuildModule +=3D Defines=0D + RunCommand(BuildModule)=0D #=0D # Buid Universal Payload Information Section ".upld_info"=0D #=0D @@ -117,33 +120,34 @@ def BuildUniversalPayload(Args, MacroList): fp.write(bytearray(upld_info_hdr))=0D fp.close()=0D =0D - #=0D - # Copy the DXEFV as a section in elf format Universal Payload entry.=0D - #=0D - remove_section =3D '"{}" -I {} -O {} --remove-section .upld_info --rem= ove-section .upld.uefi_fv --remove-section .upld.bds_fv {}'.format (=0D - LlvmObjcopyPath,=0D - ObjCopyFlag,=0D - ObjCopyFlag,=0D - EntryOutputDir=0D - )=0D - add_section =3D '"{}" -I {} -O {} --add-section .upld_info=3D{} --a= dd-section .upld.uefi_fv=3D{} --add-section .upld.bds_fv=3D{} {}'.format (= =0D - LlvmObjcopyPath,=0D - ObjCopyFlag,=0D - ObjCopyFlag,=0D - UpldInfoFile,=0D - DxeFvOutputDir,=0D - BdsFvOutputDir,=0D - EntryOutputDir=0D - )=0D - set_section =3D '"{}" -I {} -O {} --set-section-alignment .upld_inf= o=3D4 --set-section-alignment .upld.uefi_fv=3D16 --set-section-alignment .u= pld.bds_fv=3D16 {}'.format (=0D - LlvmObjcopyPath,=0D - ObjCopyFlag,=0D - ObjCopyFlag,=0D - EntryOutputDir=0D - )=0D - RunCommand(remove_section)=0D - RunCommand(add_section)=0D - RunCommand(set_section)=0D + if Args.BuildEntryOnly =3D=3D False:=0D + #=0D + # Copy the DXEFV as a section in elf format Universal Payload entr= y.=0D + #=0D + remove_section =3D '"{}" -I {} -O {} --remove-section .upld_info -= -remove-section .upld.uefi_fv --remove-section .upld.bds_fv {}'.format (=0D + LlvmObjcopyPath,=0D + ObjCopyFlag,=0D + ObjCopyFlag,=0D + EntryOutputDir=0D + )=0D + add_section =3D '"{}" -I {} -O {} --add-section .upld_info=3D{}= --add-section .upld.uefi_fv=3D{} --add-section .upld.bds_fv=3D{} {}'.forma= t (=0D + LlvmObjcopyPath,=0D + ObjCopyFlag,=0D + ObjCopyFlag,=0D + UpldInfoFile,=0D + DxeFvOutputDir,=0D + BdsFvOutputDir,=0D + EntryOutputDir=0D + )=0D + set_section =3D '"{}" -I {} -O {} --set-section-alignment .upld= _info=3D4 --set-section-alignment .upld.uefi_fv=3D16 --set-section-alignmen= t .upld.bds_fv=3D16 {}'.format (=0D + LlvmObjcopyPath,=0D + ObjCopyFlag,=0D + ObjCopyFlag,=0D + EntryOutputDir=0D + )=0D + RunCommand(remove_section)=0D + RunCommand(add_section)=0D + RunCommand(set_section)=0D =0D shutil.copy (EntryOutputDir, os.path.join(BuildDir, 'UniversalPayload.= elf'))=0D =0D @@ -156,6 +160,8 @@ def main(): parser.add_argument('-i', '--ImageId', type=3Dstr, help=3D'Specify pay= load ID (16 bytes maximal).', default =3D'UEFI')=0D parser.add_argument('-q', '--Quiet', action=3D'store_true', help=3D'Di= sable all build messages except FATAL ERRORS.')=0D parser.add_argument("-p", "--pcd", action=3D"append")=0D + parser.add_argument("-e", "--BuildEntryOnly", action=3D'store_true', h= elp=3D'Build UniversalPayload Entry file')=0D + parser.add_argument("-pb", "--PreBuildUplBinary", default=3DNone, help= =3D'Specify the UniversalPayload file')=0D MacroList =3D {}=0D args =3D parser.parse_args()=0D if args.Macro is not None:=0D --=20 2.39.1.windows.1