Enable building Linux x64 Nuget runtime package #27
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This change enables building Linux x64 runtime packages for the MS-ICU Nuget package in the build pipeline.
The binaries produced link to
glibc
, so they should work on any Linux distribution that uses theglibc
standard library. (Note: This means that they won't work on distros like Alpine, which usemusl
as the standard library. Adding support formusl
is out-of-scope for this PR).In order to produce these binaries, we actually build inside a Docker container, and then extract the output from that, and then package it up in the Nuget package.
To do this we use the special CentOS7 Docker image to build, which is the same as the one used for dotnet. This image has a number of updates applied and tools preinstalled, and also uses a much newer version of the Clang compiler (Clang 9) by default
According to the dotnet team, these docker images are very stable and retained indefinitely, so we shouldn't need to rev the container image very often.
Note: There's no symbols for this package yet, as I'm not sure how to produce symbols for *nix packages.
Additionally, the Nuget.org site doesn't seem to support uploading anything other than PDB files -- which aren't a thing for .so binaries. I'm omitting them for now, and we can investigate adding symbols later.
cc: @safern, @tarekgh
(And thank you for all your help with this!)
PR Checklist