-
Notifications
You must be signed in to change notification settings - Fork 103
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
Y2038 support: Target Ubuntu 22.04 in arm build image #1037
Conversation
Which is the first ubuntu release to include a glibc that supports 64-bit time_t.
Will you be able to merge this PR in time? |
Don't worry, I've got all the time in the world... Before:
After:
(Validated with a local arm32 build against this change. The openssl shim also is linked against 64-bit versions of the time symbols.) |
Well played, sir. Context: This change is for Y2038 -> dotnet/core#9285 |
That change was simpler than I was guessing, but makes sense in hindsight. |
RUN /scripts/eng/common/cross/build-rootfs.sh arm xenial --skipunmount | ||
# The arm rootfs targets Ubuntu 22.04, which is the first version with a | ||
# glibc that supports 64-bit time_t. See https://github.com/dotnet/core/discussions/9285. | ||
RUN /scripts/eng/common/cross/build-rootfs.sh arm jammy no-lldb --skipunmount |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IIRC, this supports 64-bit time_t, but there's #define
needed to actually use it. Do we need to set that somewhere? Or is it set by default?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, @am11 did this already in dotnet/runtime#100461.
Blocked on dotnet/arcade#14754 |
#1037 updated the glibc baseline for our arm32 images, but we were still running tests on Debian 11 which has an older version, causing the failures in dotnet/runtime#102030. This adds a new Debian 12 image.
This updates our linux arm32 build to build against a more recent glibc that supports _TIME_BITS (which we set to 64). Since openssl may be using either 32-bit or 64-bit time_t, this includes detection logic to determine which case we are in, and avoid passing time values that don't fit in 32 bits to openssl. The arm build image is updated to the latest version of the images added in dotnet/dotnet-buildtools-prereqs-docker#1037. The helix test images are updated to debian images added in dotnet/dotnet-buildtools-prereqs-docker#1041. Additional context: Additional context: Reintroduces the fix for Y2038 support on arm32 linux (#102059), which was reverted due to problems running against openssl built with _TIME_BITS=32. Fixes #101444 (both the originally reported issue, and the test failures mentioned in #101444 (comment)). Supports: #91826
This updates our linux arm32 build to build against a more recent glibc that supports _TIME_BITS (which we set to 64). Since openssl may be using either 32-bit or 64-bit time_t, this includes detection logic to determine which case we are in, and avoid passing time values that don't fit in 32 bits to openssl. The arm build image is updated to the latest version of the images added in dotnet/dotnet-buildtools-prereqs-docker#1037. The helix test images are updated to debian images added in dotnet/dotnet-buildtools-prereqs-docker#1041. Additional context: Additional context: Reintroduces the fix for Y2038 support on arm32 linux (dotnet#102059), which was reverted due to problems running against openssl built with _TIME_BITS=32. Fixes dotnet#101444 (both the originally reported issue, and the test failures mentioned in dotnet#101444 (comment)). Supports: dotnet#91826
This updates our linux arm32 build to build against a more recent glibc that supports _TIME_BITS (which we set to 64). Since openssl may be using either 32-bit or 64-bit time_t, this includes detection logic to determine which case we are in, and avoid passing time values that don't fit in 32 bits to openssl. The arm build image is updated to the latest version of the images added in dotnet/dotnet-buildtools-prereqs-docker#1037. The helix test images are updated to debian images added in dotnet/dotnet-buildtools-prereqs-docker#1041. Additional context: Additional context: Reintroduces the fix for Y2038 support on arm32 linux (dotnet#102059), which was reverted due to problems running against openssl built with _TIME_BITS=32. Fixes dotnet#101444 (both the originally reported issue, and the test failures mentioned in dotnet#101444 (comment)). Supports: dotnet#91826
Fixes #1034
Fixes dotnet/runtime#96460
I'm still hitting some issues trying to validate this locally, so marking it no-merge for now.