Skip to content

Conversation

@janvorli
Copy link
Member

The images are updated to the latest ones as a preparation for enabling
native PGO for Linux arm64 and potentially Linux arm.

We are moving to targeting glibc 2.27 (the one from Ubuntu 18.04).
Before, we were targeting obsolete Ubuntu 16.04.

The images are updated to the latest ones as a preparation for enabling
native PGO for Linux arm64 and potentially Linux arm.

We are moving to targeting glibc 2.27 (the one from Ubuntu 18.04).
Before, we were targeting obsolete Ubuntu 16.04.
@janvorli janvorli added this to the 7.0.0 milestone Apr 26, 2022
@janvorli janvorli requested a review from davidwrighton April 26, 2022 16:21
@ghost ghost assigned janvorli Apr 26, 2022
@ghost
Copy link

ghost commented Apr 26, 2022

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

Issue Details

The images are updated to the latest ones as a preparation for enabling
native PGO for Linux arm64 and potentially Linux arm.

We are moving to targeting glibc 2.27 (the one from Ubuntu 18.04).
Before, we were targeting obsolete Ubuntu 16.04.

Author: janvorli
Assignees: -
Labels:

area-Infrastructure

Milestone: 7.0.0

@hoyosjs
Copy link
Member

hoyosjs commented Apr 26, 2022

@janvorli we still support 16.04 on .NET 6 (ESM I believe), do you know if we dropped .NET 7 support?

@janvorli
Copy link
Member Author

@hoyosjs the reason for dropping it for .NET 7 is to enable PGO on arm/arm64, as it requires a native static library that's part of clang of the same version that we use for the cross build to exist in the rootfs for the target. There is no clang 9 package for Ubuntu 16.04. We could possibly build it ourselves from sources, but that would be the last resort in case we really need to keep supporting 16.04.
I've consulted this with @richlander before making this change.

@janvorli
Copy link
Member Author

Seems I need to update the Helix queues too so that we don't execute tests on 16.04 anymore.

@janvorli
Copy link
Member Author

Mono arm64 leg is failing because of the --prefix="/crossrootfs/arm64/usr/lib/gcc/aarch64-linux-gnu/5 passed to offsets-tool.py. The Ubuntu 18.04 has newer versions of that:

ls -la /crossrootfs/arm64/usr/lib/gcc/aarch64-linux-gnu
total 16
drwxr-xr-x 4 root root 4096 Mar 23 14:11 .
drwxr-xr-x 3 root root 4096 Apr 16  2018 ..
drwxr-xr-x 5 root root 4096 Mar 23 14:15 7
lrwxrwxrwx 1 root root    1 Dec  4  2019 7.5.0 -> 7
drwxr-xr-x 2 root root 4096 Apr 16  2018 8

@akoeplinger, @lambdageek I can see that the version is hardcoded in mono.proj:

<MonoAotOffsetsPrefix>$(MonoCrossDir)/usr/lib/gcc/aarch64-linux-gnu/5</MonoAotOffsetsPrefix>

I am not sure if I can just bump it or if that is more involved and thus it would require some discussion with the mono folks.

@directhex
Copy link
Contributor

Try the bump, see what happens.

It SHOULD work.

@janvorli
Copy link
Member Author

janvorli commented May 2, 2022

Ok, great, I'll give it a try.

Ununtu 18.04 has version 7 instead of 5
@janvorli janvorli requested a review from marek-safar as a code owner May 2, 2022 16:23
@BruceForstall
Copy link
Contributor

This may not be strictly related, but https://github.com/dotnet/runtime/blob/main/docs/workflow/building/coreclr/linux-instructions.md talks about using the -clang9 option when building. Is that required? Can we make the default (that is, not passing -clang9) do the right thing all the time (or most of the time)?

@janvorli
Copy link
Member Author

janvorli commented May 3, 2022

@BruceForstall the option is not needed and in fact, I never use it for my local builds. The build picks the latest clang and llvm tools that you have installed automatically. On my main devbox, it is using clang 13 now. I would recommend using clang 9 as the minimum version though, since it is the one we use for our official builds and so I have confidence that there are no problems. I remember there were some issues with certain older clang versions, but I don't remember which ones.
I guess the reason why that doc suggests using -clang9 is that they talk about building using our containers with all the build tools preinstalled and this is the version that we have there. But even with them, the option should not be needed.

@janvorli janvorli merged commit c73386b into dotnet:main May 3, 2022
@janvorli janvorli deleted the update-arm-cross-build-images branch May 3, 2022 11:42
@ghost ghost locked as resolved and limited conversation to collaborators Jun 2, 2022
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.

4 participants