Uh oh!
There was an error while loading. Please reload this page.
Add OpenBSD support for ICU library loading - #129124
Conversation
OpenBSD uses ABI versioning in SONAME rather than ICU version numbering. Use unversioned dlopen calls and probe symbol versioning instead of attempting to load versioned library names.
Tagging subscribers to this area: @dotnet/area-system-globalization |
am11
commented
Jun 8, 2026
Hello world was working with the override: am11@foo:~$ DOTNET_ICU_VERSION_OVERRIDE=22 th/artifacts/bin/testhost/net11.0-openbsd-Debug-x64/dotnet exec~/projects/hw1/hw1/bin/Debug/net11.0/hw1.dll
Hello, World!
Environment.Version: 11.0.0
RuntimeInformation.OSDescription: OpenBSD 7.8 GENERIC.MP#54This makes it work without. |
tarekgh
commented
Jun 8, 2026
Two important caveats this PR introduces
|
am11
commented
Jun 8, 2026
@tarekgh, I think it’s fine to make it work with OpenBSD packaging convention in a standard install just like we have for Android (at least for the bringup). Unlike some other desktop OS, OpenBSD seem to have one package version at a time policy, If someone wants to use .NET with a custom build of ICU, they can use LD_LIBRARY_PATH or symlink type of mechanism to prioritize their copy. So far there is no use case for overriding and I intentionally left it out because it looks weird to use DOTNET_ICU_VERSION_OVERRIDE=22 because this env var refers to API/packaging version on Linux, FreeBSD and Solaris and we are supporting v60 onwards; while OpenBSD is using ABI versions in SONAME part. |
tarekgh
commented
Jun 8, 2026
I am not objecting, I am just pointing out OpenBSD will be kind of special case. At least we should document the new behavior in https://learn.microsoft.com/en-us/dotnet/core/extensions/globalization-icu for completeness. |
OpenBSD uses ABI versioning in SONAME rather than ICU version numbering. Use unversioned dlopen calls and probe symbol versioning instead of attempting to load versioned library names.
Contributes to #124911.