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

Update to .NET 10 build images #110198

Merged
merged 5 commits into from
Dec 20, 2024
Merged

Update to .NET 10 build images #110198

merged 5 commits into from
Dec 20, 2024

Conversation

sbomer
Copy link
Member

@sbomer sbomer commented Nov 26, 2024

This updates the libc requirement to:

  • glibc 2.27
  • musl libc 1.2.3

These images have LLVM 19.

Contributes to #109939

This updates the libc requirement to:
- glibc 2.27
- musl libc 1.2.3

These images have LLVM 19.
Copy link
Contributor

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

@sbomer sbomer requested review from a team and richlander November 26, 2024 18:45
@sbomer sbomer removed the NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) label Dec 2, 2024
@jkoritzinsky
Copy link
Member

Looks like there's some issues with the ARM32 images with zlib-ng, in particular around intrinsics.

Other than that, this looks good to me.

The NEON_AVAILABLE and NEON_HAS_LD4 checks in zlib-ng attempt to pass
-mfpu=neon via CMAKE_REQUIRED_FLAGS, but our toolchain.cmake sets
-mfpu=vfpv4 via add_compile_options, which overrides the former.

Work around this by disabling neon on arm32 linux, matching .NET 9.
@sbomer
Copy link
Member Author

sbomer commented Dec 10, 2024

The update to clang-19 includes support for neon intrinsics on arm32. However, the cmake check for NEON_HAS_LD4 in zlib-ng is failing. The check uses CMAKE_REQUIRED_FLAGS to pass -mfpu=neon, but this gets overridden settings in our toolchain.cmake (which passes -mfpu=vfpv3 via add_compile_options). This failed check results in a downstream compilation error (we attempt to compile https://github.com/zlib-ng/zlib-ng/blob/43d74a223b30902b44b01bf4c4888d8deb35e253/arch/arm/neon_intrins.h#L36-L38 in an environment that already provides the ld4 intrinsics).

We could fix this by changing our toolchain.cmake to pass -mfpu=vfpv3 via CMAKE_C_FLAGS and CMAKE_CXX_FLAGS instead of add_compile_options, which would let the CMAKE_REQUIRED_FLAGS setting take precedence. It might also be possible to fix the check in zlib-ng. zlib-ng/zlib-ng#1281 attempted to address a similar problem. Overall the pattern of setting compiler options in a toolchain doesn't work so well with compiler checks that try to set their own flags.

We decided to just disable neon for now, matching the .NET 9 configuration. Thanks for the help investigating this @jkoritzinsky!

docs/workflow/using-docker.md Outdated Show resolved Hide resolved
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
@am11
Copy link
Member

am11 commented Dec 11, 2024

alpine arm32 build fixes: main...am11:runtime:feature/native/build-fixes

@sbomer
Copy link
Member Author

sbomer commented Dec 11, 2024

Thanks @am11!

@akoeplinger
Copy link
Member

/ba-g test timeout is due to #110285 which is fixed in main and closed so Build Analysis didn't link it.

@ericstj
Copy link
Member

ericstj commented Dec 17, 2024

@akoeplinger signed off and flipped to green, @sbomer is this ready to merge?

@akoeplinger
Copy link
Member

According to Outlook he's OOF until 12/19

@sbomer sbomer merged commit d08dff5 into dotnet:main Dec 20, 2024
150 of 152 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants