On Wed, Dec 7, 2022 at 3:38 AM Almaz Mingaleev via tz <tz@iana.org> wrote:
Does that mean that libc APIs will behave differently from whatever is using ICU files?
yes, this is already true, and...
On Android we are waiting for ICU/CLDR patches because we offer libc, ICU, and several Java APIs.
...exactly the reason Android does this :-) (we learned this the hard way a decade ago when we updated tzdata but not icu, and the results of date formatting suddenly depended on which API you used :-( in a sense it doesn't matter --- 99.999% of dates/times a *user* sees on Android have come from icu rather than libc, but that also means that updating tzdata without icu is not as useful as you might otherwise imagine.)
I believe Apple also waits for ICU/CLDR patches, though I do not know their reasons.
i'm not aware of *any* libc that uses icu (or cldr data directly) for this[1], so everyone's in the same boat. ____ 1. "this" being specifically just the time/date stuff. note that bionic does, for example, defer to icu for all the iswprint() and wcwidth() type stuff. i wanted to do the same for iconv() but never worked out how to bridge the API gap between that and icu. i've never tried with the date/time stuff, and i'm not aware that anyone else has, so if anyone has implementation experience there, i'd love to hear it!
On Fri, 2 Dec 2022 at 17:25, Benjamin Drung via tz <tz@iana.org> wrote:
Hi everyone,
I am writing this mail with my distribution maintainer hat on since I am responsible for keeping the tzdata package up-to-date in Ubuntu. I like to propose to have a single source of truth for timezone data, which should be the tzdata source package. Updating this package in a distribution like Debian/Ubuntu should be enough to update all consumers in the distribution.
Sadly this is currently not the case. Ubuntu since 20.04 (focal) adds the four icu source files metaZones.txt, timezoneTypes.txt, windowsZones.txt, and zoneinfo64.txt from https://github.com/unicode-org/icu-data to the tzdata source package. Then it uses genrb and icupkg to generate the .res files. Since the icu project lacks behind the tzdata release by hours up to days, Ubuntu has to update tzdata twice (first the tzdata release, then the icu update).
metaZones.txt, timezoneTypes.txt, and windowsZones.txt are generated using tools/cldr/cldr-to-icu/build-icu-data.xml from https://github.com/unicode-org/icu. zoneinfo64.txt is generated by tz2icu. build-icu-data.xml uses https://github.com/unicode-org/cldr as input to convert the cldr data to icu. If I saw that correctly, only common/supplemental/metaZones.xml needs to be updated there on an update.
Can tzdata include the necessary data and tools to generate metaZones.xml from its source? Then it would be possible to generate the icu data from the tzdata source without the need to wait for icu to catch up. Then Debian/Ubuntu can ship a tzdata-icu package for it [1].
[1] https://bugs.debian.org/954112
-- Benjamin Drung Debian & Ubuntu Developer