Releases: microsoft/mu_basecore
v2023020006.2.0
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Unit tests ran.
Integration Instructions
N/A.
</blockquote> <hr> </details>
- Impacts functionality?
🚀 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.mdThe 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, ...
- Security - Does the change have a direct security impact on an application,
-
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, ...
- Breaking change - Will anyone consuming this change experience a break
-
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, ...
- Documentation - Does the change contain explicit documentation additions
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 fromMuCodeQlQueries.qls
.Most downstream repos also import a list of CodeQL filters
from theCodeQlFilters.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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Package compilation
- Run CodeQL query
cpp/cpp-missing-header-guard
rule against the package
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2023020006.1.1...v2023020006.2.0
v2023020006.1.1
What's Changed
-
MdeModulePkg/VariablePolicyLib: Use wildcard character constant @makubacki (#554)
Change Details
## Description
Makes the
#
character used for comparison against wildcard
characters inCHAR16
strings to be prefixed withL
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
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
- Impacts functionality?
📖 Documentation Updates
-
Drop Rust Docs for Move to Mu Documentation @makubacki (#548)
Change Details
## Description
-
Fixes pre-existing formatting issues in
RepoDetails.md
(made before the PR transition to dropping the docs, kept to keep things clean) -
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
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
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 amu_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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Verified local
mu_basecore
CodeQL build - Verified downstream (
mu_tiano_platforms
) CodeQL build that leverages
theCodeQlFilters.yml
file frommu_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.
- Impacts functionality?
🐛 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 amu_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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Verified local
mu_basecore
CodeQL build - Verified downstream (
mu_tiano_platforms
) CodeQL build that leverages
theCodeQlFilters.yml
file frommu_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.
- Impacts functionality?
Full Changelog: v2023020006.0.0...v2023020006.1.0
v2023020006.0.0
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
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,
ensureCpuLib
is used in place ofUefiCpuLib
in downstream packages since
functionality was converged there.
- Impacts functionality?
🐛 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
CI and various platforms that have the scenario this fixes.
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2023020005.0.1...v2023020006.0.0
v2023020005.0.1
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
acobertura.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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Ran builds with and without Rust unit test results
- Checked locally and in CI
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2023020005.0.0...v2023020005.0.1
v2023020005.0.0
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.
-
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, ...
- Security - Does the change have a direct security impact on an application,
-
Breaking change?
- Breaking change - Remove UefiCpuLib references and use CpuLib instead.
a function in a new library class in a pre-existing module, ...
- Breaking change - Remove UefiCpuLib references and use CpuLib instead.
-
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
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 aPath
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
afterignore_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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
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
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
CI
Integration Instructions
N/A
- Impacts functionality?
-
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Tested on intel physical platforms. No issues building and booting.
Integration Instructions
N/A
- Impacts functionality?
⚠️ 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
verified
stuart_ci_build
success for MU_BASECORE
verifiedstuart_build
success for mu_tiano_platformsIntegration Instructions
Ensure edk2-pytool-extensions is v0.24.0 or greater.
- Impacts functionality?
Full Changelog: v2023020003.0.1...v2023020004.0.0
v2023020003.0.1
What's Changed
-
Fix Python logging.warn() deprecation warnings @makubacki (#537)
Change Details
## Description
Updates
logging.warn()
tologging.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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Review Python code for
log.warn()
usage - Check logs that reported issue earlier after changee
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2023020003.0.0...v2023020003.0.1
v2023020003.0.0
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
CI
Integration Instructions
N/A
</blockquote> <hr> </details>
- Impacts functionality?
-
BaseTools: Rust support enhancements @Javagedes (#519)
Change Details
## Description
Updates the build tools for Rust support with the following enhancements:
- Add AARCH64 build support
- Add NOOPT build support
- Moves build artifacts from
$(WORKSPACE)/target to $(DEBUG_DIR)
where$(DEBUG_DIR)
is the debug dir for the particular rust module being built. - 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
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>
- Impacts functionality?
⚠️ 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:
-
Reorganized filters to reduce the amount of list comprehensions performed to filter out files that do not need to be checked
-
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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
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:
- Ensure edk2-pytool-library is >= v0.16.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 ...