Skip to content

Commit d1efdb2

Browse files
apaprockitargos
authored andcommitted
doc: document ICU time zone data update process
Updates the "Maintaining ICU" document and describes the process to update an existing ICU `.dat` file with updated binary time zone data files corresponding to new IANA `tzdata` releases. Requested in #30211 by @srl295 PR-URL: #30364 Reviewed-By: James M Snell <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Steven R Loomis <[email protected]>
1 parent 1db0d51 commit d1efdb2

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

doc/guides/maintaining-icu.md

+35
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,41 @@ $ node -p process.versions
3333
}
3434
```
3535

36+
### Time Zone Data
37+
38+
Time zone data files are updated independently of ICU CLDR data. ICU and its
39+
main data files do not need to be upgraded in order to apply time zone data file
40+
fixes.
41+
42+
The [IANA tzdata](https://www.iana.org/time-zones) project releases new versions
43+
and announces them on the [`tz-announce`](http://mm.icann.org/pipermail/tz-announce/)
44+
mailing list.
45+
46+
The Unicode project takes new releases and publishes
47+
[updated time zone data files](https://github.com/unicode-org/icu-data/tree/master/tzdata/icunew)
48+
in the icu/icu-data repository.
49+
50+
All modern versions of Node.js use the version 44 ABI of the time zone data
51+
files.
52+
53+
#### Example: Updating the ICU `.dat` File
54+
55+
* Decompress `deps/icu/source/data/in/icudt##l.dat.bz2`, where `##` is
56+
the ICU major version number.
57+
* Clone the icu/icu-data repository and copy the latest `tzdata` release `le`
58+
files into the `source/data/in` directory.
59+
* Follow the upstream [ICU instructions](http://userguide.icu-project.org/datetime/timezone)
60+
to patch the ICU `.dat` file:
61+
> `for i in zoneinfo64.res windowsZones.res timezoneTypes.res metaZones.res;
62+
> do icupkg -a $i icudt*l.dat`
63+
* Optionally, verify that there is only one of the above files listed when using
64+
`icupkg -l`.
65+
* Optionally, extract each file using `icupkg -x` and verify the `shasum`
66+
matches the desired value.
67+
* Compress the `.dat` file with the same filename as in the first step.
68+
* Build, test, verifying `process.versions.tz` matches the desired version.
69+
* Create a new minor version release.
70+
3671
## Release Schedule
3772

3873
ICU typically has >1 release a year, particularly coinciding with a major

0 commit comments

Comments
 (0)