patina-v8.0.0
What's Changed
-
Make copyrights consistent @makubacki (#727)
Change Details
## Description
Files had been added to the repo with a mix of Microsoft copyright format. The correct format is:
"Copyright (c) Microsoft Corporation."
Unrelated to the change, but the SPDX identifier is used so tools like GitHub license detection can parse the license.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
cargo make all
Integration Instructions
N/A
-
chore: Release @Javagedes (#726)
Change Details
## Description
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
N/A
Integration Instructions
N/A
</blockquote> <hr> </details>
⚠️ Breaking Changes
-
[REBASE\&FF] Always produce UefiDecompress protocol / section extractor @Javagedes (#702)
Change Details
## Description
This PR converts the
SectionExtractortrait to be consumed as a service rather than as a special method in the Core. This makes the section extractor optional, so a core section extractor implementation is now provided which always provide Tiano / UEFI decompression functionality. Registering aSectionExtractorimplementation will add additional capabilities to the core section extractor.In addition to this, the EfiDecompress protocol is now always produced by the core, in compliance with the SCTs
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Continued boot with Q35
Integration Instructions
-
patina_section_extractor::NullSectionExtractorhas been removed, as it is the same as not registering the service. -
platforms must now register their section extractor with
.with_service(<extractor>)or.with_component(<comp_to_produce_service>)instead of relying on the default implementation when initializing the core. If a platform is using.with_section_extractor(...), it must be removed. If they are using.with_section_extractor(...)with a section extractor frompatina_section_extractor, then they can simply move it after theinit_memorymethod and update it to.with_service(...)
// Old Core::default() .with_section_extractor(patina_section_extactor::CompositeSectionExtractor::default()) .init_memory(physical_hob_list) .start()
// New Core::default() .init_memory(physical_hob_list) .with_service(patina_section_extractor::CompositeSectionExtractor::default()) .start()
</blockquote> <hr> </details>
🚀 Features & ✨ Enhancements
-
[REBASE\&FF] Allow services to be registered with the core @Javagedes (#703)
Change Details
## Description
This pull request allows services that have no dependencies to be directly registered with the core during Core setup, which prevents the need for a wrapper component to simply instantiate and register a component. This makes the service immediately available and reduces the number of components that must be executed. This supports the ability for the core to directly take soft dependencies on services.
Additionally, This PR adds documentation to clarify that if a service can be directly registered with the core, the service implementation should go in the crates
servicemodule.Additionally, this adds more documentation on Components and services to clarify to what a component is, what makes up a component, and how a component differs from configuration and services.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
N/A
Integration Instructions
N/A
</blockquote> <hr> </details>
📖 Documentation Updates
-
[REBASE\&FF] Always produce UefiDecompress protocol / section extractor @Javagedes (#702)
Change Details
## Description
This PR converts the
SectionExtractortrait to be consumed as a service rather than as a special method in the Core. This makes the section extractor optional, so a core section extractor implementation is now provided which always provide Tiano / UEFI decompression functionality. Registering aSectionExtractorimplementation will add additional capabilities to the core section extractor.In addition to this, the EfiDecompress protocol is now always produced by the core, in compliance with the SCTs
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Continued boot with Q35
Integration Instructions
-
patina_section_extractor::NullSectionExtractorhas been removed, as it is the same as not registering the service. -
platforms must now register their section extractor with
.with_service(<extractor>)or.with_component(<comp_to_produce_service>)instead of relying on the default implementation when initializing the core. If a platform is using.with_section_extractor(...), it must be removed. If they are using.with_section_extractor(...)with a section extractor frompatina_section_extractor, then they can simply move it after theinit_memorymethod and update it to.with_service(...)
// Old Core::default() .with_section_extractor(patina_section_extactor::CompositeSectionExtractor::default()) .init_memory(physical_hob_list) .start()
// New Core::default() .init_memory(physical_hob_list) .with_service(patina_section_extractor::CompositeSectionExtractor::default()) .start()
</blockquote> <hr> </details>
-
[REBASE\&FF] Allow services to be registered with the core @Javagedes (#703)
Change Details
## Description
This pull request allows services that have no dependencies to be directly registered with the core during Core setup, which prevents the need for a wrapper component to simply instantiate and register a component. This makes the service immediately available and reduces the number of components that must be executed. This supports the ability for the core to directly take soft dependencies on services.
Additionally, This PR adds documentation to clarify that if a service can be directly registered with the core, the service implementation should go in the crates
servicemodule.Additionally, this adds more documentation on Components and services to clarify to what a component is, what makes up a component, and how a component differs from configuration and services.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
N/A
Integration Instructions
N/A
</blockquote> <hr> </details>
-
Switch to Apache 2.0 License [Rebase \& FF] @makubacki (#725)
Change Details
## Description
Closes #336
Per https://github.com/OpenDevicePartnership/governance/blob/main/rfc/0013-patina-apache-20-license.md, switch the Patina repo to the Apache 2.0 License.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
Note: PRs will be made for other Patina repos as well.
How This Was Tested
cargo make all
Integration Instructions
- Review licensing changes and the accompanying RFC.
Full Changelog: patina-v7.0.1...v8.0.0