Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable building Linux x64 Nuget runtime package #27

Merged
merged 1 commit into from
Aug 10, 2020

Conversation

jefgen
Copy link
Member

@jefgen jefgen commented Aug 7, 2020

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 the glibc standard library. (Note: This means that they won't work on distros like Alpine, which use musl as the standard library. Adding support for musl 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

  • I have verified that my change is specific to this fork and cannot be made upstream.
  • I am making a maintenance related change.
  • I am making a change that is related to usage internal to Microsoft.
  • I am making a change that is related to the Windows OS build of ICU.
  • CLA signed. If not, please see here to sign the CLA.

…erwards.

This uses the CentOS container to build from dotnet.
@jefgen jefgen requested review from axelandrejs, daniel-ju and a team August 7, 2020 02:25
@jefgen jefgen merged commit 9de03e7 into master Aug 10, 2020
@jefgen jefgen deleted the user/jefgen/linux-runtime-package branch August 10, 2020 08:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants