Skip to content

Releases: microsoft/mu_basecore

v2023020006.2.0

14 Sep 17:42
205d4e9
Compare
Choose a tag to compare

What's Changed

  • Fix Redefined Callback @os-d (#566)
    Change Details
      ## Description

    RuntimeLibExitBootServicesEventCallback is defined and exported in two locations, RuntimeLib and PolicyLib. This causes a linker error if both libraries are linked to a module.

    This patch both changes the name of the callback in PolicyLib (as this was not an accurate name) and marks it STATIC, as this function should not be called at all except for the function pointer that is registered for the event firing.

    Closes #565.

    For each item, place an "x" in between [ and ] if true. Example: [x].
    (you can also check items in the GitHub UI)

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    Unit tests ran.

    Integration Instructions

    N/A.

      </blockquote>
      <hr>
    </details>
    

🚀 Features & ✨ Enhancements

  • Add New CodeQL Queries [Rebase \& FF] @makubacki (#557)
    Change Details
      ## Description

    Enables 17 new CodeQL queries by updating the queries opted into
    by Project Mu available in the standard CodeQL query package
    codeql/cpp-queries.

    I tested many queries and found the included set here to be the
    most useful with the least number of false positives. Some queries
    had a number of issues that led to them being placed on the exclusion
    list so they are not considered in the future without the notes there
    being taken into account.

    General details about queries available in the pack are available
    here:
    https://codeql.github.com/codeql-query-help/cpp/

    The changelog for the query pack is available here:
    https://github.com/github/codeql/blob/codeql-cli/latest/cpp/ql/src/CHANGELOG.md

    The following new queries are enabled organized alphabetically
    within sections grouped by type:

    Errors:

    • cpp/missing-return
    • cpp/no-space-for-terminator
    • cpp/pointer-overflow-check
    • cpp/redundant-null-check-simple
    • cpp/very-likely-overrunning-write

    Warnings:

    • cpp/comparison-precedence
    • cpp/implicit-bitfield-downcast
    • cpp/offset-use-before-range-check
    • cpp/overflow-calculated
    • cpp/overflow-destination
    • cpp/return-stack-allocated-memory
    • cpp/static-buffer-overflow
    • cpp/unsigned-comparison-zero

    Recommendations:

    • cpp/missing-header-guard
    • cpp/unused-local-variable
    • cpp/unused-static-function
    • cpp/unused-static-variable

    The following queries are newly explicitly excluded as noted in the
    file:

    • cpp/allocation-too-small

    • cpp/commented-out-code

    • cpp/duplicate-include-guard

    • cpp/invalid-pointer-deref

    • cpp/useless-expression

    • Impacts functionality?

      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?

      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?

      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?

      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?

      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • CI build
    • Run CodeQL locally

    Integration Instructions

    Most downstream repos directly use the CodeQL queries defined
    here in mu_basecore because the default queries used by the
    CodeQL plugin come from MuCodeQlQueries.qls.

    Most downstream repos also import a list of CodeQL filters
    from the CodeQlFilters.yml file in this repo.

    Given there's modifications to those files in this change, it
    is recommended to understand the changes and determine how they
    would impact platform execution of CodeQL.




🐛 Bug Fixes

  • PolicyServicePkg/PolicyLib.h: Add missing include guard @makubacki (#556)
    Change Details
      ## Description

    Every header file should have a header guard.

    See the following for more information:
    https://codeql.github.com/codeql-query-help/cpp/cpp-missing-header-guard/

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • Package compilation
    • Run CodeQL query cpp/cpp-missing-header-guard rule against the package

    Integration Instructions

    N/A




Full Changelog: v2023020006.1.1...v2023020006.2.0

v2023020006.1.1

07 Sep 14:00
c4bdfe4
Compare
Choose a tag to compare

What's Changed

  • MdeModulePkg/VariablePolicyLib: Use wildcard character constant @makubacki (#554)
    Change Details
      ## Description

    Makes the # character used for comparison against wildcard
    characters in CHAR16 strings to be prefixed with L so the
    character is treated as a wide character constant.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    Verified using C/C++ debugger that the character comparison is tested
    and the expected result is returned.

    Integration Instructions

    N/A




📖 Documentation Updates

  • Drop Rust Docs for Move to Mu Documentation @makubacki (#548)
    Change Details
      ## Description
    1. Fixes pre-existing formatting issues in RepoDetails.md
      (made before the PR transition to dropping the docs, kept to keep things clean)

    2. Move Rust documentation to Project Mu repo

      Updates the repo to transition the existing Rust documentation to
      the Project Mu documentation.

      rust_build.md is retained since it is referenced in a number of
      pre-existing places and can provide a pointer to the new location.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • CI documentation checks

    Integration Instructions

    • Consider reading if interested in Rust adoption within Project Mu


Full Changelog: v2023020006.1.0...v2023020006.1.1

v2023020006.1.0

06 Sep 17:18
8ea5185
Compare
Choose a tag to compare

What's Changed

🚀 Features & ✨ Enhancements

  • CodeQlFilters.yml: Glob file patterns in nested directories @makubacki (#552)
    Change Details
      ## Description

    This filter file is picked up both directly in mu_basecore but also
    downstream repos. Therefore, the file patterns should allow matches
    regardless of where a mu_basecore submodule or external dependency
    may reside in the overall repo structure.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • Verified local mu_basecore CodeQL build
    • Verified downstream (mu_tiano_platforms) CodeQL build that leverages
      the CodeQlFilters.yml file from mu_basecore.

    Integration Instructions

    No change in filtering behavior within mu_basecore. Downstream repos that use
    mu_basecore will see more results auto filtered matching the expectations of
    upstream repos.




🐛 Bug Fixes

  • CodeQlFilters.yml: Glob file patterns in nested directories @makubacki (#552)
    Change Details
      ## Description

    This filter file is picked up both directly in mu_basecore but also
    downstream repos. Therefore, the file patterns should allow matches
    regardless of where a mu_basecore submodule or external dependency
    may reside in the overall repo structure.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • Verified local mu_basecore CodeQL build
    • Verified downstream (mu_tiano_platforms) CodeQL build that leverages
      the CodeQlFilters.yml file from mu_basecore.

    Integration Instructions

    No change in filtering behavior within mu_basecore. Downstream repos that use
    mu_basecore will see more results auto filtered matching the expectations of
    upstream repos.




Full Changelog: v2023020006.0.0...v2023020006.1.0

v2023020006.0.0

05 Sep 14:01
5498883
Compare
Choose a tag to compare

What's Changed

⚠️ Breaking Changes

  • [CHERRY-PICK] UefiCpuPkg: Remove UefiCpuLib [Rebase \& FF] @makubacki (#546)
    Change Details
      ## Description

    Because UefiCpuPkg/UefiCpuLib is merged to MdePkg/CpuLib
    and all modules are updated to not depend on this library,
    remove it completely.

    Cc: Eric Dong [email protected]
    Cc: Ray Ni [email protected]
    Cc: Rahul Kumar [email protected]
    Signed-off-by: Yu Pu [email protected]
    Reviewed-by: Ray Ni [email protected]
    Signed-off-by: Zhiguang Liu [email protected]
    (cherry picked from commit b991aec)

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • mu_basecore CI

    Integration Instructions

    The following (cherry-picked) commits already removed functionality
    from UefiCpuPkg:

    This PR removes the library entirely (also cherry-picked directly). Therefore,
    ensure CpuLib is used in place of UefiCpuLib in downstream packages since
    functionality was converged there.




🐛 Bug Fixes

  • OverrideValidation: bugfix handling file missing from workspace @Javagedes (#549)
    Change Details
      ## Description

    OverrideValidation supports multiple overrides from multiple sources. In a repository where each platform initializes a subset of submodules rather than all submodules, some of the files for the override may not exist.

    When removing the deprecated mws.join() functionality, the ability to handle this scenario was lost.
    GetAbsolutePathOnThisSystemFromEdk2RelativePath only returns a path if the file or directory exists, otherwise it returns None. Therefore the changes made check for None rather than checking if the file / path exists.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    CI and various platforms that have the scenario this fixes.

    Integration Instructions

    N/A




Full Changelog: v2023020005.0.1...v2023020006.0.0

v2023020005.0.1

30 Aug 19:43
c8cdc60
Compare
Choose a tag to compare

What's Changed

🐛 Bug Fixes

  • .pytool/Plugin/RustHostUnitTestPlugin: Handle no coverage results @makubacki (#545)
    Change Details
      ## Description

    In the case that all possible crates are ignored, do not fail if
    a cobertura.xml file is not present.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • Ran builds with and without Rust unit test results
    • Checked locally and in CI

    Integration Instructions

    N/A




Full Changelog: v2023020005.0.0...v2023020005.0.1

v2023020005.0.0

30 Aug 19:32
Compare
Choose a tag to compare

What's Changed

⚠️ Breaking Changes

  • [CHERRY-PICK] Merge UefiCpuPkg/UefiCpuLib to MdePkg/CpuLib [Rebase \& FF] @srilathasridharan (#544)
    Change Details
      ## Description

    Cherry-pick UefiCpuPkg changes from edk2 tip.

    • tianocore/edk2@b294633

    • tianocore/edk2@c204081

    • Impacts functionality?

      • Functionality - UefiCpuLib removed and replaced with CpuLib
    • Impacts security?

      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?

      • Breaking change - Remove UefiCpuLib references and use CpuLib instead.
        a function in a new library class in a pre-existing module, ...
    • Includes tests?

      • Tests -None
    • Includes documentation?

      • Documentation - No

    How This Was Tested

    Tested on an Intel physical platform.

    Integration Instructions

    Remove references to UefiCpuLib and replace them with CpuLib




Full Changelog: v2023020004.0.1...v2023020005.0.0

v2023020004.0.1

29 Aug 14:16
6c351bc
Compare
Choose a tag to compare

What's Changed

🐛 Bug Fixes

  • .pytool/Plugin/RustHostUnitTestPlugin: Ensure strings in ignore list @makubacki (#541)
    Change Details
      ## Description

    An ignore list is created in the plugin and passed as an argument to
    join() in a couple places. For example:

    • RustHostUnitTestPlugin.py:

      logging.debug(f"Paths to ignore when computing coverage: {' '.join(ignore_list)}")

    • RustPackageHelper.py:

      params += f' -e COV_FLAGS="--out {report_type} --exclude-files {",".join(ignore_list)}"'

    join() expects an iterable of strings. However, Path objects can
    be added to the list. For example:

    [pkg.path for pkg in rust_ws.members]

    (where pkg.path is a Path object)

    This causes the following error:

       File ".pytool\Plugin\RustHostUnitTestPlugin\RustHostUnitTestPlugin.py", line 40, in RunBuildPlugin
        logging.debug(f"Paths to ignore when computing coverage: {' '.join(ignore_list)}")
                                                                  ^^^^^^^^^^^^^^^^^^^^^
     TypeError: sequence item 1: expected str instance, WindowsPath found
    

    This change converts all of the objects to their string representations
    after ignore_list is finalized to simplify prior logic and ensure the
    list consists of strings.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • Run RustHostUnitTestPlugin on a Cargo workspace
      with several members before and after the change.

    Integration Instructions

    N/A




Full Changelog: v2023020004.0.0...v2023020004.0.1

v2023020004.0.0

29 Aug 04:36
9a8606a
Compare
Choose a tag to compare

What's Changed

  • LineEndingCheck: bugfix: Fails if not run from workspace root @Javagedes (#540)
    Change Details
      ## Description

    LineEndingCheck would fail if stuart_ci_build was not run from the workspace root because of two separate locations that used "." for the workspace root rather than the true workspace root. This commit updates it to use the true workspace root rather than ".".

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    CI

    Integration Instructions

    N/A




  • DXE and SMM core performance lib codeql changes. @kenlautner (#534)
    Change Details
      ## Description

    Added a few more codeql fixes for the DXE and SMM core performance libs.

    For each item, place an "x" in between [ and ] if true. Example: [x].
    (you can also check items in the GitHub UI)

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    Tested on intel physical platforms. No issues building and booting.

    Integration Instructions

    N/A




⚠️ Breaking Changes

  • Resolve mws deprecations @Javagedes (#539)
    Change Details
      ## Description

    thebuilder.mws was deprecated in favor of thebuilder.edk2path. this commit removes any usage of thebuilder.mws and replaces it with thebuilder.edk2path. Now that edk2path is available, it also removes the manual instantiation of an Edk2Path object in favor of the existing edk2path that is now associated with thebuilder.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    verified stuart_ci_build success for MU_BASECORE
    verified stuart_build success for mu_tiano_platforms

    Integration Instructions

    Ensure edk2-pytool-extensions is v0.24.0 or greater.




Full Changelog: v2023020003.0.1...v2023020004.0.0

v2023020003.0.1

25 Aug 15:12
e8f85c6
Compare
Choose a tag to compare

What's Changed

  • Fix Python logging.warn() deprecation warnings @makubacki (#537)
    Change Details
      ## Description

    Updates logging.warn() to logging.warning() to prevent
    deprecation warnings like this:

    .pytool\Plugin\UncrustifyCheck\UncrustifyCheck.py:386:
    DeprecationWarning: The 'warn' function is deprecated, use
    'warning' instead

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    • Review Python code for log.warn() usage
    • Check logs that reported issue earlier after changee

    Integration Instructions

    N/A




Full Changelog: v2023020003.0.0...v2023020003.0.1

v2023020003.0.0

23 Aug 22:26
5239153
Compare
Choose a tag to compare

What's Changed

  • SpellCheck: force no color codes @Javagedes (#529)
    Change Details
      ## Description

    The SpellCheck plugin runs cspell, which uses ANSI color codes when displaying results. When ANSI color codes are used in a terminal that does not support ANSI, the color codes are displayed as text, which causes the rest of SpellCheck plugin to fail as the expected path is not a real path as it starts and ends with color codes:

    i.e. \�[90m.\Path\To\File.txt�[39m instead of .\Path\To\File.txt

    This change forces cspell to not colorize the output.

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    CI

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • BaseTools: Rust support enhancements @Javagedes (#519)
    Change Details
      ## Description

    Updates the build tools for Rust support with the following enhancements:

    1. Add AARCH64 build support
    2. Add NOOPT build support
    3. Moves build artifacts from $(WORKSPACE)/target to $(DEBUG_DIR) where $(DEBUG_DIR) is the debug dir for the particular rust module being built.
    4. Removes RUSTC definitions as all builds are done through cargo make.

    Additionally cleans up much of the defines in tools_def.template, which was overly complicated due to the path separator ("/", "") differences between linux and windows by moving those directly to the build_rule.template file.

    For each item, place an "x" in between [ and ] if true. Example: [x].
    (you can also check items in the GitHub UI)

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    Confirmed successful builds on Windows and Linux

    Integration Instructions

    N/A

      </blockquote>
      <hr>
    </details>
    
  • [CHERRY\_PICK] Gmocks in MdeModulePkg @VivianNK (#518)
    Change Details
      ## Description

    Gmocks added

    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    <Please describe the test(s) that were run to verify the changes.>

    Integration Instructions

    <Describe how these changes should be integrated. Use N/A if nothing is required.>

      </blockquote>
      <hr>
    </details>
    

⚠️ Breaking Changes

  • LineEndingsCheck: improve performance @Javagedes (#513)
    Change Details
      ## Description

    LineEndingsCheck generally takes anywhere from 4 to 6 seconds to run, depending on the size of the package. This change reduces the time to run by ~53% as tested on packages in MU_BASECORE due to the following changes:

    1. Reorganized filters to reduce the amount of list comprehensions performed to filter out files that do not need to be checked

    2. Organized the order of checks in regards to filters most likely to catch a file, and the expensiveness of the filter itself.

    Pkg Before (s) After (s) Improvement
    MdeModulePkg 5.50 3.00 45%
    MdePkg 5.72 2.88 50%
    NetworkPkg 4.30 2.09 51%
    PcAtChipsetPkg 3.98 1.79 55%
    PolicyServicePkg 4.12 1.87 55%
    ShellPkg 4.40 1.85 58%
    StandaloneMmPkg 4.17 1.72 59%
    UefiCpuPkg 4.13 2.12 49%
    UnitTestFrameworkPkg 3.94 1.79 55%
    • Impacts functionality?
      • Functionality - Does the change ultimately impact how firmware functions?
      • Examples: Add a new library, publish a new PPI, update an algorithm, ...
    • Impacts security?
      • Security - Does the change have a direct security impact on an application,
        flow, or firmware?
      • Examples: Crypto algorithm change, buffer overflow fix, parameter
        validation improvement, ...
    • Breaking change?
      • Breaking change - Will anyone consuming this change experience a break
        in build or boot behavior?
      • Examples: Add a new library class, move a module to a different repo, call
        a function in a new library class in a pre-existing module, ...
    • Includes tests?
      • Tests - Does the change include any explicit test code?
      • Examples: Unit tests, integration tests, robot tests, ...
    • Includes documentation?
      • Documentation - Does the change contain explicit documentation additions
        outside direct code modifications (and comments)?
      • Examples: Update readme file, add feature readme file, link to documentation
        on an a separate Web page, ...

    How This Was Tested

    Ensured the same number of files had the line endings check performed after filtering for all packages in MU_BASECORE

    Integration Instructions

    Previously, only files with extensions were checked for valid line endings. Now, all files are checked for valid line endings.

    If your package begins to fail because a file with no extension has invalid line endings and you do not want to update the line endings, you will need to do the following integration steps:

    1. Ensure edk2-pytool-library is >= v0.16.2
    2. Set IgnoreFilesWithNoExtension: True in the package config file:
    "LineEndingCheck": {
        "IgnoreFilesWithNoExtension": "True"
    }
      </blockquote>
      <hr>
    </details>
    

🐛 Bug Fixes

  • FlattenPdbs.py: Support python 3.9 @Javagedes (#527)
    Change Details
      ## Description

    Recent improvements to FlattenPdbs.py broke support for python 3.9 due to using pathlib's hardlink_to method, which was added in python 3.10.

    This commit replaces that function with link_to, which is the same functionality, but with the ...

Read more