Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Publish x86_arm/crossgen during Linux/arm build #16953

Merged
merged 2 commits into from
Mar 19, 2018
Merged

Publish x86_arm/crossgen during Linux/arm build #16953

merged 2 commits into from
Mar 19, 2018

Conversation

echesakov
Copy link

This PR adds compiling and publishing of x86_arm/crossgen (so called, cross-crossgen) to Linux/arm official build

Merge ONLY AFTER dotnet/dotnet-buildtools-prereqs-docker#22 is resolved and official build images are updated

@echesakov echesakov added area-Build * NO MERGE * The PR is not ready for merge yet (see discussion for detailed reasons) labels Mar 15, 2018
"CrossArchitecture": "x86",
"CrossArchBuildArgs": "crosscomponent",
"CrossArchBuildPackagesArgs": "-__DoCrossArchBuild=1",
"CAC_ROOTFS_DIR": "/home/dotnet-bot/rootfs/$(CrossArchitecture)"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this path correct?

@sdmaclea
Copy link

Can someone explain this to me? Why do we want to cross-crossgen?

@sdmaclea
Copy link

Why do we need a single docker image with both x86 and arm rootfs?

@sdmaclea
Copy link

Likewise, why don't we need arm64 in the same image?

@echesakov
Copy link
Author

@sdmaclea I can answer your first two questions:
We want to build crosscomponents (which include x86_arm crossgen or cross-crossgen and x86_arm clrjit) in the same docker image during build.sh. The idea of cross-crossgen is to publish from developer machine for Linux/arm. x86 rootfs is needed to build x86_arm crossgen inside x64 docker container.

I also work on getting x64_arm crossgen #16513 and when this work is done there will be no need in x86 rootfs.

For x64_arm64 crossgen we don't need second rootfs. @jashook might know why we have two separate arm and arm64 docker images.

@echesakov
Copy link
Author

We publish this cross-component as NuGet package, so it can be consumed by other DotNet components to produce Ready2Run images. For example, coreclr build will do this for System.Private.CoreLib.dll.

@sdmaclea
Copy link

So instead of using an x86 ubuntu container with an arm rootfs running on x64 host.
You are running an x64 ubuntu container with two rootfs.

Thanks. Arm64 doesn't have these complications.

@jashook
Copy link

jashook commented Mar 16, 2018

Correct arm64 does not need these complications because we can cross target from x64.

@jashook
Copy link

jashook commented Mar 17, 2018

This is now unblocked. Docker image to use is: microsoft/dotnet-buildtools-prereqs:ubuntu-16.04-cross-e435274-20180317125354

@echesakov echesakov removed the * NO MERGE * The PR is not ready for merge yet (see discussion for detailed reasons) label Mar 19, 2018
@echesakov
Copy link
Author

@jashook Updated the docker image tag. PTAL

@jashook
Copy link

jashook commented Mar 19, 2018

Stil lgtm, @mmitche for another reviewer.

@echesakov echesakov merged commit 7aa3467 into dotnet:master Mar 19, 2018
@echesakov echesakov deleted the PublishCrossGenLinuxArm branch March 21, 2018 20:50
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants