Skip to content

.NET 11 images are missing tzdata-legacy (/usr/share/zoneinfo/Europe/Kiev not found) #7087

@mus65

Description

@mus65

Describe the bug

With the .NET 11 SDK images, we hit #6072 in one of our test cases. Running TimeZoneInfo.FindSystemTimeZoneById("FLE Standard Time"); will result in an exception because /usr/share/zoneinfo/Europe/Kiev can not be found.

This was originally fixed with #6078 but apparently tzdata-legacy was dropped again with 11.0 (the chisel images still contain it though). I'm not sure this was deliberate?

I realize that this is actually an issue in ICU because their windows mapping still returns the legacy Europe/Kiev. I wanted to create an ticket for ICU, but they make that way harder than it should be (even with a Jira account, I don't have permissions to create a ticket...).

Which .NET image(s) are you using?

mcr.microsoft.com/dotnet/sdk:11.0.100-preview.2

Steps to reproduce

echo 'TimeZoneInfo.FindSystemTimeZoneById("FLE Standard Time");' | docker run --rm -i mcr.microsoft.com/dotnet/sdk:11.0.100-preview.2 dotnet run -

results in:

Unhandled exception. System.TimeZoneNotFoundException: The time zone ID 'FLE Standard Time' was not found on the local computer.
 ---> System.IO.FileNotFoundException: Could not find file '/usr/share/zoneinfo/Europe/Kiev'.
File name: '/usr/share/zoneinfo/Europe/Kiev'
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, UnixFileMode openPermissions, Int64& fileLength, UnixFileMode& filePermissions, Boolean failForSymlink, Boolean& wasSymlink, Func`4 createOpenException)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.TimeZoneInfo.ReadAllBytesFromSeekableNonZeroSizeFile(String path, Int32 maxFileSize)
   at System.TimeZoneInfo.TryGetTimeZoneFromLocalMachineCore(String id, TimeZoneInfo& value, Exception& e)
   --- End of inner exception stack trace ---
   at System.TimeZoneInfo.FindSystemTimeZoneById(String id)
   at Program.<Main>$(String[] args) in /root/.local/share/dotnet/runfile/o2tjw22o.z2w/app.cs:line 1

Other information

No response

Output of docker version

Output of docker info

Metadata

Metadata

Assignees

Labels

area-dockerfilesConcerns the official .NET Dockerfiles or Dockerfile templates

Type

Projects

Status

Rollout

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions