From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from rn-mailsvcp-ppex-lapp15.apple.com (rn-mailsvcp-ppex-lapp15.apple.com [17.179.253.34]) by mx.groups.io with SMTP id smtpd.web12.3110.1638911088085794786 for ; Tue, 07 Dec 2021 13:04:48 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=Vtyq027m; spf=pass (domain: apple.com, ip: 17.179.253.34, mailfrom: afish@apple.com) Received: from pps.filterd (rn-mailsvcp-ppex-lapp15.rno.apple.com [127.0.0.1]) by rn-mailsvcp-ppex-lapp15.rno.apple.com (8.16.1.2/8.16.1.2) with SMTP id 1B7KwVM9005817; Tue, 7 Dec 2021 13:04:45 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=urgQsKPbYCYXAL3658gL63KkFrwLcayqKnIGzR7Du6c=; b=Vtyq027mnkDDE/jBNmwQlluimDHAXSzipCqznPVI89beLkzXjASlWzorqW2Qy28D/O6d 5VHsPB6bTVkErjdzgR/PjGd6f8OYr4Yy2l4i/pqqLVbw71I+TMqDZzLr5LyvDl7E2vf+ QpQlKnVsVsDZ0mc75oS8vLuZqcAvwzzyhiLiFdCaVAo5QvC5mA0x4MChUXQU1CWkA1ct lNOuZhngwfrwjG7HW/TCbaHo2w/B7038DgQyh+2dwwnG43TOiUn2P+ZZbsj5DrJh5FCe ZQN20OBXxYQ0Pbsa57FHJmheI+g673r8YBMJgMFEKzK1DY6CZW0x2Dm+85dzrF1941QH qA== Received: from rn-mailsvcp-mta-lapp03.rno.apple.com (rn-mailsvcp-mta-lapp03.rno.apple.com [10.225.203.151]) by rn-mailsvcp-ppex-lapp15.rno.apple.com with ESMTP id 3crscambyy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 07 Dec 2021 13:04:45 -0800 Received: from rn-mailsvcp-mmp-lapp02.rno.apple.com (rn-mailsvcp-mmp-lapp02.rno.apple.com [17.179.253.15]) by rn-mailsvcp-mta-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) with ESMTPS id <0R3R007XCJVXWJA0@rn-mailsvcp-mta-lapp03.rno.apple.com>; Tue, 07 Dec 2021 13:04:45 -0800 (PST) Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp02.rno.apple.com by rn-mailsvcp-mmp-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) id <0R3R00D00JGU5U00@rn-mailsvcp-mmp-lapp02.rno.apple.com>; Tue, 07 Dec 2021 13:04:45 -0800 (PST) X-Va-A: X-Va-T-CD: 60ad0eacccbf6406cb93dd33acd4c9af X-Va-E-CD: 45151d1754065b814e40681044744b42 X-Va-R-CD: 2207b74ae8c86198cc80220b2c489470 X-Va-CD: 0 X-Va-ID: f6fbf843-daad-4a01-8841-99be0ff70de1 X-V-A: X-V-T-CD: 60ad0eacccbf6406cb93dd33acd4c9af X-V-E-CD: 45151d1754065b814e40681044744b42 X-V-R-CD: 2207b74ae8c86198cc80220b2c489470 X-V-CD: 0 X-V-ID: 900c512c-1971-4f1a-9dce-c27987d35f14 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425,18.0.790 definitions=2021-12-07_07:2021-12-06,2021-12-07 signatures=0 Received: from smtpclient.apple (unknown [17.235.48.119]) by rn-mailsvcp-mmp-lapp02.rno.apple.com (Oracle Communications Messaging Server 8.1.0.12.20210903 64bit (built Sep 3 2021)) with ESMTPSA id <0R3R00Y5OJVWDR00@rn-mailsvcp-mmp-lapp02.rno.apple.com>; Tue, 07 Dec 2021 13:04:45 -0800 (PST) From: "Andrew Fish" Message-id: <8733194F-9EB8-490B-82A1-87ABABDDE03F@apple.com> MIME-version: 1.0 (Mac OS X Mail 15.0 \(3693.20.0.1.32\)) Subject: Re: [edk2-devel] Uncrustify Conversion Detailed Plan and Extended Hard Freeze Update #5 - Completed - Hard Freeze Lifted Date: Tue, 07 Dec 2021 13:04:43 -0800 In-reply-to: Cc: Mike Kinney , Michael Kubacki , Leif Lindholm To: devel@edk2.groups.io, mikuback@linux.microsoft.com References: X-Mailer: Apple Mail (2.3693.20.0.1.32) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425,18.0.790 definitions=2021-12-07_07:2021-12-06,2021-12-07 signatures=0 Content-type: multipart/alternative; boundary="Apple-Mail=_92E0ECF3-161E-4EC2-826A-43EAF5536E34" --Apple-Mail=_92E0ECF3-161E-4EC2-826A-43EAF5536E34 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Dec 7, 2021, at 12:35 PM, Michael Kubacki wrote: >=20 > I will send a patch for the Tianocore Wiki shortly. >=20 OK thanks. I can test on Linux and macOS. Maybe I=E2=80=99ll try using VS Code as my editor now=E2=80=A6. Thanks, Andrew Fish > Thanks, > Michael >=20 > On 12/7/2021 2:27 PM, Andrew Fish via groups.io wrote= : >>> On Dec 7, 2021, at 11:22 AM, Michael D Kinney wrote: >>>=20 >>> Hello, >>>=20 >>> Thank you to everyone for their patience and for everyone who helped wi= th the development >>> and review of this important update to the edk2 repository. >>>=20 >>> The last 2 PR series have completed review, passed EDK II CI checks, pa= ssed CompareBuild >>> verifications, and been pushed. >>>=20 >>> https://github.com/tianocore/edk2/pull/2242 >>> https://github.com/tianocore/edk2/pull/2244 >>>=20 >>> The hard freeze has ended and normal development activities can continu= e. >>>=20 >>> 1) If you have code reviews that started before the uncrustify changes,= please >>> update them. The recipes are included below and will be added to the= Wiki. >>>=20 >>> 2) For all new patch review, please make sure you run the uncrustify to= ol or >>> use it as a plugin with your editor. If PRs submitted to EDK II CI d= o not >>> match the uncrustified version, they will not pass CI. >>>=20 >> Mike, >> How is this documented outside of this patch set? Is there a Tianocore W= iki page on configuring uncrustify? Does that Readme.rst link to that? >> Thanks, >> Andrew Fish >>> Changes from Update #4 >>> -----------------------------------------------------------------------= ----- >>> * Pushed PR (6) >>> * Pushed PR (7) >>> * Change uncrustify configuration align_assign_thresh from 4 to 0 (no l= imit). >>> * Update all use of ', OPTIONAL' to ' OPTIONAL,' for function params. >>> * Change complex DEBUG_CODE() to DEBUG_CODE_BEGIN/END() >>>=20 >>> Changes from Update #3 >>> -----------------------------------------------------------------------= ----- >>> * Pushed PR (5) >>> * Added link to PR(6). EDK II CI Status is PASS. Build Compare PASS. >>> * Waiting for review of PR (6) >>> * Review of PR (7) completed and waiting for review of PR (6) >>> -----------------------------------------------------------------------= ----- >>>=20 >>> Changes from Update #2 >>> -----------------------------------------------------------------------= ----- >>> * Changed order of PRs swapping (4) and (5). The PR that activates >>> increases the max CI agent job time is independent of all the other >>> PRs and its review is complete, so it can be committed now. >>> * Pushed PRs (1), (2), (3), (4). >>> * Waiting for review to complete for PRs (5) and (6) >>> * Reviews complete for PR (7) >>> * Identifies steps using git filter-branch to apply uncrustify changes = to a >>> code review patch series that was generated before the uncrustify chan= ges >>> avoiding manual merge. >>> * Identified steps using git filter-repo to generate an alternate histo= ry of >>> the edk2 repo with uncrustify changes applied on every commit. This m= ay >>> be useful when evaluating changes to files using tools like git blame >>> without the large uncrustify patch series. >>> -----------------------------------------------------------------------= ---- >>>=20 >>> Changes from Update #1 >>> -----------------------------------------------------------------------= ----- >>> * Changed order of PRs swapping (6) and (7). The PR that activates >>> EDK II CI check UncrustifyCheck has to be last because it unconditiona= lly >>> checks all C/H files in all packages. Not just files that have been >>> modified like some of the other checkers. >>> * Updated link to the branch with the UncrustifyCheck plugin that has b= een >>> updated with a one line change and Reviewed-by and Tested-by tags. >>> https://github.com/mdkinney/edk2/tree/Bug_3748_add_uncrustify_ci_plugi= n_v6 >>> * Reviews complete for (1), (2), (3), (5), and (7) >>> -----------------------------------------------------------------------= ---- >>>=20 >>> Michael Kubacki and I have prepared the patches required to apply the >>> uncrustify changes and enable EDK II CI to check all submitted >>> patches have been run through uncrustify. >>>=20 >>> We have verified through the CompareBuild GitHub Action that the >>> format changes performed by uncrustify have no functional changes. >>> All of the OBJ, LIB, DLL, EFI, FFS, FV, and FD files match 100% >>> across 70 VS2019/GCC5 builds of all package/platform DSC files in >>> the edk2 repo. >>>=20 >>> The hard freeze will be extended after the edk2-stable202111 tag until >>> all uncrustify related changes are committed. We do not expect this >>> to take more than a few days. Do not push any PRs until the hard >>> freeze is lifted. >>>=20 >>> The changes are broken up into 7 patch series/PRs. The PRs are ordered >>> so they can be submitted using the normal submission process and EDK II >>> CI will pass for each one. Details are listed below. >>>=20 >>> Uncrustify 73.0.3 for EDK II >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D >>> * Sources: https://dev.azure.com/projectmu/_git/Uncrustify >>> * Documentation: https://dev.azure.com/projectmu/Uncrustify/_wiki/wikis= /Uncrustify.wiki/1/Project-Mu-(EDK-II)-Fork-Readme >>> * Download: https://dev.azure.com/projectmu/Uncrustify/_packaging?_a=3D= package&feed=3Dmu_uncrustify&package=3Dmu-uncrustify-release&protocolType= =3DNuGet&version=3D73.0.3 >>>=20 >>> Installing Uncrustify >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> The Uncrustify tool is installed automatically when the Pytools >>> environment is used and the stuart* commands are run to complete the >>> environment setup. Please see: >>>=20 >>> https://github.com/tianocore/edk2/tree/master/.pytool#running-ci-loc= ally >>>=20 >>> Uncrustify can also be installed from the download page listed above >>> or built from sources from the source link above. >>>=20 >>> The Documentation link provides instruction on how to run uncrustify fr= om >>> the command line or install as a Visual Studio Code plugin. The main >>> uncrustify documentation also describes how to integrate with a few oth= er >>> editors. >>>=20 >>> We have also discussed a client side githook. That effort has not star= ted. >>> Let us know if that is a feature you would find useful. >>>=20 >>> Developer impact for new code reviews >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> Once the uncrustify checker is active in EDK II CI, developers must >>> make sure their patches are run through the uncrustify tool before >>> sending the patches for review. >>>=20 >>> Developers must install and run uncrustify against changes files before >>> sending patch review emails or submitting PR for EDK II CI. If EDK II = CI >>> detects and differences in source formatting, then EDK II CI will fail >>> and the developer must run uncrustify and resubmit the patches. >>>=20 >>> Developer impact to patch series/PRs reviewed during edk2-stable201121 = soft/hard freeze >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> Developers must rebase their changes after the uncrustify source change= s are >>> committed(latest edk2/master) >>>=20 >>> The following steps can be used to update an existing branch with the >>> required uncrustify format. This is the Windows version. I will add >>> the Linux version soon. >>>=20 >>> 1) Fetch and checkout and rebase to latest edk2/master >>>=20 >>> git fetch origin >>> git checkout master >>> git rebase origin/master >>>=20 >>> 2) Make a backup copy of plugin UncrustifyCheck outside WORKSPACE. >>> (e.g. C:\Temp\UncrustifyCheck) so the uncrustify tool executable = and >>> EDK II specific uncrustify configuration file available when work= ing >>> with a branch that does not have those tools in its scope. >>>=20 >>> xcopy .pytool\Plugin\UncrustifyCheck C:\Temp\UncrustifyCheck >>>=20 >>> 3) Check out the patch series branch (e.g. MyBranch) >>>=20 >>> git checkout MyBranch >>>=20 >>> 4) Rebase patch series against edk2-stable202111 >>>=20 >>> git rebase edk2-stable202111 >>>=20 >>> 5) Create new branch for the uncrustifed version (e.g. MyBranch_Uncr= ustified) >>>=20 >>> git checkout -b MyBranch_Uncrustified >>>=20 >>> 6) Use git filter-branch to uncrustify all the commits in the series >>> between the rebase target from (2) and HEAD of the branch. A fil= ter >>> can be used to scope the uncrustify operations to only the C/H fi= les >>> in the specific package the patch series is against. (e.g. Dynami= cTablesPkg). >>> BaseTools should always be excluded. If the package scoped filte= r is >>> not used, it will still work, but will take longer to run because >>> uncrustify will rescan every C/H files in the whole repo. >>>=20 >>> git filter-branch --tree-filter "git ls-files DynamicTablesPk= g*.c DynamicTablesPkg*.h :!BaseTools/* | c:\\Temp\\UncrustifyCheck\\mu-uncr= ustify-release_extdep\\Windows-x86\\uncrustify.exe -c c:\\Temp\\UncrustifyC= heck\\uncrustify.cfg -F - --replace --no-backup --if-changed" edk2-stable20= 2111..HEAD >>>=20 >>> 7) Now that all the individual patches in the branch are uncrustifie= d, >>> rebase against latest edk2/master that is already uncrustified. >>>=20 >>> git rebase master >>>=20 >>> 8) Verify the patches in this new branch. >>>=20 >>> Impacts to tracing history across the uncrusity changes >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D >>> Tools the view file and line history do work with the large uncrustify >>> patch series. One impact is that the operations can be very slow due >>> to the large uncrustify patches. >>>=20 >>> One option to provide a faster experience is to provide an alternate >>> version of the edk2 repository as "documentation" that has the >>> entire history re-written with uncrustify run on every commit. >>> The tool called git-filter-repo can be used to perform this >>> transformation and runs in a reasonable period of time (a few hours) >>>=20 >>> https://github.com/newren/git-filter-repo >>> https://github.com/newren/git-filter-repo/blob/main/contrib/filter-re= po-demos/lint-history >>>=20 >>> The following steps can be used to perform this transformation. >>> This is the Windows version. I will add the Linux version soon. >>>=20 >>> ** WARNING ** This operation modifies(rewrites) all the commits >>> in the local copy of the repo. Do not perform >>> these steps on a local repo you are using for >>> active development. >>>=20 >>> 1) Clone edk2 into a new directory (see **WARNING**) >>>=20 >>> git clone https://github.com/tianocore/edk2.git edk2-uncrusti= fied >>> cd edk2-uncrustified >>>=20 >>> 2) Setup python virtual env, install pytools, and run stuart command= s >>> to setup build environment which includes installing uncrustify t= ools. >>>=20 >>> https://github.com/tianocore/edk2/tree/master/.pytool#running= -ci-locally >>>=20 >>> 3) Make a backup copy of plugin UncrustifyCheck outside WORKSPACE. >>> (e.g. C:\Temp\UncrustifyCheck) so the uncrustify tool executable = and >>> EDK II specific uncrustify configuration file available when work= ing >>> with a branch that does not have those tools in its scope. >>>=20 >>> xcopy .pytool\Plugin\UncrustifyCheck C:\Temp\UncrustifyCheck >>>=20 >>> 4) Use lint-history.py from git-filter-repo examples >>>=20 >>> https://github.com/newren/git-filter-repo >>> https://github.com/newren/git-filter-repo/blob/main/contrib/f= ilter-repo-demos/lint-history >>>=20 >>> Line #127 - Add try except around subprocess.check_call() with ex= cept >>> being pass. This is required because there are a few commits of = C >>> files in the edk2 repo that have incorrect C syntax and do not >>> build with a C compiler and break the uncrustify parser. Skip re= format >>> of C files that can not be parsed by uncrustify. These rare inst= ances >>> are addressed in the commit that fixes the C syntax error. >>>=20 >>> Run this slightly modified version of lint-history. Include only >>> C/H files and exclude directories that start with 'Tools' or 'Bas= eTools'. >>> This step took about 2.2 hours on a laptop. >>>=20 >>> lint-history.py >>> --relevant "return (not filename.startswith(b'Tools') and= not filename.startswith(b'BaseTools') and (filename.endswith(b'.c') or fil= ename.endswith(b'.h')))" >>> c:\\work\\GitHub\\tianocore\\foo\\UncrustifyCheck\\mu-unc= rustify-release_extdep\\Windows-x86\\uncrustify.exe -c c:\\work\\GitHub\\ti= anocore\\foo\\UncrustifyCheck\\uncrustify.cfg --replace --no-backup --if-ch= anged >>>=20 >>> Order of PRs to apply during extended hard freeze >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D >>> 1) Update EmulatorPkg Win Host [BuildOptions] MSFT CC_FLAGS to not forc= e debug information >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3747 >>> * https://github.com/mdkinney/edk2/tree/Bug_3747_EmulatorPkg_WinHost_= ReproducibleBuild >>> * https://github.com/tianocore/edk2/pull/2215 >>> * Required for EmulatorPkg to pass CompareBuild for VS2019 IA32/X64 b= uilds. >>> * Status: Review complete. PR pushed. >>>=20 >>> 2) EccCheck should not revert staged and local changes >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D2986 >>> * https://github.com/mdkinney/edk2/tree/Bug_2986_EccCheckRemoveGitRev= ert_V2 >>> * https://github.com/tianocore/edk2/pull/2216 >>> * Required for EDK II CI to complete in a reasonable period of time w= hen >>> processing the 4000+ source file style changes made by uncrustify. >>> * Also fixes critical bugs that can potentially corrupt git state whe= n >>> EccCheck is run locally. >>> * Status: Review complete. PR pushed. >>>=20 >>> 3) Update pytool LicenseCheck plugin to use temp directory for diff out= put file >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3746 >>> * https://github.com/mdkinney/edk2/tree/Bug_3746_LicenseCheckUseDiffO= utputFile_V2 >>> * https://github.com/tianocore/edk2/pull/2217 >>> * Required to reduce EDK II CI build times. >>> * Status: Review complete. PR pushed. >>>=20 >>> 4) Update max job time from 60 min to 120 minutes in .azurepipelines/te= mplates >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3750 >>> * https://github.com/mdkinney/edk2/tree/Bug_3750_IncreaseAzurePipelin= esTimeout >>> * https://github.com/tianocore/edk2/pull/2219 >>> * Required to allow EccCheck of uncrustify changes to complete on Azu= re >>> Pipelines CI agents without timing out. >>> * Status: Review complete. PR pushed. >>>=20 >>> 5) Update Package YAML to ignore specific ECC files/errors >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3749 >>> * https://github.com/mdkinney/edk2/tree/Bug_3749_EccCheckIgnoreFilesE= rrors >>> * https://github.com/tianocore/edk2/pull/2218 >>> * Required to pass EccCheck >>> * Status: Review complete. PR pushed >>>=20 >>> 6) Uncrustify Source Changes >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3737 >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3767 >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3760 >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3739 >>> * https://github.com/mdkinney/edk2/tree/Bug_3737_3767_3760_3739_Apply= UncrustifyChanges_V7 >>> * https://github.com/tianocore/edk2/pull/2242 >>> * Build comparison result PASS: https://github.com/mdkinney/edk2/acti= ons/runs/1550132292 >>> * EFI_D_ -> DEBUG changes required to pass PatchCheck >>> * , OPTIONAL -> OPTIONAL, changes required for proper formatting >>> * DEBUG_CODE() -> DEBUG_CODE_BEGIN/END() required for complex code bl= ocks >>> for proper formatting. >>> * Uncrustify format changes required to pass UncrustifyCheck >>> * Status: Review complete. PR pushed >>>=20 >>> 7) UncrustifyCheck EDK II CI Plugin >>> * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3748 >>> * https://github.com/mdkinney/edk2/tree/Bug_3748_add_uncrustify_ci_pl= ugin_v7 >>> * Required to enforce all PRs submitted to EDK II CI match uncrustify= format. >>> * Unconditionally checks all packages. Cannot be committed until all= C/H >>> source files have been updated. >>> * Status: Review complete. PR pushed. >>>=20 >>> Combined Branch/PR for Review/Test >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> * Build Comparison results must pass 100% across the full set of PRs be= fore >>> the individual PRs can be pushed in the order listed above. >>> * Branch: https://github.com/mdkinney/edk2/tree/TestOnly_Uncrustify_PR_= Series >>> * PR: https://github.com/tianocore/edk2/pull/2229 >>> Status =3D PASS >>> * CompareBuild: >>> Branch: https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUnc= rustifyChanges_V5 >>> --ref1: ef9a059cdb15844fe52a49af2bf7d86b9dd3e9bf >>> --ref2: Bug_3737_3739_ApplyUncrustifyChanges_V5 >>> Extra Options: -n 4 --quiet >>> Results: https://github.com/mdkinney/edk2/actions/runs/1521618836 >>> 30 VS2019 build comparisons PASS >>> 40 GCC5 build comparisons PASS >>> 100% PASS >>>=20 >>> The following git log shows the set of patches from --ref1 to --ref 2ac= ross >>> which there are no differences in any of the OBJ/LIB/DLL/EFI/FFS/FV/FD = files. >>>=20 >>> --ref2 >>> b7d4bf0675b7 (HEAD -> Bug_3737_3739_ApplyUncrustifyChanges_V5) UnitTest= FrameworkPkg: Apply uncrusitify changes >>> 7f03d25f60e7 UefiPayloadPkg: Apply uncrusitify changes >>> 0bfd8d9b5ac9 UefiCpuPkg: Apply uncrusitify changes >>> e1cd9bfb9dea StandaloneMmPkg: Apply uncrusitify changes >>> 5da2f65be378 SourceLevelDebugPkg: Apply uncrusitify changes >>> 95b86de07e5d SignedCapsulePkg: Apply uncrusitify changes >>> fe71d97246c4 ShellPkg: Apply uncrusitify changes >>> 54c21c952992 SecurityPkg: Apply uncrusitify changes >>> 187a3785f12b RedfishPkg: Apply uncrusitify changes >>> 810100002a46 PcAtChipsetPkg: Apply uncrusitify changes >>> 276a695c0cf2 OvmfPkg: Apply uncrusitify changes >>> 303c0a91ab07 NetworkPkg: Apply uncrusitify changes >>> bc80792cd1b1 MdePkg: Apply uncrusitify changes >>> 3ea86be17a2a MdeModulePkg: Apply uncrusitify changes >>> c70ef11ed0cd IntelFsp2WrapperPkg: Apply uncrusitify changes >>> c0291221f252 IntelFsp2Pkg: Apply uncrusitify changes >>> 6a479952a690 FmpDevicePkg: Apply uncrusitify changes >>> 3a7c05b7070d FatPkg: Apply uncrusitify changes >>> b789f98c8959 EmulatorPkg: Apply uncrusitify changes >>> 952d7a1c9220 EmbeddedPkg: Apply uncrusitify changes >>> a1cc9881bab6 DynamicTablesPkg: Apply uncrusitify changes >>> 50654dfe5785 CryptoPkg: Apply uncrusitify changes >>> ed965a02dfa1 ArmVirtPkg: Apply uncrusitify changes >>> 9744023fbc46 ArmPlatformPkg: Apply uncrusitify changes >>> 7a1cde5f5bba ArmPkg: Apply uncrusitify changes >>> 19d17e0913e8 UefiCpuPkg: Change use of EFI_D_* to DEBUG_* >>> ffa718b4f994 SourceLevelDebugPkg: Change use of EFI_D_* to DEBUG_* >>> b86cb3c5e5b4 ShellPkg: Change use of EFI_D_* to DEBUG_* >>> c7c42204dc07 SecurityPkg: Change use of EFI_D_* to DEBUG_* >>> 16b8e6f958e4 PcAtChipsetPkg: Change use of EFI_D_* to DEBUG_* >>> 0ac3f8b2dac5 OvmfPkg: Change use of EFI_D_* to DEBUG_* >>> bc5004b8d294 NetworkPkg: Change use of EFI_D_* to DEBUG_* >>> 6f671a8e2377 MdePkg: Change use of EFI_D_* to DEBUG_* >>> a10c610ff9a3 MdeModulePkg: Change use of EFI_D_* to DEBUG_* >>> 09a3bddba390 FatPkg: Change use of EFI_D_* to DEBUG_* >>> 59c61318246a EmulatorPkg: Change use of EFI_D_* to DEBUG_* >>> 3a80367dda3b EmbeddedPkg: Change use of EFI_D_* to DEBUG_* >>> 23eb1aaf80ca ArmVirtPkg: Change use of EFI_D_* to DEBUG_* >>> 875914b45c54 ArmPlatformPkg: Change use of EFI_D_* to DEBUG_* >>> eb2eca82b451 ArmPkg: Change use of EFI_D_* to DEBUG_* >>> f0f3f5aae7c4 (origin/master, origin/HEAD, master) UnitTestFrameworkPkg:= Update YAML to ignore specific ECC files/errors >>> c05734797790 UefiPayloadPkg: Update YAML to ignore specific ECC files/e= rrors >>> c30c40d6c63d StandaloneMmPkg: Update YAML to ignore specific ECC files/= errors >>> 9944508e85f1 ShellPkg: Update YAML to ignore specific ECC files/errors >>> 60fa40be458d SecurityPkg: Update YAML to ignore specific ECC files/erro= rs >>> df790cd6b37e MdePkg: Update YAML to ignore specific ECC files/errors >>> 9deb9370766e MdeModulePkg: Update YAML to ignore specific ECC files/err= ors >>> d7d30e8f219f EmulatorPkg: Update YAML to ignore specific ECC files/erro= rs >>> d5744ecba813 CryptoPkg: Update YAML to ignore specific ECC files/errors >>> c97fee87f0f9 ArmVirtPkg: Update YAML to ignore specific ECC files/error= s >>> 1939fc9569f2 ArmPlatformPkg: Update YAML to ignore specific ECC files/e= rrors >>> 365dced2c37a ArmPkg: Update YAML to ignore specific ECC files/errors >>> 76a1ce4d5fec .azurepipelines/templates: Update max pipeline job time to= 2 hours >>> 99f84ff47390 .pytools/Plugin/LicenseCheck: Use temp directory for git d= iff output >>> 3019f1bbabf1 .pytool/Plugin/EccCheck: Add performance optimizations >>> 854462bd3479 .pytool/Plugin/EccCheck: Remove temp directory on exceptio= n >>> 69877614fdee .pytool/Plugin/EccCheck: Remove RevertCode() >>> --ref1 >>> ef9a059cdb15 EmulatorPkg/Win/Host: Update CC_FLAGS >>> bb1bba3d7767 (tag: edk2-stable202111) NetworkPkg: Fix invalid pointer f= or DNS response token on error >>>=20 >>> Best regards, >>>=20 >>> Mike >>>=20 >>>=20 >>>=20 >>>=20 >>>=20 >>>=20 >=20 >=20 >=20 --Apple-Mail=_92E0ECF3-161E-4EC2-826A-43EAF5536E34 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

On Dec 7, 202= 1, at 12:35 PM, Michael Kubacki <mikuback@linux.microsoft.com> wrote:

I will send a patch for the Tianocore Wiki shortly.=


OK thanks. I can test = on Linux and macOS.

Maybe I=E2=80=99ll = try using VS Code as my editor now=E2=80=A6.

Thanks,

Andrew Fish

Thanks,<= /span>
Michael

On 12/7/2021 2:27 PM, Andrew Fish via groups.io wrote:
On Dec 7, 2021, at 11:2= 2 AM, Michael D Kinney <michael.d.kinney@intel.com> wrote:

Hello,

Thank you to everyone for their p= atience and for everyone who helped with the development
and = review of this important update to the edk2 repository.

The last 2 PR series have completed review, passed EDK II CI chec= ks, passed CompareBuild
verifications, and been pushed.

   https://github.com/tianocore/edk2/pull/22= 42
   https://github.com/tianocore/edk2/pull/2244<= /a>

The hard freeze has ended and normal devel= opment activities can continue.

1) If you have= code reviews that started before the uncrustify changes, please
  update them.  The recipes are included below and wil= l be added to the Wiki.

2) For all new patch r= eview, please make sure you run the uncrustify tool or
 =  use it as a plugin with your editor.  If PRs submitted to EDK II= CI do not
  match the uncrustified version, they w= ill not pass CI.

Mike,
How is this documented outside of this patch set? Is there a Tianocor= e Wiki page on configuring uncrustify? Does that Readme.rst link to that?Thanks,
Andrew Fish
Changes from Update #4
---------------= -------------------------------------------------------------
* Pushed PR (6)
* Pushed PR (7)
* Change uncru= stify configuration align_assign_thresh from 4 to 0 (no limit).
* Update all use of ', OPTIONAL' to ' OPTIONAL,' for function params.* Change complex DEBUG_CODE() to DEBUG_CODE_BEGIN/END()

Changes from Update #3
----------------= ------------------------------------------------------------
= * Pushed PR (5)
* Added link to PR(6). EDK II CI Status is PA= SS. Build Compare PASS.
* Waiting for review of PR (6)
* Review of PR (7) completed and waiting for review of PR (6)
------------------------------------------------------------------= ----------

Changes from Update #2
-------------------------------------------------------------------------= ---
* Changed order of PRs swapping (4) and (5).  The PR= that activates
 increases the max CI agent job time is = independent of all the other
 PRs and its review is comp= lete, so it can be committed now.
* Pushed PRs (1), (2), (3),= (4).
* Waiting for review to complete for PRs (5) and (6)* Reviews complete for PR (7)
* Identifies steps = using git filter-branch to apply uncrustify changes to a
&nbs= p;code review patch series that was generated before the uncrustify changes=
 avoiding manual merge.
* Identified step= s using git filter-repo to generate an alternate history of
&= nbsp;the edk2 repo with uncrustify changes applied on every commit.  T= his may
 be useful when evaluating changes to files usin= g tools like git blame
 without the large uncrustify pat= ch series.
--------------------------------------------------= -------------------------

Changes from Update = #1
----------------------------------------------------------= ------------------
* Changed order of PRs swapping (6) and (7= ).  The PR that activates
 EDK II CI check Uncrusti= fyCheck has to be last because it unconditionally
 check= s all C/H files in all packages.  Not just files that have been
 modified like some of the other checkers.
* Upd= ated link to the branch with the UncrustifyCheck plugin that has been
 updated with a one line change and Reviewed-by and Tested-by= tags.
 
https://github.com/mdkinn= ey/edk2/tree/Bug_3748_add_uncrustify_ci_plugin_v6
* Revie= ws complete for (1), (2), (3), (5), and (7)
-----------------= ----------------------------------------------------------
Michael Kubacki and I have prepared the patches required to ap= ply the
uncrustify changes and enable EDK II CI to check all = submitted
patches have been run through uncrustify.

We have verified through the CompareBuild GitHub Actio= n that the
format changes performed by uncrustify have no fun= ctional changes.
All of the OBJ, LIB, DLL, EFI, FFS, FV, and = FD files match 100%
across 70 VS2019/GCC5 builds of all packa= ge/platform DSC files in
the edk2 repo.

The hard freeze will be extended after the edk2-stable202111 tag un= til
all uncrustify related changes are committed.  We do= not expect this
to take more than a few days.  Do not p= ush any PRs until the hard
freeze is lifted.
The changes are broken up into 7 patch series/PRs.  The P= Rs are ordered
so they can be submitted using the normal subm= ission process and EDK II
CI will pass for each one.  De= tails are listed below.

Uncrustify 73.0.3 for = EDK II
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
* Sources: https://dev.azure.co= m/projectmu/_git/Uncrustify
* Documentation: https://dev.azure.com/projectmu/Un= crustify/_wiki/wikis/Uncrustify.wiki/1/Project-Mu-(EDK-II)-Fork-Readme<= br class=3D"">* Download: ht= tps://dev.azure.com/projectmu/Uncrustify/_packaging?_a=3Dpackage&feed= =3Dmu_uncrustify&package=3Dmu-uncrustify-release&protocolType=3DNuG= et&version=3D73.0.3

Installing Uncrust= ify
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D
The Uncrustify tool is installed automatically when= the Pytools
environment is used and the stuart* commands are= run to complete the
environment setup.  Please see:

   https://gi= thub.com/tianocore/edk2/tree/master/.pytool#running-ci-locally

Uncrustify can also be installed from the download pag= e listed above
or built from sources from the source link abo= ve.

The Documentation link provides instructio= n on how to run uncrustify from
the command line or install a= s a Visual Studio Code plugin.  The main
uncrustify docu= mentation also describes how to integrate with a few other
ed= itors.

We have also discussed a client side gi= thook.  That effort has not started.
Let us know if that= is a feature you would find useful.

Developer= impact for new code reviews
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D
Once the uncrustify checker is active in EDK II CI,= developers must
make sure their patches are run through the = uncrustify tool before
sending the patches for review.

Developers must install and run uncrustify against c= hanges files before
sending patch review emails or submitting= PR for EDK II CI.  If EDK II CI
detects and differences= in source formatting, then EDK II CI will fail
and the devel= oper must run uncrustify and resubmit the patches.

Developer impact to patch series/PRs reviewed during edk2-stable20112= 1 soft/hard freeze
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Developers must rebase their changes after the uncrustify source c= hanges are
committed(latest edk2/master)

The following steps can be used to update an existing branch with = the
required uncrustify format.  This is the Windows ver= sion.  I will add
the Linux version soon.
=
   1) Fetch and checkout and rebase to latest= edk2/master

     &nb= sp;    git fetch origin
   = ;       git checkout master
          git rebase or= igin/master

   2) Make a backup= copy of plugin UncrustifyCheck outside WORKSPACE.
 &nbs= p;    (e.g. C:\Temp\UncrustifyCheck) so the uncrustify = tool executable and
      EDK I= I specific uncrustify configuration file available when working
      with a branch that does not have tho= se tools in its scope.

    = ;      xcopy .pytool\Plugin\UncrustifyCheck C= :\Temp\UncrustifyCheck

   3) Ch= eck out the patch series branch (e.g. MyBranch)

          git checkout = MyBranch

   4) Rebase patch ser= ies against edk2-stable202111

  &nbs= p;       git rebase edk2-stable202111
   5) Create new branch for the u= ncrustifed version (e.g. MyBranch_Uncrustified)

          git checkout = -b MyBranch_Uncrustified

   6) = Use git filter-branch to uncrustify all the commits in the series
      between the rebase target from (2= ) and HEAD of the branch.  A filter
   &n= bsp;  can be used to scope the uncrustify operations to only the = C/H files
      in the specific= package the patch series is against. (e.g. DynamicTablesPkg).
      BaseTools should always be excluded. =  If the package scoped filter is
    = ;  not used, it will still work, but will take longer to run beca= use
      uncrustify will resca= n every C/H files in the whole repo.

 &nb= sp;        git filter-branch --tree= -filter "git ls-files DynamicTablesPkg*.c DynamicTablesPkg*.h :!BaseTools/*= | c:\\Temp\\UncrustifyCheck\\mu-uncrustify-release_extdep\\Windows-x86\\un= crustify.exe -c c:\\Temp\\UncrustifyCheck\\uncrustify.cfg -F - --replace --= no-backup --if-changed" edk2-stable202111..HEAD

   7) Now that all the individual patches in the branch ar= e uncrustified,
      rebase ag= ainst latest edk2/master that is already uncrustified.

          git re= base master

   8) Verify the pa= tches in this new branch.

Impacts to tracing h= istory across the uncrusity changes
=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Tools the view file and line history do work with the large uncrustif= y
patch series.  One impact is that the operations can b= e very slow due
to the large uncrustify patches.

One option to provide a faster experience is to provide an= alternate
version of the edk2 repository as "documentation" = that has the
entire history re-written with uncrustify run on= every commit.
The tool called git-filter-repo can be used to= perform this
transformation and runs in a reasonable period = of time (a few hours)

  https://github.com/new= ren/git-filter-repo
  https://github.com/newren/git-filter-repo/blob/main/contrib/f= ilter-repo-demos/lint-history

The followin= g steps can be used to perform this transformation.
This is t= he Windows version. I will add the Linux version soon.

   ** WARNING **  This operation modifies(rewr= ites) all the commits
      &nb= sp;           in the= local copy of the repo.  Do not perform
  &nb= sp;            =    these steps on a local repo you are using for
            =       active development.

   1) Clone edk2 into a new directory (see **WARNI= NG**)

      &nbs= p;   git clone https://github.com/tianocore/edk2.git edk2-uncrustified=
          = cd edk2-uncrustified

   2) Setu= p python virtual env, install pytools, and run stuart commands
      to setup build environment which incl= udes installing uncrustify tools.

  =         https:= //github.com/tianocore/edk2/tree/master/.pytool#running-ci-locally

   3) Make a backup copy of plugin = UncrustifyCheck outside WORKSPACE.
    &n= bsp; (e.g. C:\Temp\UncrustifyCheck) so the uncrustify tool executable = and
      EDK II specific uncru= stify configuration file available when working
  &= nbsp;   with a branch that does not have those tools in its = scope.

      &nb= sp;   xcopy .pytool\Plugin\UncrustifyCheck C:\Temp\Uncrustif= yCheck

   4) Use lint-history.p= y from git-filter-repo examples

  &n= bsp;       https://github.com/newren/git-filter-re= po
         =  https://github.com/newren/git-= filter-repo/blob/main/contrib/filter-repo-demos/lint-history

      Line #127 - Add tr= y except around subprocess.check_call() with except
 &nb= sp;    being pass.  This is required because there= are a few commits of C
      f= iles in the edk2 repo that have incorrect C syntax and do not
      build with a C compiler and break the = uncrustify parser.  Skip reformat
   &nbs= p;  of C files that can not be parsed by uncrustify.  These = rare instances
      are addres= sed in the commit that fixes the C syntax error.

      Run this slightly modified version o= f lint-history.  Include only
    &n= bsp; C/H files and exclude directories that start with 'Tools' or 'Bas= eTools'.
      This step took a= bout 2.2 hours on a laptop.

   =        lint-history.py
&nb= sp;            =  --relevant "return (not filename.startswith(b'Tools') and not filenam= e.startswith(b'BaseTools') and (filename.endswith(b'.c') or filename.endswi= th(b'.h')))"
        =       c:\\work\\GitHub\\tianocore\\foo\\Uncru= stifyCheck\\mu-uncrustify-release_extdep\\Windows-x86\\uncrustify.exe -c c:= \\work\\GitHub\\tianocore\\foo\\UncrustifyCheck\\uncrustify.cfg --replace -= -no-backup --if-changed

Order of PRs to apply = during extended hard freeze
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
1) Update Emulator= Pkg Win Host [BuildOptions] MSFT CC_FLAGS to not force debug information  * https://bugzilla.tianocore.org/show_bug.cgi?id= =3D3747
  * ht= tps://github.com/mdkinney/edk2/tree/Bug_3747_EmulatorPkg_WinHost_Reproducib= leBuild
  * https://github.com/tianocore/edk2/pull/2215=
  * Required for EmulatorPkg to pass CompareBu= ild for VS2019 IA32/X64 builds.
  * Status: Review = complete.  PR pushed.

2) EccCheck should = not revert staged and local changes
  * https://b= ugzilla.tianocore.org/show_bug.cgi?id=3D2986
  = * https://github.com/mdkinney/edk2/tree/Bug_2986_EccC= heckRemoveGitRevert_V2
  * https://github.com/tianocore= /edk2/pull/2216
  * Required for EDK II CI to c= omplete in a reasonable period of time when
   = ; processing the 4000+ source file style changes made by uncrustify.  * Also fixes critical bugs that can potentially co= rrupt git state when
    EccCheck is run = locally.
  * Status: Review complete.  PR push= ed.

3) Update pytool LicenseCheck plugin to us= e temp directory for diff output file
  * https= ://bugzilla.tianocore.org/show_bug.cgi?id=3D3746
 &n= bsp;* https://github.com/mdkinney/edk2/tree/Bug= _3746_LicenseCheckUseDiffOutputFile_V2
  * https://gith= ub.com/tianocore/edk2/pull/2217
  * Required to= reduce EDK II CI build times.
  * Status: Review c= omplete.  PR pushed.

4) Update max job ti= me from 60 min to 120 minutes in .azurepipelines/templates
&n= bsp; * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3750
  * https://github.com/mdkinn= ey/edk2/tree/Bug_3750_IncreaseAzurePipelinesTimeout
 = ; * https://github.com/tianocore/edk2/pull/2219
  = * Required to allow EccCheck of uncrustify changes to complete on Azure
    Pipelines CI agents without timing out.<= br class=3D"">  * Status: Review complete.  PR pushed.

5) Update Package YAML to ignore specific ECC files= /errors
  * https://bugzilla.tianocore.org/show_b= ug.cgi?id=3D3749
  * https= ://github.com/mdkinney/edk2/tree/Bug_3749_EccCheckIgnoreFilesErrors
  * https://github.com/tianocore/edk2/pull/2218
  * Required to pass EccCheck
  * S= tatus: Review complete. PR pushed

6) Uncrustif= y Source Changes
  * https://bugzilla.tianocore.o= rg/show_bug.cgi?id=3D3737
  * https://bugzill= a.tianocore.org/show_bug.cgi?id=3D3767
  * ht= tps://bugzilla.tianocore.org/show_bug.cgi?id=3D3760
 = ; * https://bugzilla.tianocore.org/show_bug.cgi?id=3D3739
  * https://github.co= m/mdkinney/edk2/tree/Bug_3737_3767_3760_3739_ApplyUncrustifyChanges_V7<= br class=3D"">  * https://github.com/tianocore/edk2/pull/2242
  * Build comparison result PASS: https://github.com/= mdkinney/edk2/actions/runs/1550132292
  * EFI_D= _ -> DEBUG changes required to pass PatchCheck
  = ;* , OPTIONAL -> OPTIONAL, changes required for proper formatting
  * DEBUG_CODE() -> DEBUG_CODE_BEGIN/END() required fo= r complex code blocks
    for proper form= atting.
  * Uncrustify format changes required to p= ass UncrustifyCheck
  * Status: Review complete. &n= bsp;PR pushed

7) UncrustifyCheck EDK II CI Plu= gin
  * https://bugzilla.tianocore.org/show_bug.c= gi?id=3D3748
  * https:/= /github.com/mdkinney/edk2/tree/Bug_3748_add_uncrustify_ci_plugin_v7
  * Required to enforce all PRs submitted to EDK II CI= match uncrustify format.
  * Unconditionally check= s all packages.  Cannot be committed until all C/H
 = ;   source files have been updated.
 &nbs= p;* Status: Review complete.  PR pushed.

= Combined Branch/PR for Review/Test
=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D
* Build Comparison results must pass 100% across the full= set of PRs before
 the individual PRs can be pushed in = the order listed above.
* Branch: https://git= hub.com/mdkinney/edk2/tree/TestOnly_Uncrustify_PR_Series
= * PR: ht= tps://github.com/tianocore/edk2/pull/2229
  &nb= sp;Status =3D PASS
* CompareBuild:
  =  Branch: https://github.com/mdkinney/edk2/tr= ee/Bug_3737_3739_ApplyUncrustifyChanges_V5
  &n= bsp;--ref1:        ef9a059cdb15844fe52a4= 9af2bf7d86b9dd3e9bf
   --ref2:   &nb= sp;    Bug_3737_3739_ApplyUncrustifyChanges_V5
   Extra Options: -n 4 --quiet
 &nb= sp; Results: https://github.com/mdkinney/edk2/actions/runs/152161= 8836
30 VS2019 build comparisons PASS
40 GCC5 build compa= risons PASS
       100% PA= SS

The following git log shows the set of patc= hes from --ref1 to --ref 2across
which there are no differenc= es in any of the OBJ/LIB/DLL/EFI/FFS/FV/FD files.

--ref2
b7d4bf0675b7 (HEAD -> Bug_3737_3739_ApplyUncr= ustifyChanges_V5) UnitTestFrameworkPkg: Apply uncrusitify changes
7f03d25f60e7 UefiPayloadPkg: Apply uncrusitify changes
= 0bfd8d9b5ac9 UefiCpuPkg: Apply uncrusitify changes
e1cd9bfb9d= ea StandaloneMmPkg: Apply uncrusitify changes
5da2f65be378 So= urceLevelDebugPkg: Apply uncrusitify changes
95b86de07e5d Sig= nedCapsulePkg: Apply uncrusitify changes
fe71d97246c4 ShellPk= g: Apply uncrusitify changes
54c21c952992 SecurityPkg: Apply = uncrusitify changes
187a3785f12b RedfishPkg: Apply uncrusitif= y changes
810100002a46 PcAtChipsetPkg: Apply uncrusitify chan= ges
276a695c0cf2 OvmfPkg: Apply uncrusitify changes
303c0a91ab07 NetworkPkg: Apply uncrusitify changes
bc80= 792cd1b1 MdePkg: Apply uncrusitify changes
3ea86be17a2a MdeMo= dulePkg: Apply uncrusitify changes
c70ef11ed0cd IntelFsp2Wrap= perPkg: Apply uncrusitify changes
c0291221f252 IntelFsp2Pkg: = Apply uncrusitify changes
6a479952a690 FmpDevicePkg: Apply un= crusitify changes
3a7c05b7070d FatPkg: Apply uncrusitify chan= ges
b789f98c8959 EmulatorPkg: Apply uncrusitify changes
952d7a1c9220 EmbeddedPkg: Apply uncrusitify changes
= a1cc9881bab6 DynamicTablesPkg: Apply uncrusitify changes
5065= 4dfe5785 CryptoPkg: Apply uncrusitify changes
ed965a02dfa1 Ar= mVirtPkg: Apply uncrusitify changes
9744023fbc46 ArmPlatformP= kg: Apply uncrusitify changes
7a1cde5f5bba ArmPkg: Apply uncr= usitify changes
19d17e0913e8 UefiCpuPkg: Change use of EFI_D_= * to DEBUG_*
ffa718b4f994 SourceLevelDebugPkg: Change use of = EFI_D_* to DEBUG_*
b86cb3c5e5b4 ShellPkg: Change use of EFI_D= _* to DEBUG_*
c7c42204dc07 SecurityPkg: Change use of EFI_D_*= to DEBUG_*
16b8e6f958e4 PcAtChipsetPkg: Change use of EFI_D_= * to DEBUG_*
0ac3f8b2dac5 OvmfPkg: Change use of EFI_D_* to D= EBUG_*
bc5004b8d294 NetworkPkg: Change use of EFI_D_* to DEBU= G_*
6f671a8e2377 MdePkg: Change use of EFI_D_* to DEBUG_*
a10c610ff9a3 MdeModulePkg: Change use of EFI_D_* to DEBUG_*
09a3bddba390 FatPkg: Change use of EFI_D_* to DEBUG_*
59c61318246a EmulatorPkg: Change use of EFI_D_* to DEBUG_*
3a80367dda3b EmbeddedPkg: Change use of EFI_D_* to DEBUG_*
2= 3eb1aaf80ca ArmVirtPkg: Change use of EFI_D_* to DEBUG_*
8759= 14b45c54 ArmPlatformPkg: Change use of EFI_D_* to DEBUG_*
eb2= eca82b451 ArmPkg: Change use of EFI_D_* to DEBUG_*
f0f3f5aae7= c4 (origin/master, origin/HEAD, master) UnitTestFrameworkPkg: Update YAML t= o ignore specific ECC files/errors
c05734797790 UefiPayloadPk= g: Update YAML to ignore specific ECC files/errors
c30c40d6c6= 3d StandaloneMmPkg: Update YAML to ignore specific ECC files/errors
9944508e85f1 ShellPkg: Update YAML to ignore specific ECC files/erro= rs
60fa40be458d SecurityPkg: Update YAML to ignore specific E= CC files/errors
df790cd6b37e MdePkg: Update YAML to ignore sp= ecific ECC files/errors
9deb9370766e MdeModulePkg: Update YAM= L to ignore specific ECC files/errors
d7d30e8f219f EmulatorPk= g: Update YAML to ignore specific ECC files/errors
d5744ecba8= 13 CryptoPkg: Update YAML to ignore specific ECC files/errors
c97fee87f0f9 ArmVirtPkg: Update YAML to ignore specific ECC files/errors1939fc9569f2 ArmPlatformPkg: Update YAML to ignore specific EC= C files/errors
365dced2c37a ArmPkg: Update YAML to ignore spe= cific ECC files/errors
76a1ce4d5fec .azurepipelines/templates= : Update max pipeline job time to 2 hours
99f84ff47390 .pytoo= ls/Plugin/LicenseCheck: Use temp directory for git diff output
3019f1bbabf1 .pytool/Plugin/EccCheck: Add performance optimizations
854462bd3479 .pytool/Plugin/EccCheck: Remove temp directory on exc= eption
69877614fdee .pytool/Plugin/EccCheck: Remove RevertCod= e()
--ref1
ef9a059cdb15 EmulatorPkg/Win/Host: U= pdate CC_FLAGS
bb1bba3d7767 (tag: edk2-stable202111) NetworkP= kg: Fix invalid pointer for DNS response token on error

Best regards,

Mike






<= /div>
--Apple-Mail=_92E0ECF3-161E-4EC2-826A-43EAF5536E34--