From nobody Fri Mar 29 07:47:25 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+80475+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+80475+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1631261781; cv=none; d=zohomail.com; s=zohoarc; b=ZYHMea9qSGCCPzjW1xVTRZ24rOGejpP3FpY7APLHPtyHE2LFGl0zun9+WrN69+XKNRC9dKMpwt+7sdHcBAsvYqxbwYxjnjIMg0xCblCGmIUgmVdux7pNoSYtqCNNw3stLJpcoOF8trx+7K2CIidyfq3rLviBsCeuuwNaBefWvWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1631261781; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=Dp6LrRhr1nM4fMz35znPCXxY/XzlQM7uTK0YlkHUHZ0=; b=g4xheiFg12Kr3RVL/4OBrwO9P0dZCRWN0a56Tkj2Piv8XPwv26LiHGersPuJtst+M5VgTdfH/5cdqugKvVFBR0Tkr0U7mW5W8l/iR0Q6FlpVt5mZZS52GPR8DBEEKEbaxmfgz7BfFwYVkK345AB/CROPqZ56pskYBu/XQYdYlsM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+80475+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1631261780925983.1129663786069; Fri, 10 Sep 2021 01:16:20 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id JDxCYY1788612xlp5if3ceX4; Fri, 10 Sep 2021 01:16:20 -0700 X-Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web09.6386.1631261779009500999 for ; Fri, 10 Sep 2021 01:16:20 -0700 X-IronPort-AV: E=McAfee;i="6200,9189,10102"; a="220698436" X-IronPort-AV: E=Sophos;i="5.85,282,1624345200"; d="scan'208";a="220698436" X-Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Sep 2021 01:16:15 -0700 X-IronPort-AV: E=Sophos;i="5.85,282,1624345200"; d="scan'208";a="540343050" X-Received: from duntan-mobl.ccr.corp.intel.com ([10.238.1.156]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Sep 2021 01:16:14 -0700 From: "duntan" To: devel@edk2.groups.io Cc: Guo Dong , Ray Ni , Maurice Ma , Benjamin You , Zhiguang Liu Subject: [edk2-devel] [PATCH] UefiPayloadPkg: Add script to build UniversalPayload in UefiPayloadPkg Date: Fri, 10 Sep 2021 16:15:48 +0800 Message-Id: <20210910081548.1816-1-dun.tan@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,dun.tan@intel.com X-Gm-Message-State: X5ZslPsNTUWaLTlyrySjn1cOx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1631261780; bh=xjFKJvVwpxuUY94hPZ1/JKcck1hpCVCtzjQMNdovnvc=; h=Cc:Date:From:Reply-To:Subject:To; b=AisU90qoRnvZsa/jtungJUtDUvaosSAlJUDEfOpGPhaQY+hnmsBndj60Va0qu9z+vZY 5BGwwf+UI0JtdW4nKtWPkNHe4uzTj8QbZcAy4oXsZT1uPYpoRCtAb0OIPLpFLqgEdHEx7 kRtLfYtU3cEPgrG46YVzEa4I0H1hFakLTrA= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1631261782869100001 Content-Type: text/plain; charset="utf-8" Add script to build UniversalPayload, which can be used after edksetup rebu= ild The final UPL.elf will be located at root folder of edk2 Cc: Guo Dong Cc: Ray Ni Cc: Maurice Ma Cc: Benjamin You Cc: Zhiguang Liu Signed-off-by: Dun Tan --- UefiPayloadPkg/UniversalPayloadBuild.py | 95 +++++++++++++++++++++++++++++= ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/UefiPayloadPkg/UniversalPayloadBuild.py b/UefiPayloadPkg/Unive= rsalPayloadBuild.py new file mode 100644 index 0000000000..9bcc4e77a0 --- /dev/null +++ b/UefiPayloadPkg/UniversalPayloadBuild.py @@ -0,0 +1,95 @@ +## @file +# This file contains the script to build UniversalPayload +# +# Copyright (c) 2021, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +import argparse +import subprocess +import os +import shutil +import sys + +def RunCommand(cmd): + print(cmd) + p =3D subprocess.Popen(cmd, shell=3DTrue, stdout=3Dsubprocess.PIPE, st= derr=3Dsubprocess.STDOUT,cwd=3Dos.environ['WORKSPACE']) + while True: + line =3D p.stdout.readline() + if not line: + break + print(line.strip().decode(errors=3D'ignore')) + + p.communicate() + if p.returncode !=3D 0: + print("- Failed - error happened when run command: %s"%cmd) + raise Exception("ERROR: when run command: %s"%cmd) + +def BuildUniversalPayload(args, MacroList): + build_target =3D args.Target + tool_chain_tag =3D args.ToolChain + elf_tool_chain =3D 'CLANGDWARF' + entry_module_inf =3D os.path.join("UefiPayloadPkg", "UefiPayloadEntry"= , "UniversalPayloadEntry.inf") + fv =3D os.path.join(os.environ['WORKSPACE'], "Build", "UefiPayloadPkgX= 64", "%s_%s"%(build_target, tool_chain_tag), "FV", "DXEFV.Fv") + entry =3D os.path.join(os.environ['WORKSPACE'], "Build", "UefiPayloadP= kgX64", "%s_%s"%(build_target, elf_tool_chain), "X64", "UefiPayloadPkg", "U= efiPayloadEntry", "UniversalPayloadEntry", "DEBUG", "UniversalPayloadEntry.= dll") + dsc_patch =3D os.path.join("UefiPayloadPkg", "UefiPayloadPkg.dsc") + + if "CLANG_BIN" in os.environ: + llvm_objcopy_path =3D os.path.join(os.environ["CLANG_BIN"],"llvm-o= bjcopy") + else: + llvm_objcopy_path =3D "llvm-objcopy" + try: + RunCommand('"%s" --version'%llvm_objcopy_path) + except: + print("- Failed - Please check if LLVM is installed or if CLANG_BI= N is set correctly") + sys.exit(1) + + macro_list =3D " " + for key in MacroList: + macro_list +=3D"-D {0}=3D{1} ".format(key, MacroList[key]) + + # + # Building DXE core and DXE drivers as DXEFV. + # + build_payload =3D "build -p %s -b %s -a X64 -t %s -y UplBuildReport.tx= t"%(dsc_patch, build_target, tool_chain_tag) + build_payload +=3D macro_list + RunCommand(build_payload) + # + # Building Universal Payload entry. + # + build_module =3D "build -p %s -b %s -a X64 -m %s -t %s -y UplBuildRepo= rtEntry.txt"%(dsc_patch, build_target, entry_module_inf, elf_tool_chain) + build_module +=3D macro_list + RunCommand(build_module) + + # + # Copy the DXEFV as a section in elf format Universal Payload entry. + # + remove_section =3D '"%s" -I elf64-x86-64 -O elf64-x86-64 --remove-sect= ion .upld.uefi_fv %s'%(llvm_objcopy_path,entry) + add_section =3D '"%s" -I elf64-x86-64 -O elf64-x86-64 --add-section .u= pld.uefi_fv=3D%s %s'%(llvm_objcopy_path,fv,entry) + set_section =3D '"%s" -I elf64-x86-64 -O elf64-x86-64 --set-section-al= ignment .upld.uefi_fv=3D16 %s'%(llvm_objcopy_path,entry) + RunCommand(remove_section) + RunCommand(add_section) + RunCommand(set_section) + + shutil.copy (entry, os.path.join(os.environ['WORKSPACE'], 'UPL.elf')) + +def main(): + print ("Begin to build Universal Payload...") + parser =3D argparse.ArgumentParser(description=3D'For build Universal = Payload') + parser.add_argument('-t', '--ToolChain', help=3D"Using the ToolChain t= o build the UniversalPayload") + parser.add_argument('-b', '--Target', help=3D"Using the TARGET to buil= d the UniversalPayload") + parser.add_argument("-D", "--Macro", action=3D"append", help=3D"Macro:= \"Name [=3D Value]\".") + MacroList =3D {} + args =3D parser.parse_args() + if args.Macro is not None: + for argument in args.Macro: + if argument.count('=3D') !=3D 1: + print("Unknown variable passed in: %s"%argument) + raise Exception("ERROR: Unknown variable passed in: %s"%ar= gument) + tokens =3D argument.strip().split('=3D') + MacroList[tokens[0].upper()] =3D tokens[1] + BuildUniversalPayload(args, MacroList) + print ("Successfully build Universal Payload") + +if __name__ =3D=3D '__main__': + main() --=20 2.31.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#80475): https://edk2.groups.io/g/devel/message/80475 Mute This Topic: https://groups.io/mt/85504626/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-