v4.7.1
What's Changed
-
Add platform host-based unit tests and code coverage @Javagedes (#729)
Change Details
## Description
Adds a
PlatformTest.py
per platform package which:- self verifies the platform host-based unit test dsc is up to date (no new hosted-based test INFs have been added locally or from a submodule that test source used by the platform).
- Compiles the host-based unit tests.
- Executes the host-based unit tests.
- Optionally generates code coverage data.
Adds additional pipeline jobs to run the host-based tests and generate code coverage information.
- 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
CI
-
Cargo.toml: Optimize dev profile binary size @makubacki (#767)
Change Details
## Description
By default, the dev profile is used. The default build settings for the dev profile are documented here:
https://doc.rust-lang.org/cargo/reference/profiles.html#devUnmodified dev profile settings result in extraordinarily large binaries relative to UEFI FW. This especially impacts
DEBUG
builds which already have less optimized C code resulting in overall greater space occupation.Without a change, the binaries are simply too large and will continue to push the limits of firmware volumes (on a real system constrained by flash size) over time.
Therefore, the below setting enables optimization level
3
(all optimizations) that is used by the release profile by default. This greatly reduces the overall binary size.[profile.dev.package."*"]
is specified to apply the opt-level for all dependencies (but not a workspace member). This emphasizes debuggability of workspace code but optimizes dependencies. An individual dependency can be overridden by specifying the named package instead of"*"
. For example:[profile.dev.package.foo] opt-level = 0
That will likely allow the overall build to still fit in the FV, since other code is still optimized, but remove optimizations from an individual package that needs to be debugged.
- 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 build size of several config combinations (including the chosen one).
-
[profile.dev] opt-level = 'z'
- DXE FV: 11643648 (0xb1ab00) used (size opt of all packages)
-
[profile.dev.package."*"] opt-level = 'z'
- DXE FV: 12365056 (0xbcad00) used (size opt of dependencies)
-
[profile.dev.package."*"] opt-level = 3
- DXE FV: 12431104 (0xbdaf00) used (level 3 opt of dependencies)
-
Integration Instructions
N/A - Affects packages built in this workspace
- Impacts functionality?
🐛 Bug Fixes
-
VirtualDriveManager: Fix incremental usage on Linux @makubacki (#780)
Change Details
## Description
Currently,
FlashRomImage()
inPlatformBuild.py
checks if the
virtual drive file (VirtualDrive.img
) exists. If so,make_drive()
is not called which is the only function that currently sets the
MTOOLSRC
environment variable to themtool.conf
file path which
is consumed bymtools
.Typical
mtool.conf
file contents as used inVirtualDriveManager
:drive+ a: file="/w/m/Build/QemuSbsaPkg/DEBUG_GCC5/VirtualDrive.img" exclusive
This means if
VirtualDrive.img
already exists (i.e. on an
incremental Linux build with theVIRTUAL_DRIVE
parameter present),
theMTOOLSRC
variable is not available tomtools
resulting in the
following error:INFO - Can't open /dev/fd0: No such file or directory INFO - Cannot initialize 'A:' INFO - Bad target a:
This change sets
MTOOLSRC
on incremental builds so the existing
virtual drive can be used.
A separate commit also removes trailing whitespace from
VirtualDriveManager.py
since there is a lot throughout the file.
- 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
- With
VIRTUAL_DRIVE
parameter given:- Linux build with VirtualDrive.img missing (clean build)
- Linux build with VirtualDrive.img present (incremental build)
- Previously failed
- Linux build with VirtualDrive.img present and mtool.conf missing
- Unexpected state but possible
Integration Instructions
N/A
- Impacts functionality?
🛠️ Submodule Updates
-
Bump Silicon/Arm/MU\_TIANO from 2023020000.1.2 to 2023020000.1.3 @ProjectMuBot (#781)
Change Details
Bumps Silicon/Arm/MU_TIANO from `2023020000.1.2` to `2023020000.1.3`
Introduces 5 new commits in Silicon/Arm/MU_TIANO.
Commits
- fb39b5 GitHub Action: Bump actions/github-script from 6 to 7 (#180)
- 4ece5b Repo File Sync: synced file(s) with microsoft/mu_devops (#177)
- fa3856 Integration steps for [email protected]: Add Code coverage (#181)
- f58b70 ArmPkg/Drivers/CpuDxe: Use lower and upper attributes
- e42172 ArmPkg/Drivers/CpuDxe: Avoid EntryType cast
Signed-off-by: Project Mu Bot [email protected]
-
Bump MU\_BASECORE from 2023020008.0.0 to 2023020008.0.1 @ProjectMuBot (#779)
Change Details
Bumps MU_BASECORE from `2023020008.0.0` to `2023020008.0.1`
Introduces 1 new commits in MU_BASECORE.
Signed-off-by: Project Mu Bot [email protected]
-
Bump MU\_BASECORE from 2023020007.4.0 to 2023020008.0.0 @ProjectMuBot (#773)
Change Details
Bumps MU_BASECORE from `2023020007.4.0` to `2023020008.0.0`
Introduces 4 new commits in MU_BASECORE.
Commits
Signed-off-by: Project Mu Bot [email protected]
-
Bump Common/MU from 2023020003.2.2 to 2023020003.3.0 @ProjectMuBot (#776)
Change Details
Bumps Common/MU from `2023020003.2.2` to `2023020003.3.0`
Introduces 3 new commits in Common/MU.
Commits
Signed-off-by: Project Mu Bot [email protected]
-
Bump Silicon/Arm/MU\_TIANO from 2023020000.1.0 to 2023020000.1.2 @ProjectMuBot (#777)
Change Details
Bumps Silicon/Arm/MU_TIANO from `2023020000.1.0` to `2023020000.1.2`
Introduces 10 new commits in Silicon/Arm/MU_TIANO.
Commits
- fba97b pip: update edk2-pytool-extensions requirement from ~=0.25.0 to ~=0.25.1 (#169)
- 8aa7ca pip: update edk2-pytool-library requirement from ~=0.19.1 to ~=0.19.3 (#170)
- 83e658 Repo File Sync: MuDevOpsWrapper.yml - Add code coverage calculation parameter (#171)
- d29a83 pip: update edk2-pytool-library requirement from ~=0.19.3 to ~=0.19.4 (#173)
- 467918 pip: update edk2-pytool-extensions requirement from ~=0.25.1 to ~=0.26.0 (#172)
- 7e6887 Repo File Sync: Update to Mu DevOps 7.2.0 (#174)
- ac02ce pip: update edk2-pytool-extensions requirement from ~=0.26.0 to ~=0.26.2 (#175)
- 3e5f1f ArmPkg: Fix pointer type errors
- f8bea4 ArmPkg/Drivers/CpuDxe: Check integer before conversion
- 58e743 ArmPkg/Drivers/CpuDxe: Cast table entry (#178)
Signed-off-by: Project Mu Bot [email protected]
-
Bump Common/MU from 2023020003.2.1 to 2023020003.2.2 @ProjectMuBot (#774)
Change Details
Bumps Common/MU from `2023020003.2.1` to `2023020003.2.2`
Introduces 2 new commits in Common/MU.
Commits
Signed-off-by: Project Mu Bot [email protected]
-
Bump Common/MU from 2023020003.2.0 to 2023020003.2.1 @ProjectMuBot (#771)
Change Details
Bumps Common/MU from `2023020003.2.0` to `2023020003.2.1`
Introduces 5 new commits in Common/MU.
Commits
- a3ca3f pip: bump edk2-pytool-library from 0.19.3 to 0.19.4 (#353)
- 93df01 pip: bump edk2-pytool-extensions from 0.25.1 to 0.26.0 (#354)
- 228a02 Add log retrieval info to main readme (#355)
- fdf223 Repo File Sync: Update to Mu DevOps 7.2.0 (#357)
- 9ce0c1 Fixed logic related to DxeCore only advanced logger (#359)
Signed-off-by: Project Mu Bot [email protected]
-
Bump MU\_BASECORE from 2023020007.3.0 to 2023020007.4.0 @ProjectMuBot (#768)
Change Details
Bumps MU_BASECORE from `2023020007.3.0` to `2023020007.4.0`
Introduces 2 new commits in MU_BASECORE.
Commits
Signed-off-by: Project Mu Bot [email protected]
-
Bump Common/MU from 2023020003.1.0 to 2023020003.2.0 @ProjectMuBot (#764)
-
Bump MU\_BASECORE from 2023020007.2.1 to 2023020007.3.0 @ProjectMuBot (#763)
Change Details
Bumps MU_BASECORE from `2023020007.2.1` to `2023020007.3.0`
Introduces 4 new commits in MU_BASECORE.
Commits
- 37f7e6 pip: update edk2-pytool-library requirement from ~=0.19.1 to ~=0.19.3 (#606)
- bf28b4 MdePkg/GoogleTest: Add GetTime() RT service mock interface (#607)
- 01abd5 BaseTools/Plugin/RustEnvironmentCheck: Add rust-src component check (#611)
- ae4776 Repo File Sync: MuDevOpsWrapper.yml - Add code coverage calculation parameter (#612)
Signed-off-by: Project Mu Bot [email protected]
Full Changelog: v4.7.0...v4.7.1