From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.35630.1675061119896052710 for ; Sun, 29 Jan 2023 22:45:19 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=XTcOFOR4; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: bob.c.feng@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675061119; x=1706597119; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=p4U3xwIUPDeh5h/n3TgdWnr1j2zKVgAO/R4oAymWFxg=; b=XTcOFOR4w5rc2X5OGUC7p1tnJCeZGADpMQpMxOec5qctEIBufHqRCzeH xjGNvUzNdIK/dNuxFhYPUz8V3W5/vGCuc+dA/638YPSI9EL/sdEWbPfKa IM5a1vgmfxIiwd4lrhvctFZdrzCz8pc4QpxRBADw1UPgw0fykvmuqIkGR OURVysBcqlBNifH9dxjQKHwi4VvL22LOiJxbdfmp7wldPTdprHr8y4OV5 p86iMw3/SLIIoKqLH7qPBkt7PnrQDgXgugII9+kIlmF0pE9YwlOz5rZvG igDbnx9L8UIo1115vk/bKLuRmHnff3Noeh3XrBPOloW/bFN9y53aJc8VB w==; X-IronPort-AV: E=McAfee;i="6500,9779,10605"; a="327501502" X-IronPort-AV: E=Sophos;i="5.97,257,1669104000"; d="scan'208";a="327501502" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jan 2023 22:45:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10605"; a="696299538" X-IronPort-AV: E=Sophos;i="5.97,257,1669104000"; d="scan'208";a="696299538" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga001.jf.intel.com with ESMTP; 29 Jan 2023 22:45:18 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Sun, 29 Jan 2023 22:45:18 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Sun, 29 Jan 2023 22:45:18 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.102) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Sun, 29 Jan 2023 22:45:18 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MM17EkOkeLR8WSJHBJKnnOj/FvDYnSzM+AjA1fUMkXeoIwUkVe8RaYVXQOV29tlsZFyzchi/sKs5rNXP3gu0Zaq6DmzHHNW8QtFmh2XF7FbAwV4d6RJkQH7TAav7RHAnYrmVDYzLFILJxI2Osv6YCDaJz0KS9uqS/qz8A3D/OXZ4jYXHTqShUw9jjBZFYfqszleF7C6rBeBsL5SL3MvwT0nLh0Pp+OYtpU8MMVmbR0puBgRPam21hZhSqYiCcqk8b4hZvtOS16D3k2Sqyhlrz8OXJXQXBwtTYSPzXlZZ03bP11c800SiFYA8UFq9+0QT1WY0I+1MUhLWPrDRHpIPLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=j34Io+ivnpOsMDSGdXLp9sOuTDOscCdFw1t1D3fOtl8=; b=nqZDzy57iGTrSU0lqL2MSSA7iO3z61MlYgH/7NYlgymjXb6y8v7pHxAOgz73wqRQ0taCJeQn5mZWN4lXqKR0J9D6uLBTMzD0XcjZ9GQU759R2jQyYuFqB9N/4oiYxXMa/m/HvmqOymw1ppSKCGNzItecu6DVhOk6JDg1t4jrurFe0BBbQyQKgEbb+bQPB9CjybPm5AhkyIMltRFrbYaQb6rQfVPAi5oEKJ2xhIoQJxLbdaiGn4cSV49XI+bQuAE0lKwhV+1YaMmORebpcIgtzdy8NanQS92RDEzUC+Qwx5JwTVEwiv8/yotgM3dy3MoLq6ePAngnhosMhFoc/S7ckg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH7PR11MB5863.namprd11.prod.outlook.com (2603:10b6:510:135::11) by PH0PR11MB5594.namprd11.prod.outlook.com (2603:10b6:510:e4::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.30; Mon, 30 Jan 2023 06:45:16 +0000 Received: from PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::1736:fe5c:ecff:e73a]) by PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::1736:fe5c:ecff:e73a%4]) with mapi id 15.20.6043.033; Mon, 30 Jan 2023 06:45:16 +0000 From: "Bob Feng" To: "Chen, Christine" , "devel@edk2.groups.io" CC: "Gao, Liming" Subject: Re: [Patch V2 2/3] [edk2-staging]BaseTools: Add new build option for PyVfrCompiler yaml generation Thread-Topic: [Patch V2 2/3] [edk2-staging]BaseTools: Add new build option for PyVfrCompiler yaml generation Thread-Index: AQHZNHPYFlYqkQnX8UqNdZpOvSxLx662g90w Date: Mon, 30 Jan 2023 06:45:16 +0000 Message-ID: References: <20230130062631.667-1-yuwei.chen@intel.com> In-Reply-To: <20230130062631.667-1-yuwei.chen@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR11MB5863:EE_|PH0PR11MB5594:EE_ x-ms-office365-filtering-correlation-id: 30dd8d58-d0a7-4926-0100-08db028d8bd0 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +AI6oyUFvUSlTmd+Q4MFi5yVhk5kpsZRZhOw/9wT8nlB/ZT+xFoFzyJ61l7Hc41TAEYaxGafyTFY42IvyH3TTPnV0h0Uur5jD50Tdykml2/Pr1wUdtz32VeCLUSam9bZvxtdG28mtXSWUqm17t/zw4y19xaomlfyo0L+OFmUX79tPmy2GDREBD4eqKdAVCZR0gf5VlCT/NqGQ9+iWXZIySdsMp+VN396CNg2sWYmPzpUp85TxZY7EACQUppZt4CTrrNA2cjOXzsub6Z8QgxVFyjbqdfbZDb/jQfIsfQCCRacC5JF2vcbqgC+A/kbBprdBRGwWokP7J1u5CwB6BrHmkoL+ebLOjlfebjRfD4FJMwNCvBbFALi2/DRVciM0zCbnvv1oHpg0R7iRBeQGZtgLGJICnF3HeijVohZoMZPmVKu8AlC6qTKkCk808BHKF3+wqh9vmsZt9LIJPilvWjg9f4FvxjsL+8/xSDHSLMzw0TPX9jdUCUc0wGL73Z3pOl9oeWfH/j7saxBdd829DjVwnnDaurDPwBdhHwmVxrMPjGl8/LcZBFX7CglkIrluBRcLzwtXOrQatCaVcIYMKmVrEAmS9/i+x+qulVfE99wXJLkSOdn91tTdev8s9/Fd/a+q9QDf0NDvsDvI1SGHcgPNgchuap8T6QWkFxIK4oGQrfMtT38KET+IvCoYVQ+n+79eER+UjYA1FmBII+834J78w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5863.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(6029001)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199018)(2906002)(83380400001)(7696005)(71200400001)(478600001)(38070700005)(26005)(9686003)(82960400001)(110136005)(122000001)(53546011)(6506007)(66446008)(4326008)(64756008)(66556008)(66476007)(41300700001)(8676002)(66946007)(76116006)(38100700002)(52536014)(33656002)(5660300002)(8936002)(186003)(86362001)(316002)(55016003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?ghXba4nWXX9O3WahpYW1EX/oOTyawucYPKsfjBcswhdL+uhPaSUN+SI9RCyh?= =?us-ascii?Q?Wwl6VHutKwcP/rcYTvA/KekW7DuzybF7LJtOFkj+Mvwt7+RCaidJZjLb466i?= =?us-ascii?Q?1hyP1R1pMK/f7i2cVjZNj16e/PVRVtn5ayfQFOHo7kzgxFaJZuDo6rd6ifCm?= =?us-ascii?Q?gMgWG5rTjpLSD/VFA4YRzW7GXvIyDWRuYKNNuEuMtqZYTY2An3ALWUXQsEsW?= =?us-ascii?Q?NAb33LmVITuxHZR87ZUecDXsfPTpycR/F63n4MzKFzfSgGWevb38BEDiXwqQ?= =?us-ascii?Q?hSs7MF/TW2c9d250c9gYzqykbhiNOjeaK14HQ64aC3IcEQlnWho1LJp/hOHd?= =?us-ascii?Q?jWC6CgtuLLG92nT1GkHsWacmfydu+YeNRumfxSXySvygeif9qZCKkasQxcVN?= =?us-ascii?Q?7uO6OujbT/hG8LrltXwD+gec9Wpea15sKCxBE9rVCyxbHHUhysdY9ZXHw2j6?= =?us-ascii?Q?LZsD7AuWVrp215gZTr9r+4fxo69Rxo2crJbuEvCYdbifjf/HLB7bqR/VOylN?= =?us-ascii?Q?V/Fk38gUXIk/r4CCQmUbArq09N8JL3ngSht10zzXC50BhjbwjWijfBKkyMik?= =?us-ascii?Q?9+iGjMdRFpSbkoEP/XtPkmiHxUgqsCMMuAadj3wSgA8rFhAaUqETvXs7Pnlf?= =?us-ascii?Q?NWM9VfhQW/9Fm0nRUQ1gb/A+cgKC7IPmYtO1IPap1q/V3r5+cQ3Md50S/g8c?= =?us-ascii?Q?iY1E58C4NtpEna7YPQWXhGm2O7zN8KnSe0KS4XUDD4/N9Jn7EdOucwXeTGoQ?= =?us-ascii?Q?8XkqrPcOKea5nMRqxT74Gijy7iArvNDeA9pEh+EaIdZ9PiTh6rexX2N5+2dM?= =?us-ascii?Q?ykslkmET9lZ0CODgwnJ6MXln8IFt5eZIhzBGmN2fIrGHcIlZmwTx1XGb9nU6?= =?us-ascii?Q?dgilvPc6m1B6Ue+y3l/MQfuuS5JStDA/5YRdreFLfR4erYabJnm5J1qI5K18?= =?us-ascii?Q?ID2jdeBdoT4s8Ve9rIFz1V4Rs3Js8rZ6ghMVRhxWzow26zf/1nVpRbr+384n?= =?us-ascii?Q?l6OWZcX4r0cakcH+YFM4nOcDWbugugPZlQ0n763lQucsdqw08Sfv60XzMObF?= =?us-ascii?Q?KqfoIoaPvldt0pwvlGfOhLJCdezXSC9FXwLcTcEnSBxLwjdK6BmzaE29FOpy?= =?us-ascii?Q?C153bnwpHYHFFpztiArhM7biwZAxAkYYzKi66e6jK23sS0wyKN53+/fTYDA/?= =?us-ascii?Q?zQTfR4PUSgR+JvOMvUIMNObX1f0coxAOAHPl+Zr2Mf0lDZP90YLFDOBCSEGY?= =?us-ascii?Q?aeUgD6kFo9fEHwSltQdl79PA47rhwR0qWqb1Vl6kxw4w8aSJ1k5Rd7PAB/0a?= =?us-ascii?Q?UHore9VtcgQ5Bc1ZDmr1KXOBCVc8mxS3U8vNQQ8PKYm2RsfyC+0m8FgBek3U?= =?us-ascii?Q?jXT4V/FeGnmyJr8kWuMRPgM1keurCQhIksK/mnihAUw33ga3tbklsrv71+gP?= =?us-ascii?Q?32hQuFoPPLTHDaJwomwyABQlIPDqv4Qh4wrv+2a/9MZ3mxRJ8SlA3rgcrVda?= =?us-ascii?Q?bXsuMf5RJTVo/YcUPR2dJy8oGmhZTnwyrGQOtwm6BJLtPqe5/vy3Zj8E6/gF?= =?us-ascii?Q?W3mT0qdKAnpHgokOnZeMck7goDNaibeQMZENnfGN?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5863.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30dd8d58-d0a7-4926-0100-08db028d8bd0 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jan 2023 06:45:16.1741 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jjpnQNbnTnvISYkXvetN4eWjJruw9OAnjYtGzXBwuX6XXeVg9rO1PmAH0wLNF/AlLXeU67aHD1RJOf8VbTGuxg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5594 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Bob Feng -----Original Message----- From: Chen, Christine =20 Sent: Monday, January 30, 2023 2:27 PM To: devel@edk2.groups.io Cc: Feng, Bob C ; Gao, Liming Subject: [Patch V2 2/3] [edk2-staging]BaseTools: Add new build option for P= yVfrCompiler yaml generation Add new build option "--vfr-yaml-enable" for Python VfrCompiler extended ou= tput yaml file generation. Cc: Bob Feng Cc: Liming Gao Signed-off-by: Yuwei Chen --- BaseTools/Source/Python/AutoGen/DataPipe.py | 2 ++ BaseTools/Source/Python/AutoGen/ModuleAutoGen.py | 8 ++++++++ BaseTools/Source/Python/Common/GlobalData.py | 4 ++++ BaseTools/Source/Python/build/build.py | 33 ++++++++++++++++++++= +++++++++++++ BaseTools/Source/Python/build/buildoptions.py | 1 + 5 files changed, 48 insertions(+) diff --git a/BaseTools/Source/Python/AutoGen/DataPipe.py b/BaseTools/Source= /Python/AutoGen/DataPipe.py index 848c7a8296..c700baf7b7 100755 --- a/BaseTools/Source/Python/AutoGen/DataPipe.py +++ b/BaseTools/Source/Python/AutoGen/DataPipe.py @@ -171,3 +171,5 @@ class MemoryDataPipe(DataPipe): self.DataContainer =3D {"EnableGenfdsMultiThread":GlobalData.gEnab= leGenfdsMultiThread} self.DataContainer =3D {"gPlatformFinalPcds":= GlobalData.gPlatformFinalPcds}++ self.DataContainer =3D {"VfrYamlEna= ble": GlobalData.gVfrYamlEnable}diff --git a/BaseTools/Source/Python/AutoGe= n/ModuleAutoGen.py b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py index d05410b329..eb81c3f3af 100755 --- a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py +++ b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py @@ -434,6 +434,14 @@ class ModuleAutoGen(AutoGen): def DebugDir(self): return _MakeDir((self.BuildDir, "DEBUG")) = + @cached_property+ def VarIFiles(self):+ rt =3D []+ fo= r SrcFile in self.SourceFileList:+ if SrcFile.Ext.lower() =3D=3D= '.vfr':+ rt.append(os.path.join(self.OutputDir, "{}.i".form= at(SrcFile.BaseName)))+ return rt+ ## Return the path of custom = file @cached_property def CustomMakefile(self):diff --git a/BaseToo= ls/Source/Python/Common/GlobalData.py b/BaseTools/Source/Python/Common/Glob= alData.py index 197bd83666..039a9648aa 100755 --- a/BaseTools/Source/Python/Common/GlobalData.py +++ b/BaseTools/Source/Python/Common/GlobalData.py @@ -123,3 +123,7 @@ gSikpAutoGenCache =3D set() # Common lock for the file= access in multiple process AutoGens file_lock =3D None +#+# Build flag for= generate Yaml file from Vfr file+#+gVfrYamlEnable =3D Falsediff --git a/Ba= seTools/Source/Python/build/build.py b/BaseTools/Source/Python/build/build.= py index 51fb1f433e..7e2f25686d 100755 --- a/BaseTools/Source/Python/build/build.py +++ b/BaseTools/Source/Python/build/build.py @@ -748,6 +748,7 @@ class Build(): GlobalData.gBinCacheSource =3D BuildOptions.BinCacheSource = GlobalData.gEnableGenfdsMultiThread =3D not BuildOptions.NoGenfdsMultiThre= ad GlobalData.gDisableIncludePathCheck =3D BuildOptions.DisableIncl= udePathCheck+ GlobalData.gVfrYamlEnable =3D BuildOptions.VfrYamlEnab= le if GlobalData.gBinCacheDest and not GlobalData.gUseHashCache: = EdkLogger.error("build", OPTION_NOT_SUPPORTED, ExtraData=3D"--bi= nary-destination must be used together with --hash.")@@ -1460,6 +1461,17 @@= class Build(): # genfds if Target =3D=3D 'fds':+ if GlobalDat= a.gVfrYamlEnable:+ from VfrCompiler.main import VfrParse+ = variable_i_filelist =3D os.path.join(AutoGenObject.BuildDir,"v= ariable_i_filelist.txt")+ if os.path.exists(variable_i_filel= ist):+ with open(variable_i_filelist) as file:+ = i_filelist =3D file.readlines()+ for = i_file in i_filelist:+ inputfile =3D i_file.repl= ace("\n", "")+ yamloutputfile =3D inputfile.spli= t(".")[0] + '.yaml'+ jsonoutputfile =3D inputfil= e.split(".")[0] + '.json'+ VfrParse(inputfile, y= amloutputfile, jsonoutputfile) if GenFdsApi(AutoGenObject.GenFd= sCommandDict, self.Db): EdkLogger.error("build", COMMAND_FA= ILURE) Threshold =3D self.GetFreeSizeThreshold()@@ -2246,6 +225= 8,15 @@ class Build(): fw.write("Arch=3D%s\n" % "|".join((Wa.ArchList))) = fw.write("BuildDir=3D%s\n" % Wa.BuildDir) fw.write("PlatformGui= d=3D%s\n" % str(Wa.AutoGenObjectList[0].Guid))+ variable_i_filelist = =3D os.path.join(Wa.BuildDir,"variable_i_filelist.txt")+ vfr_var_i = =3D []+ if GlobalData.gVfrYamlEnable:+ for ma in self.All= Modules:+ vfr_var_i.extend(ma.VarIFiles)+ SaveFil= eOnChange(variable_i_filelist, "\n".join(vfr_var_i), False)+ else:+ = if os.path.exists(variable_i_filelist):+ os.remov= e(variable_i_filelist) if GlobalData.gBinCacheSource: = BuildModules.extend(self.MakeCacheMiss)@@ -2358,6 +2379,18 @@ class Build()= : # # Generate FD image if t= here's a FDF file found #+ i= f GlobalData.gVfrYamlEnable:+ from VfrCompiler.m= ain import VfrParse+ variable_i_filelist =3D os.= path.join(Wa.BuildDir,"variable_i_filelist.txt")+ = if os.path.exists(variable_i_filelist):+ w= ith open(variable_i_filelist) as file:+ = i_filelist =3D file.readlines()+ for i_f= ile in i_filelist:+ inputfile =3D i_= file.replace("\n", "")+ yamloutputfi= le =3D inputfile.split(".")[0] + '.yaml'+ = jsonoutputfile =3D inputfile.split(".")[0] + '.json'+ = print('inputfile ', inputfile)+ = VfrParse(inputfile, yamloutputfile, jsonoutputfile) = GenFdsStart =3D time.time() if= GenFdsApi(Wa.GenFdsCommandDict, self.Db): EdkL= ogger.error("build", COMMAND_FAILURE)diff --git a/BaseTools/Source/Python/b= uild/buildoptions.py b/BaseTools/Source/Python/build/buildoptions.py index 8334604b46..c0304c2f98 100644 --- a/BaseTools/Source/Python/build/buildoptions.py +++ b/BaseTools/Source/Python/build/buildoptions.py @@ -103,4 +103,5 @@ class MyOptionParser(): Parser.add_option("--genfds-multi-thread", action=3D"store_true", = dest=3D"GenfdsMultiThread", default=3DTrue, help=3D"Enable GenFds multi thr= ead to generate ffs file.") Parser.add_option("--no-genfds-multi-th= read", action=3D"store_true", dest=3D"NoGenfdsMultiThread", default=3DFalse= , help=3D"Disable GenFds multi thread to generate ffs file.") Parse= r.add_option("--disable-include-path-check", action=3D"store_true", dest=3D= "DisableIncludePathCheck", default=3DFalse, help=3D"Disable the include pat= h check for outside of package.")+ Parser.add_option("--vfr-yaml-ena= ble", action=3D"store_true", dest=3D"VfrYamlEnable", default=3DFalse, help= =3D"Enable the Vfr to yaml function.") self.BuildOption, self.Build= Target =3D Parser.parse_args()--=20 2.27.0.windows.1