This makes very good sense to me, thank you for taking your time to fix it. I am slightly unsure whether if checks with subsequent assertions are really needed in mandatory version, as asserting in the constructor will trigger missing protocol very early anyway, but I do not think it is important. Best wishes, Vitaly On Wed, Dec 18, 2019 at 05:10, Zhichao Gao wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2298 > > The UefiDevicePathLibOptionalDevicePathProtocolConstructor's implementation > isn't match with its instance name. > Remove the ASSERT and depex of the gEfiDevicePathUtilitiesProtocolGuid > because of "Optional". > > Add a mandatory instance to force using the DevicePathUtilities, > DevicePathToText and DevicePathFromText protocol with the ASSERT > and depex. > > V2: > The optional lib instance's construction should return success all the > time. > Change the desciption of the optional lib uni file. > Change the copyright date of the mandatory one's uni file. > > V3: > Remove the Status variable in UefiDevicePathLibOptionalDevicePathProtocolConstructor. > The Status would cause GCC build fail because the variable is initialized but not used. > Since it is useless for the constructor, directly remove it. > > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Vitaly Cheptsov > Signed-off-by: Zhichao Gao > > Zhichao Gao (2): > MdePkg/UefiDevicePathLib: Separate the device path lib > MdePkg/dsc: Add UefiDevicePathLibMandatoryDevicePathProtocol for build > > ...DevicePathLibMandatoryDevicePathProtocol.c | 469 ++++++++++++++++++ > ...vicePathLibMandatoryDevicePathProtocol.inf | 86 ++++ > ...vicePathLibMandatoryDevicePathProtocol.uni | 18 + > ...iDevicePathLibOptionalDevicePathProtocol.c | 21 +- > ...evicePathLibOptionalDevicePathProtocol.inf | 5 +- > ...evicePathLibOptionalDevicePathProtocol.uni | 6 +- > MdePkg/MdePkg.dsc | 3 +- > 7 files changed, 587 insertions(+), 21 deletions(-) > create mode 100644 MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibMandatoryDevicePathProtocol.c > create mode 100644 MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibMandatoryDevicePathProtocol.inf > create mode 100644 MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibMandatoryDevicePathProtocol.uni > > -- > 2.21.0.windows.1