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

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

Update to .NET 10 build images #110198

wants to merge 5 commits into from

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!

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.

4 participants