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

No fields configured for Bug.

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions