[edk2-devel] Uncrustify Conversion Detailed Plan and Extended Hard Freeze Update #4

Maciej Rabeda maciej.rabeda at linux.intel.com
Mon Dec 6 20:28:19 UTC 2021


Reviewed-by: Maciej Rabeda <maciej.rabeda at linux.intel.com>

On 06-Dec-21 02:17, Michael D Kinney wrote:
> Hello EDK II Maintainers,
>
> A detailed evaluation of the DEBUG_CODE() formatting issue has been completed.
> The reason DEBUG_CODE() is a challenge is that this looks like a macro from a
> C parsing perspective, but the EDK II usage places C statements or blocks of
> C code as the parameter to this macro.
>
> There are actually 2 methods available to mark a statement or a block of code
> to be included when the DEBUG_PROPERTY_DEBUG_CODE_ENABLED bit is enabled in
> PcdDebugPropertyMask. One is DEBUG_CODE() and the other is to mark the beginning
> and end of a code block with DEBUG_CODE_BEGIN() and DEBUG_CODE_END().  In fact,
> DEBUG_CODE() is implemented using DEBUG_CODE_BEGIN() and DEBUG_CODE_END() macros.
>
>      #define DEBUG_CODE(Expression)  \
>        DEBUG_CODE_BEGIN ();          \
>        Expression                    \
>        DEBUG_CODE_END ()
>
> A complete review for the use of these DEBUG_CODE macros was performed on the
> edk2 repo.  Uncrustify performs good formatting for code blocks between
> DEBUG_CODE_BEGIN() and DEBUG_CODE_END().  This is because these look like simple
> macros calls with no parameters and the lines of C code between these 2 macros
> is formatted correctly.
>
> The uncrustify formatting issues are only present with the use of DEBUG_CODE().
> Simple use cases of DEBUG_CODE(Expression) where Expression is a single C
> statement also look correct.  A medium complexity use case where Expression is
> a code block of simple statements or even some local variables and simple
> statements  also look correct.  It is only complex code blocks that use C
> statements such as if/for/while/case that include the use of braces {} does
> uncrustify perform incorrect formatting.
>
> The recommended solution to this issue is to convert the use of DEBUG_CODE()
> to DEBUG_CODE_BEGIN() / DEBUG_CODE_END() for cases where the Expression
> passed to DEBUG_CODE() is the complex use case that contains statements that
> use braces {}.  There are 57 instances of this pattern across 40 files in the
> edk2 repo.
>
> I have posted a branch with these additional patches:
>
>      https://github.com/mdkinney/edk2/tree/Bug_3737_3760_3739_ApplyUncrustifyChanges_V7
>
> I have performed CompareBuild tests with this revised patch series with
> the DEBUG_CODE changes.  It passes 100% showing no binary differences.
>
>      https://github.com/mdkinney/edk2/actions/runs/1542454606
>
> I have opened a PR to run this patch series through EDK II CI. It also passes 100%.
>
>      https://github.com/tianocore/edk2/pull/2236
>
> The summary of changes made since the V6 review are:
>
>      1) Change uncrustify configuration assignment alignment threshold to 0
>
>          align_assign_thresh = 0
>
>      2) Replace "<param>, OPTIONAL" with "<param> OPTIONAL,"
>
>      3) Replace DEBUG_CODE(Expression) with
>
>             DEBUG_CODE_BEGIN();
>             Expression
>             DEBUG_CODE_END()
>
>         if Expression is complex and contains braces {}.
>
>      4) No changes to uncrustify tool required.
>
> Please review the differences between the following 2 branches and provide
> feedback or a Series Reviewed-by if you agree with these additional changes.
>
>      https://github.com/mdkinney/edk2/tree/Bug_3737_3760_3739_ApplyUncrustifyChanges_V6
>      https://github.com/mdkinney/edk2/tree/Bug_3737_3760_3739_ApplyUncrustifyChanges_V7
>
> The goal is to complete the review and get the uncrustify change committed
> tomorrow so the extended hard freeze can be lifted.
>
> Thanks,
>
> Mike
>
>> -----Original Message-----
>> From: Kinney, Michael D <michael.d.kinney at intel.com>
>> Sent: Thursday, December 2, 2021 6:23 PM
>> To: Michael Kubacki <mikuback at linux.microsoft.com>; devel at edk2.groups.io; maciej.rabeda at linux.intel.com; Michael Kubacki
>> <michael.kubacki at microsoft.com>; Andrew Fish (afish at apple.com) <afish at apple.com>; Leif Lindholm <leif at nuviainc.com>;
>> Kinney, Michael D <michael.d.kinney at intel.com>
>> Subject: RE: [edk2-devel] Uncrustify Conversion Detailed Plan and Extended Hard Freeze Update #4
>>
>> Hello EDK II Maintainers,
>>
>> I have entered BZ 3760 to make the use of the OPTIONAL keyword style consistent for all of edk2 repo
>> and to be compatible with uncrustify.
>>
>> I have posted the following V6 branch that does the EFI_D_* to DEBUG_* changes, the OPTIONAL keyword
>> style changes, and the uncrustify changes with the one configuration change for assignment alignment.
>>
>>      https://github.com/mdkinney/edk2/tree/Bug_3737_3760_3739_ApplyUncrustifyChanges_V6
>>
>> Please provide feedback on the code style in this branch with the known DEBUG_CODE() issue still
>> present.
>>
>> If we are able to quickly update uncrustify to handle DEBUG_CODE(), I will generate a V7.
>>
>> Thanks,
>>
>> Mike
>>
>>> -----Original Message-----
>>> From: Kinney, Michael D <michael.d.kinney at intel.com>
>>> Sent: Thursday, December 2, 2021 4:53 PM
>>> To: Michael Kubacki <mikuback at linux.microsoft.com>; devel at edk2.groups.io; maciej.rabeda at linux.intel.com; Michael Kubacki
>>> <michael.kubacki at microsoft.com>; Andrew Fish (afish at apple.com) <afish at apple.com>; Leif Lindholm <leif at nuviainc.com>;
>>> Kinney, Michael D <michael.d.kinney at intel.com>
>>> Subject: RE: [edk2-devel] Uncrustify Conversion Detailed Plan and Extended Hard Freeze Update #4
>>>
>>> Michael,
>>>
>>> Yes.  Please update the patch series that adds UncrustifyCheck with those changes.
>>>
>>> Thanks,
>>>
>>> Mike
>>>
>>>> -----Original Message-----
>>>> From: Michael Kubacki <mikuback at linux.microsoft.com>
>>>> Sent: Thursday, December 2, 2021 4:31 PM
>>>> To: Kinney, Michael D <michael.d.kinney at intel.com>; devel at edk2.groups.io; maciej.rabeda at linux.intel.com; Michael
>> Kubacki
>>>> <michael.kubacki at microsoft.com>; Andrew Fish (afish at apple.com) <afish at apple.com>; Leif Lindholm <leif at nuviainc.com>
>>>> Subject: Re: [edk2-devel] Uncrustify Conversion Detailed Plan and Extended Hard Freeze Update #4
>>>>
>>>> Hi Mike,
>>>>
>>>> Thank you for the detailed analysis and recommendations.
>>>>
>>>> I agree with the recommendations and I will try to have an Uncrustify
>>>> tool update by tomorrow for (4).
>>>>
>>>> That will require an update in uncrustify_ext_dep.yaml to pull in the
>>>> new version. I'm assuming I should also update uncrustify.cfg to set
>>>> align_assign_thresh = 0 in that new patch series?
>>>>
>>>> Regards,
>>>> Michael
>>>>
>>>> On 12/2/2021 7:18 PM, Kinney, Michael D wrote:
>>>>> Hi Michael,
>>>>>
>>>>> CORRECTION: set align_assign_threshold to 0.
>>>>>
>>>>> Reponses inline below.
>>>>>
>>>>> I would like to summarize the 4 issues raised in the past day along with the recommendations.
>>>>>
>>>>> 1) Exclusion feature for UncrustifyCheck.  There are 2 directories with 8 files total that
>>>>>      maintainers have noted they would like to see not go through uncrustify formatting.  Today
>>>>>      the only content that is skipped is BaseTools and submodules.
>>>>>
>>>>>      Adding a general purpose exclusion feature would then require all developers to make
>>>>>      sure their method of using uncrustify also excludes those same areas.  This requires
>>>>>      extra steps for all developers and maintainers.
>>>>>
>>>>>      If we do not add the exclusion feature, then the 8 files will require an extra step
>>>>>      to sync with the original source of those files.  The rate of changes of these 8 files
>>>>>      is very low today.
>>>>>
>>>>>      RECOMMENDATION: Do not add exclusion feature at this time.  Revisit if the extra work
>>>>>      to maintain the files that would be candidates for exclusions increases significantly.
>>>>>
>>>>> 2) Alignment of assignments.  The threshold of 4 characters appears to be too low and causes
>>>>>      source files that are already aligned to become unaligned.
>>>>>
>>>>>      RECOMMENDATION: Change threshold to the default value of 0 which means no limit.
>>>>>
>>>>>          align_assign_thresh= 0
>>>>>
>>>>> 3) Alignment of parameters in function declaration not correct.  The root cause of this
>>>>>      is the use of the OPTIONAL keyword.  If the OPTIONAL keyword is removed, then the
>>>>>      alignment is correct.  The alignment is also correct if the OPTIONAL keyword appears
>>>>>      before the ','.  If the OPTIONAL keyword appears after the ',', then the format is
>>>>>      not correct.  The OPTIONAL keyword indicates that the parameter in the function is
>>>>>      not required and may be passed in as NULL or 0 or some other default value defined by
>>>>>      the API.  It makes more sense for this OPTIONAL keyword that follows the parameter
>>>>>      names to appear before the ',' so it is scoped to the parameter on that line.  If it
>>>>>      appears after the ',', then C parsers thinks it is a prefix (IN, OUT, CONST, volatile,
>>>>>      static) for the next parameter in the function.
>>>>>
>>>>>      RECOMMENDATION: Update patch series with a global search and replace so OPTIONAL
>>>>>      keyword always appears before the ',' on the same line.
>>>>>
>>>>> 	RegEx search string:  ',( *)OPTIONAL( *)'
>>>>> 	RegEx replace string: ' $1OPTIONAL,$2'
>>>>>
>>>>> 4) Format issues with complex blocks in DEBUG_CODE(), or between DEBUG_CODE_BEGIN() and
>>>>>      DEBUG_CODE_END().  Uncrustify treats these as macros and is not aware that the
>>>>>      parameter passed into the macro call is a block of C code that needs to be formatted.
>>>>>      Complex blocks with if/while/for/case statements are impacted the most.
>>>>>
>>>>>      RECOMMENDATION: Update the uncrustify with an edk2 specific extension to treat these
>>>>>      macros as a block of code as if they were surrounded by an extra set of braces {}.
>>>>>
>>>>>
>>>>> I have posted a branch for testing purposes that implements (2) and (3).
>>>>>
>>>>> Branch: https://github.com/mdkinney/edk2/tree/TestOnly_Bug_3737_3739_ApplyUncrustifyChanges_V6_OPTIONAL_Keyword_Fix
>>>>> PR: https://github.com/tianocore/edk2/pull/2233
>>>>>     Status: PASS
>>>>> CompareBuild: https://github.com/mdkinney/edk2/actions/runs/1532855914
>>>>>     Status: PASS
>>>>>
>>>>> You can see what changed by fetching and comparing the following 2 branches:
>>>>>
>>>>>       https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5
>>>>>       https://github.com/mdkinney/edk2/tree/TestOnly_Bug_3737_3739_ApplyUncrustifyChanges_V6_OPTIONAL_Keyword_Fix
>>>>>
>>>>> Please provide feedback on the RECOMMENDATIONS above.  I will go ahead and prepare of V6 version of
>>>>> the patch series now that that test results are all PASS.
>>>>>
>>>>> Best regards,
>>>>>
>>>>> Mike
>>>>>
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Kinney, Michael D <michael.d.kinney at intel.com>
>>>>>> Sent: Thursday, December 2, 2021 4:15 PM
>>>>>> To: Michael Kubacki <mikuback at linux.microsoft.com>; devel at edk2.groups.io; maciej.rabeda at linux.intel.com; Michael
>>>> Kubacki
>>>>>> <michael.kubacki at microsoft.com>; Andrew Fish (afish at apple.com) <afish at apple.com>; Leif Lindholm
>> <leif at nuviainc.com>;
>>>>>> Kinney, Michael D <michael.d.kinney at intel.com>
>>>>>> Subject: RE: [edk2-devel] Uncrustify Conversion Detailed Plan and Extended Hard Freeze Update #4
>>>>>>
>>>>>> Hi Michael,
>>>>>>
>>>>>> Reponses inline below.
>>>>>>
>>>>>> I would like to summarize the 4 issues raised in the past day along with the recommendations.
>>>>>>
>>>>>> 1) Exclusion feature for UncrustifyCheck.  There are 2 directories with 8 files total that
>>>>>>      maintainers have noted they would like to see not go through uncrustify formatting.  Today
>>>>>>      the only content that is skipped is BaseTools and submodules.
>>>>>>
>>>>>>      Adding a general purpose exclusion feature would then require all developers to make
>>>>>>      sure their method of using uncrustify also excludes those same areas.  This requires
>>>>>>      extra steps for all developers and maintainers.
>>>>>>
>>>>>>      If we do not add the exclusion feature, then the 8 files will require an extra step
>>>>>>      to sync with the original source of those files.  The rate of changes of these 8 files
>>>>>>      is very low today.
>>>>>>
>>>>>>      RECOMMENDATION: Do not add exclusion feature at this time.  Revisit if the extra work
>>>>>>      to maintain the files that would be candidates for exclusions increases significantly.
>>>>>>
>>>>>> 2) Alignment of assignments.  The threshold of 4 characters appears to be too low and causes
>>>>>>      source files that are already aligned to become unaligned.
>>>>>>
>>>>>>      RECOMMENDATION: Change threshold to the default value of 0 which means no limit.
>>>>>>
>>>>>>          align_assign_thresh= 4
>>>>>>
>>>>>> 3) Alignment of parameters in function declaration not correct.  The root cause of this
>>>>>>      is the use of the OPTIONAL keyword.  If the OPTIONAL keyword is removed, then the
>>>>>>      alignment is correct.  The alignment is also correct if the OPTIONAL keyword appears
>>>>>>      before the ','.  If the OPTIONAL keyword appears after the ',', then the format is
>>>>>>      not correct.  The OPTIONAL keyword indicates that the parameter in the function is
>>>>>>      not required and may be passed in as NULL or 0 or some other default value defined by
>>>>>>      the API.  It makes more sense for this OPTIONAL keyword that follows the parameter
>>>>>>      names to appear before the ',' so it is scoped to the parameter on that line.  If it
>>>>>>      appears after the ',', then C parsers thinks it is a prefix (IN, OUT, CONST, volatile,
>>>>>>      static) for the next parameter in the function.
>>>>>>
>>>>>>      RECOMMENDATION: Update patch series with a global search and replace so OPTIONAL
>>>>>>      keyword always appears before the ',' on the same line.
>>>>>>
>>>>>> 	RegEx search string:  ',( *)OPTIONAL( *)'
>>>>>> 	RegEx replace string: ' $1OPTIONAL,$2'
>>>>>>
>>>>>> 4) Format issues with complex blocks in DEBUG_CODE(), or between DEBUG_CODE_BEGIN() and
>>>>>>      DEBUG_CODE_END().  Uncrustify treats these as macros and is not aware that the
>>>>>>      parameter passed into the macro call is a block of C code that needs to be formatted.
>>>>>>      Complex blocks with if/while/for/case statements are impacted the most.
>>>>>>
>>>>>>      RECOMMENDATION: Update the uncrustify with an edk2 specific extension to treat these
>>>>>>      macros as a block of code as if they were surrounded by an extra set of braces {}.
>>>>>>
>>>>>>
>>>>>> I have posted a branch for testing purposes that implements (2) and (3).
>>>>>>
>>>>>> Branch: https://github.com/mdkinney/edk2/tree/TestOnly_Bug_3737_3739_ApplyUncrustifyChanges_V6_OPTIONAL_Keyword_Fix
>>>>>> PR: https://github.com/tianocore/edk2/pull/2233
>>>>>>     Status: PASS
>>>>>> CompareBuild: https://github.com/mdkinney/edk2/actions/runs/1532855914
>>>>>>     Status: PASS
>>>>>>
>>>>>> You can see what changed by fetching and comparing the following 2 branches:
>>>>>>
>>>>>>       https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5
>>>>>>       https://github.com/mdkinney/edk2/tree/TestOnly_Bug_3737_3739_ApplyUncrustifyChanges_V6_OPTIONAL_Keyword_Fix
>>>>>>
>>>>>> Please provide feedback on the RECOMMENDATIONS above.  I will go ahead and prepare of V6 version of
>>>>>> the patch series now that that test results are all PASS.
>>>>>>
>>>>>> Best regards,
>>>>>>
>>>>>> Mike
>>>>>>
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Michael Kubacki <mikuback at linux.microsoft.com>
>>>>>>> Sent: Thursday, December 2, 2021 1:57 PM
>>>>>>> To: devel at edk2.groups.io; Kinney, Michael D <michael.d.kinney at intel.com>; maciej.rabeda at linux.intel.com; Michael
>>>> Kubacki
>>>>>>> <michael.kubacki at microsoft.com>; Andrew Fish (afish at apple.com) <afish at apple.com>; Leif Lindholm
>> <leif at nuviainc.com>
>>>>>>> Subject: Re: [edk2-devel] Uncrustify Conversion Detailed Plan and Extended Hard Freeze Update #4
>>>>>>>
>>>>>>> My reply is inline.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Michael
>>>>>>>
>>>>>>> On 12/2/2021 2:45 PM, Michael D Kinney wrote:
>>>>>>>> Hi Maciej,
>>>>>>>>
>>>>>>>> Thanks for the feedback.
>>>>>>>>
>>>>>>>>     * Example #1.This appears to be caused by the following uncrustify
>>>>>>>>       settings:
>>>>>>>>
>>>>>>>> # The threshold for aligning on '=' in assignments.
>>>>>>>>
>>>>>>>> # Use a negative number for absolute thresholds.
>>>>>>>>
>>>>>>>> #
>>>>>>>>
>>>>>>>> # 0: No limit (default).
>>>>>>>>
>>>>>>>> align_assign_thresh= 0# number
>>>>>>>>
>>>>>>>> The edk2 setting for this is:
>>>>>>>>
>>>>>>>> align_assign_thresh= 4
>>>>>>>>
>>>>>>>> This means blocks of assignments that are different than more than 4
>>>>>>>> spaces will be considered a new block.
>>>>>>>>
>>>>>>>> ‘HwAddreLen’ and ‘Xid’ are more than 4 characters in length
>>>>>>>> different.Same for ‘Xid’ and ‘Reserved’.So
>>>>>>>>
>>>>>>>> uncrustify treats these as 3 different assignment blocks.
>>>>>>>>
>>>>>>>> If we change to the default value of 0: No limit, this example is
>>>>>>>> treated as a single block and all ‘=’ are aligned.
>>>>>>>>
>>>>>>>> Is there a reason ‘4’ was selected?Is there is any harm in using the
>>>>>>>> default of 0?
>>>>>>>>
>>>>>>> We can certainly change the threshold. '4' was derived by
>>>>>>> experimentation. This is an area that is somewhat subjective and every
>>>>>>> case is difficult to cover well. Please feel free to suggest any changes.
>>>>>>>
>>>>>> I recommend we use the default value of 0.  That way, any code that choose to
>>>>>> align assignments will still be aligned.  If a developer does not like
>>>>>> short assignments and long assignments in the same code block to use the
>>>>>> long assignment column, they can always break the block up into multiple
>>>>>> blocks by adding a carriage return.
>>>>>>
>>>>>>> For the benefit of others, this file can be a useful refernce
>>>>>>> understanding spans, gaps, and thresholds.
>>>>>>>
>>>>>>> https://github.com/uncrustify/uncrustify/blob/master/documentation/htdocs/configuration.txt
>>>>>>>
>>>>>>>>     * Example #2: Uncruistfy is confused by the DEBUG_CODE() macro.This is
>>>>>>>>       not a traditional macro because the
>>>>>>>>
>>>>>>>> contents of the macro is a block of C code.I do not know how to convince
>>>>>>>> uncrustify that the contents of a
>>>>>>>>
>>>>>>>> macro like function call to be treated as a code block from an indent
>>>>>>>> perspective.
>>>>>>>>
>>>>>>> I believe this would have to be overridden in the Uncrustify fork since
>>>>>>> DEBUG_CODE() is being treated as a macro function call and code blocks
>>>>>>> are not expected there. In addition, some special treatment might be
>>>>>>> needed for alignment in between DEBUG_CODE_BEGIN()/DEBUG_CODE_END().
>>>>>>>
>>>>>>> I'm happy to look at this. However, regression validation can take a
>>>>>>> while so I'd like to make sure we need this now. In cases that do not
>>>>>>> have additional code blocks, it seems to format fairly well. Is this
>>>>>>> prevalent and impactful enough it must be fixed now? Or, could we
>>>>>>> revisit it with a follow up patch?
>>>>>> How long does regression testing take?  I see about 20 instances of
>>>>>> DEBUG_CODE() that are producing bad formatting.  If the content inside
>>>>>> DEBUG_CODE() is a single line of a single block of statements without
>>>>>> any if/while/for/case statements that require further indent, then the
>>>>>> format looks ok.
>>>>>>
>>>>>> DEBUG_CODE_BEGIN() and DEBUG_CODE_END() would look better if the
>>>>>> contents between are also indented one level.
>>>>>>
>>>>>>>>     * Example #3/#4: Uncrustify is confused by the OPTIONAL keyword.The
>>>>>>>>       edk2 config declares it as a QUALIFIER
>>>>>>>>
>>>>>>>> like IN and OUT.However, OPTIONAL only appears at the end of the line
>>>>>>>> that declares a parameter to a
>>>>>>>>
>>>>>>>> function.There are 3 forms. One with comma after OPTIONAL.One with comma
>>>>>>>> before OPTIONAL, and
>>>>>>>>
>>>>>>>> one with no comma if the parameter is the last parameter in the function
>>>>>>>> declaration.
>>>>>>>>
>>>>>>>> TYPE ParamName OPTIONAL,
>>>>>>>>
>>>>>>>> TYPEParamName, OPTIONAL
>>>>>>>>
>>>>>>>> TYPEParamName OPTIONAL
>>>>>>>>
>>>>>>>> OPTIONAL is defined to nothing in edk2 builds.From a uncrustify
>>>>>>>> perspective, we really want is to be
>>>>>>>>
>>>>>>>> ignored or more correctly treated it as a token that is attached to
>>>>>>>> ParamName and the combination of
>>>>>>>>
>>>>>>>> ParamName and OPTIONAL treated as one unit to determine indents.
>>>>>>>>
>>>>>>> "TYPE ParamName, OPTIONAL" seems especially problematic and presents an
>>>>>>> inconsistency with the other formats. Mike, can you please let me know
>>>>>>> if you have the same observation and your thoughts on a consistent pattern?
>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> Mike
>>>>>>>>
>>>>>>>> *From:*devel at edk2.groups.io <devel at edk2.groups.io> *On Behalf Of *Maciej
>>>>>>>> Rabeda
>>>>>>>> *Sent:* Thursday, December 2, 2021 10:27 AM
>>>>>>>> *To:* devel at edk2.groups.io; Kinney, Michael D
>>>>>>>> <michael.d.kinney at intel.com>; Michael Kubacki
>>>>>>>> <michael.kubacki at microsoft.com>; Andrew Fish (afish at apple.com)
>>>>>>>> <afish at apple.com>; Leif Lindholm <leif at nuviainc.com>
>>>>>>>> *Subject:* Re: [edk2-devel] Uncrustify Conversion Detailed Plan and
>>>>>>>> Extended Hard Freeze Update #4
>>>>>>>>
>>>>>>>> Hey Mike,
>>>>>>>>
>>>>>>>> While most of the changes related to fixing coding style violations,
>>>>>>>> there are a couple of changes to NetworkPkg in that PR that make the
>>>>>>>> code less readable. Examples below.
>>>>>>>>
>>>>>>>> Example 1:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Example 2:
>>>>>>>>
>>>>>>>>
>>>>>>>> Example 3:
>>>>>>>>
>>>>>>>>
>>>>>>>> Example 4:
>>>>>>>>
>>>>>>>> On 30-Nov-21 23:34, Michael D Kinney wrote:
>>>>>>>>
>>>>>>>>       Hello,
>>>>>>>>
>>>>>>>>       Thank you for your patience during this extended hard freeze.
>>>>>>>>
>>>>>>>>       Just one more step to go.There has been a delay in the review of
>>>>>>>>
>>>>>>>>       the patch series with the uncrustify source changes.PR(6).This
>>>>>>>>
>>>>>>>>       patch series was not sent out as patch review email because of its
>>>>>>>>
>>>>>>>>       very large size.It only contains source style changes and the
>>>>>>>>
>>>>>>>>       CompareBuild tool and GitHub action has shown there are no binary
>>>>>>>>
>>>>>>>>       differences introduced with these source style changes.
>>>>>>>>
>>>>>>>>       If you are a package maintainer, then please review the following
>>>>>>>>
>>>>>>>>       branch/PR for your package contents and review the EDK II CI results
>>>>>>>>
>>>>>>>>       and BuildCompare results.I do not expect a line by line review
>>>>>>>>
>>>>>>>>       because we already had time to provide feedback on the source style
>>>>>>>>
>>>>>>>>       performed by uncrustify.Instead, a Reviewed-by for your package
>>>>>>>>
>>>>>>>>       indicates that you have reviewed the EDK II CI results and CompareBuild
>>>>>>>>
>>>>>>>>       tool functionality and results and you accept the source style
>>>>>>>>
>>>>>>>>       changes to your package.
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5>
>>>>>>>>       *https://github.com/tianocore/edk2/pull/2229  <https://github.com/tianocore/edk2/pull/2229>
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/actions/runs/1521618836
>>>>>>> <https://github.com/mdkinney/edk2/actions/runs/1521618836>
>>>>>>>>       Additional details on this update below.
>>>>>>>>
>>>>>>>>       Thank you,
>>>>>>>>
>>>>>>>>       Mike
>>>>>>>>
>>>>>>>>       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)
>>>>>>>>
>>>>>>>>       ----------------------------------------------------------------------------
>>>>>>>>
>>>>>>>>       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 changes
>>>>>>>>
>>>>>>>>       avoiding manual merge.
>>>>>>>>
>>>>>>>>       * Identified steps using git filter-repo to generate an alternate history of
>>>>>>>>
>>>>>>>>       the edk2 repo with uncrustify changes applied on every commit.This may
>>>>>>>>
>>>>>>>>       be useful when evaluating changes to files using tools like git blame
>>>>>>>>
>>>>>>>>       without the large uncrustify patch series.
>>>>>>>>
>>>>>>>>       ---------------------------------------------------------------------------
>>>>>>>>
>>>>>>>>       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 unconditionally
>>>>>>>>
>>>>>>>>       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 been
>>>>>>>>
>>>>>>>>       updated with a one line change and Reviewed-by and Tested-by tags.
>>>>>>>>
>>>>>>>>       https://github.com/mdkinney/edk2/tree/Bug_3748_add_uncrustify_ci_plugin_v6
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3748_add_uncrustify_ci_plugin_v6>
>>>>>>>>       * Reviews complete for (1), (2), (3), (5), and (7)
>>>>>>>>
>>>>>>>>       ---------------------------------------------------------------------------
>>>>>>>>
>>>>>>>>       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.
>>>>>>>>
>>>>>>>>       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.
>>>>>>>>
>>>>>>>>       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.
>>>>>>>>
>>>>>>>>       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.
>>>>>>>>
>>>>>>>>       Uncrustify 73.0.3 for EDK II
>>>>>>>>
>>>>>>>>       =============================
>>>>>>>>
>>>>>>>>       * Sources:https://dev.azure.com/projectmu/_git/Uncrustify  <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  <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=package&feed=mu_uncrustify&package=mu-
>>>>>>> uncrustify-release&protocolType=NuGet&version=73.0.3
>>>>>>> <https://dev.azure.com/projectmu/Uncrustify/_packaging?_a=package&feed=mu_uncrustify&package=mu-uncrustify-
>>>>>>> release&protocolType=NuGet&version=73.0.3>
>>>>>>>>       Installing Uncrustify
>>>>>>>>
>>>>>>>>       ======================
>>>>>>>>
>>>>>>>>       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://github.com/tianocore/edk2/tree/master/.pytool#running-ci-locally
>>>>>>> <https://github.com/tianocore/edk2/tree/master/.pytool#running-ci-locally>
>>>>>>>>       Uncrustify can also be installed from the download page listed above
>>>>>>>>
>>>>>>>>       or built from sources from the source link above.
>>>>>>>>
>>>>>>>>       The Documentation link provides instruction on how to run uncrustify from
>>>>>>>>
>>>>>>>>       the command line or install as a Visual Studio Code plugin.The main
>>>>>>>>
>>>>>>>>       uncrustify documentation also describes how to integrate with a few other
>>>>>>>>
>>>>>>>>       editors.
>>>>>>>>
>>>>>>>>       We have also discussed a client side githook.That effort has not started.
>>>>>>>>
>>>>>>>>       Let us know if that is a feature you would find useful.
>>>>>>>>
>>>>>>>>       Developer impact for new code reviews
>>>>>>>>
>>>>>>>>       ======================================
>>>>>>>>
>>>>>>>>       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 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.
>>>>>>>>
>>>>>>>>       Developer impact to patch series/PRs reviewed during edk2-stable201121 soft/hard freeze
>>>>>>>>
>>>>>>>>       =======================================================================================
>>>>>>>>
>>>>>>>>       Developers must rebase their changes after the uncrustify source changes are
>>>>>>>>
>>>>>>>>       committed.The branch with a preview of the uncrustify changes can be used
>>>>>>>>
>>>>>>>>       to start this rebase work.
>>>>>>>>
>>>>>>>>       https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5>
>>>>>>>>       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.
>>>>>>>>
>>>>>>>>       1) Fetch and checkout and rebase to latest edk2/master
>>>>>>>>
>>>>>>>>       git fetch origin
>>>>>>>>
>>>>>>>>       git checkout master
>>>>>>>>
>>>>>>>>       git rebase origin/master
>>>>>>>>
>>>>>>>>       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 working
>>>>>>>>
>>>>>>>>       with a branch that does not have those tools in its scope.
>>>>>>>>
>>>>>>>>       xcopy .pytool\Plugin\UncrustifyCheck C:\Temp\UncrustifyCheck
>>>>>>>>
>>>>>>>>       3) Check out the patch series branch (e.g. MyBranch)
>>>>>>>>
>>>>>>>>       git checkout MyBranch
>>>>>>>>
>>>>>>>>       4) Rebase patch series against edk2-stable202111
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>       git rebase edk2-stable202111
>>>>>>>>
>>>>>>>>       5) Create new branch for the uncrustifed 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
>>>>>>>>
>>>>>>>>       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 because
>>>>>>>>
>>>>>>>>       uncrustify will rescan every C/H files in the whole repo.
>>>>>>>>
>>>>>>>>       git filter-branch --tree-filter "git ls-files DynamicTablesPkg*.c DynamicTablesPkg*.h :!BaseTools/* |
>>>>>>> c:\\Temp\\UncrustifyCheck\\mu-uncrustify-release_extdep\\Windows-x86\\uncrustify.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 are uncrustified,
>>>>>>>>
>>>>>>>>       rebase against latest edk2/master that is already uncrustified.
>>>>>>>>
>>>>>>>>       git rebase master
>>>>>>>>
>>>>>>>>       8) Verify the patches in this new branch.
>>>>>>>>
>>>>>>>>       Impacts to tracing history across the uncrusity changes
>>>>>>>>
>>>>>>>>       =======================================================
>>>>>>>>
>>>>>>>>       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.
>>>>>>>>
>>>>>>>>       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/newren/git-filter-repo  <https://github.com/newren/git-filter-repo>
>>>>>>>>
>>>>>>>>       https://github.com/newren/git-filter-repo/blob/main/contrib/filter-repo-demos/lint-history
>>>>>>> <https://github.com/newren/git-filter-repo/blob/main/contrib/filter-repo-demos/lint-history>
>>>>>>>>       The following steps can be used to perform this transformation.
>>>>>>>>
>>>>>>>>       This is the Windows version. I will add the Linux version soon.
>>>>>>>>
>>>>>>>>       ** 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.
>>>>>>>>
>>>>>>>>       1) Clone edk2 into a new directory (see **WARNING**)
>>>>>>>>
>>>>>>>>       git clonehttps://github.com/tianocore/edk2.git  <https://github.com/tianocore/edk2.git>  edk2-uncrustified
>>>>>>>>
>>>>>>>>       cd edk2-uncrustified
>>>>>>>>
>>>>>>>>       2) Setup python virtual env, install pytools, and run stuart commands
>>>>>>>>
>>>>>>>>       to setup build environment which includes installing uncrustify tools.
>>>>>>>>
>>>>>>>>       https://github.com/tianocore/edk2/tree/master/.pytool#running-ci-locally
>>>>>>> <https://github.com/tianocore/edk2/tree/master/.pytool#running-ci-locally>
>>>>>>>>       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 working
>>>>>>>>
>>>>>>>>       with a branch that does not have those tools in its scope.
>>>>>>>>
>>>>>>>>       xcopy .pytool\Plugin\UncrustifyCheck C:\Temp\UncrustifyCheck
>>>>>>>>
>>>>>>>>       4) Use lint-history.py from git-filter-repo examples
>>>>>>>>
>>>>>>>>       https://github.com/newren/git-filter-repo  <https://github.com/newren/git-filter-repo>
>>>>>>>>
>>>>>>>>       https://github.com/newren/git-filter-repo/blob/main/contrib/filter-repo-demos/lint-history
>>>>>>> <https://github.com/newren/git-filter-repo/blob/main/contrib/filter-repo-demos/lint-history>
>>>>>>>>       Line #127 - Add try except around subprocess.check_call() with except
>>>>>>>>
>>>>>>>>       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 reformat
>>>>>>>>
>>>>>>>>       of C files that can not be parsed by uncrustify.These rare instances
>>>>>>>>
>>>>>>>>       are addressed in the commit that fixes the C syntax error.
>>>>>>>>
>>>>>>>>       Run this slightly modified version of lint-history.Include only
>>>>>>>>
>>>>>>>>       C/H files and exclude directories that start with 'Tools' or 'BaseTools'.
>>>>>>>>
>>>>>>>>       This step took about 2.2 hours on a laptop.
>>>>>>>>
>>>>>>>>       lint-history.py
>>>>>>>>
>>>>>>>>       --relevant "return (not filename.startswith(b'Tools') and not filename.startswith(b'BaseTools') and
>>>>>>> (filename.endswith(b'.c') or filename.endswith(b'.h')))"
>>>>>>>>       c:\\work\\GitHub\\tianocore\\foo\\UncrustifyCheck\\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
>>>>>>>>
>>>>>>>>       ==================================================
>>>>>>>>
>>>>>>>>       1) Update EmulatorPkg Win Host [BuildOptions] MSFT CC_FLAGS to not force debug information
>>>>>>>>
>>>>>>>>       *https://bugzilla.tianocore.org/show_bug.cgi?id=3747  <https://bugzilla.tianocore.org/show_bug.cgi?id=3747>
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/tree/Bug_3747_EmulatorPkg_WinHost_ReproducibleBuild
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3747_EmulatorPkg_WinHost_ReproducibleBuild>
>>>>>>>>       *https://github.com/tianocore/edk2/pull/2215  <https://github.com/tianocore/edk2/pull/2215>
>>>>>>>>
>>>>>>>>       * Required for EmulatorPkg to pass CompareBuild for VS2019 IA32/X64 builds.
>>>>>>>>
>>>>>>>>       * Status: Review complete.PR pushed.
>>>>>>>>
>>>>>>>>       2) EccCheck should not revert staged and local changes
>>>>>>>>
>>>>>>>>       *https://bugzilla.tianocore.org/show_bug.cgi?id=2986  <https://bugzilla.tianocore.org/show_bug.cgi?id=2986>
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/tree/Bug_2986_EccCheckRemoveGitRevert_V2
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_2986_EccCheckRemoveGitRevert_V2>
>>>>>>>>       *https://github.com/tianocore/edk2/pull/2216  <https://github.com/tianocore/edk2/pull/2216>
>>>>>>>>
>>>>>>>>       * Required for EDK II CI to complete in a reasonable period of time when
>>>>>>>>
>>>>>>>>       processing the 4000+ source file style changes made by uncrustify.
>>>>>>>>
>>>>>>>>       * Also fixes critical bugs that can potentially corrupt git state when
>>>>>>>>
>>>>>>>>       EccCheck is run locally.
>>>>>>>>
>>>>>>>>       * Status: Review complete.PR pushed.
>>>>>>>>
>>>>>>>>       3) Update pytool LicenseCheck plugin to use temp directory for diff output file
>>>>>>>>
>>>>>>>>       *https://bugzilla.tianocore.org/show_bug.cgi?id=3746  <https://bugzilla.tianocore.org/show_bug.cgi?id=3746>
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/tree/Bug_3746_LicenseCheckUseDiffOutputFile_V2
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3746_LicenseCheckUseDiffOutputFile_V2>
>>>>>>>>       *https://github.com/tianocore/edk2/pull/2217  <https://github.com/tianocore/edk2/pull/2217>
>>>>>>>>
>>>>>>>>       * Required to reduce EDK II CI build times.
>>>>>>>>
>>>>>>>>       * Status: Review complete.PR pushed.
>>>>>>>>
>>>>>>>>       4) Update max job time from 60 min to 120 minutes in .azurepipelines/templates
>>>>>>>>
>>>>>>>>       *https://bugzilla.tianocore.org/show_bug.cgi?id=3750  <https://bugzilla.tianocore.org/show_bug.cgi?id=3750>
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/tree/Bug_3750_IncreaseAzurePipelinesTimeout
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3750_IncreaseAzurePipelinesTimeout>
>>>>>>>>       *https://github.com/tianocore/edk2/pull/2219  <https://github.com/tianocore/edk2/pull/2219>
>>>>>>>>
>>>>>>>>       * Required to allow EccCheck of uncrustify changes to complete on Azure
>>>>>>>>
>>>>>>>>       Pipelines CI agents without timing out.
>>>>>>>>
>>>>>>>>       * Status: Review complete.PR pushed.
>>>>>>>>
>>>>>>>>       5) Update Package YAML to ignore specific ECC files/errors
>>>>>>>>
>>>>>>>>       *https://bugzilla.tianocore.org/show_bug.cgi?id=3749  <https://bugzilla.tianocore.org/show_bug.cgi?id=3749>
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/tree/Bug_3749_EccCheckIgnoreFilesErrors
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3749_EccCheckIgnoreFilesErrors>
>>>>>>>>       *https://github.com/tianocore/edk2/pull/2218  <https://github.com/tianocore/edk2/pull/2218>
>>>>>>>>
>>>>>>>>       * Required to pass EccCheck
>>>>>>>>
>>>>>>>>       * Status: Review complete. PR pushed
>>>>>>>>
>>>>>>>>       6) Uncrustify Source Changes
>>>>>>>>
>>>>>>>>       *https://bugzilla.tianocore.org/show_bug.cgi?id=3737  <https://bugzilla.tianocore.org/show_bug.cgi?id=3737>
>>>>>>>>
>>>>>>>>       *https://bugzilla.tianocore.org/show_bug.cgi?id=3739  <https://bugzilla.tianocore.org/show_bug.cgi?id=3739>
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5>
>>>>>>>>       *https://github.com/tianocore/edk2/pull/2229  <https://github.com/tianocore/edk2/pull/2229>
>>>>>>>>
>>>>>>>>       * Build comparison result PASS:https://github.com/mdkinney/edk2/actions/runs/1521618836
>>>>>>> <https://github.com/mdkinney/edk2/actions/runs/1521618836>
>>>>>>>>       * EFI_D_ -> DEBUG changes required to pass PatchCheck
>>>>>>>>
>>>>>>>>       * Uncrustify format changes required to pass UncrustifyCheck
>>>>>>>>
>>>>>>>>       * Status:
>>>>>>>>
>>>>>>>>       Waiting for review
>>>>>>>>
>>>>>>>>       7) UncrustifyCheck EDK II CI Plugin
>>>>>>>>
>>>>>>>>       *https://bugzilla.tianocore.org/show_bug.cgi?id=3748  <https://bugzilla.tianocore.org/show_bug.cgi?id=3748>
>>>>>>>>
>>>>>>>>       *https://github.com/mdkinney/edk2/tree/Bug_3748_add_uncrustify_ci_plugin_v6
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3748_add_uncrustify_ci_plugin_v6>
>>>>>>>>       * Required to enforce all PRs submitted to EDK II CI match uncrustify format.
>>>>>>>>
>>>>>>>>       * Unconditionally checks all packages.Can not be committed until all C/H
>>>>>>>>
>>>>>>>>       source files have been updated.
>>>>>>>>
>>>>>>>>       * Status: Review complete
>>>>>>>>
>>>>>>>>       Combined Branch/PR for Review/Test
>>>>>>>>
>>>>>>>>       ==================================
>>>>>>>>
>>>>>>>>       * 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://github.com/mdkinney/edk2/tree/TestOnly_Uncrustify_PR_Series
>>>>>>> <https://github.com/mdkinney/edk2/tree/TestOnly_Uncrustify_PR_Series>
>>>>>>>>       * PR:https://github.com/tianocore/edk2/pull/2229  <https://github.com/tianocore/edk2/pull/2229>
>>>>>>>>
>>>>>>>>       Status = PASS
>>>>>>>>
>>>>>>>>       * CompareBuild:
>>>>>>>>
>>>>>>>>       Branch:https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5
>>>>>>> <https://github.com/mdkinney/edk2/tree/Bug_3737_3739_ApplyUncrustifyChanges_V5>
>>>>>>>>       --ref1:ef9a059cdb15844fe52a49af2bf7d86b9dd3e9bf
>>>>>>>>
>>>>>>>>       --ref2:Bug_3737_3739_ApplyUncrustifyChanges_V5
>>>>>>>>
>>>>>>>>       Extra Options: -n 4 --quiet
>>>>>>>>
>>>>>>>>       Results:https://github.com/mdkinney/edk2/actions/runs/1521618836
>>>>>>> <https://github.com/mdkinney/edk2/actions/runs/1521618836>
>>>>>>>>       30 VS2019 build comparisons PASS
>>>>>>>>
>>>>>>>>       40 GCC5 build comparisons PASS
>>>>>>>>
>>>>>>>>       100% PASS
>>>>>>>>
>>>>>>>>       The following git log shows the set of patches from --ref1 to --ref 2across
>>>>>>>>
>>>>>>>>       which there are no differences in any of the OBJ/LIB/DLL/EFI/FFS/FV/FD files.
>>>>>>>>
>>>>>>>>       --ref2
>>>>>>>>
>>>>>>>>       b7d4bf0675b7 (HEAD -> Bug_3737_3739_ApplyUncrustifyChanges_V5) UnitTestFrameworkPkg: 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/errors
>>>>>>>>
>>>>>>>>       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/errors
>>>>>>>>
>>>>>>>>       df790cd6b37e MdePkg: Update YAML to ignore specific ECC files/errors
>>>>>>>>
>>>>>>>>       9deb9370766e MdeModulePkg: Update YAML to ignore specific ECC files/errors
>>>>>>>>
>>>>>>>>       d7d30e8f219f EmulatorPkg: Update YAML to ignore specific ECC files/errors
>>>>>>>>
>>>>>>>>       d5744ecba813 CryptoPkg: Update YAML to ignore specific ECC files/errors
>>>>>>>>
>>>>>>>>       c97fee87f0f9 ArmVirtPkg: Update YAML to ignore specific ECC files/errors
>>>>>>>>
>>>>>>>>       1939fc9569f2 ArmPlatformPkg: Update YAML to ignore specific ECC files/errors
>>>>>>>>
>>>>>>>>       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 diff output
>>>>>>>>
>>>>>>>>       3019f1bbabf1 .pytool/Plugin/EccCheck: Add performance optimizations
>>>>>>>>
>>>>>>>>       854462bd3479 .pytool/Plugin/EccCheck: Remove temp directory on exception
>>>>>>>>
>>>>>>>>       69877614fdee .pytool/Plugin/EccCheck: Remove RevertCode()
>>>>>>>>
>>>>>>>>       --ref1
>>>>>>>>
>>>>>>>>       ef9a059cdb15 EmulatorPkg/Win/Host: Update CC_FLAGS
>>>>>>>>
>>>>>>>>       bb1bba3d7767 (tag: edk2-stable202111) NetworkPkg: Fix invalid pointer for DNS response token on error
>>>>>>>>
>>>>>>>>       Best regards,
>>>>>>>>
>>>>>>>>       Mike
>>>>>>>>
>>>>>>>>
>
> 
>
>



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#84423): https://edk2.groups.io/g/devel/message/84423
Mute This Topic: https://groups.io/mt/87414953/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list