diff --git a/doc/guides/maintaining-icu.md b/doc/guides/maintaining-icu.md index 593b7944f0782f..6dd8ebcef0048b 100644 --- a/doc/guides/maintaining-icu.md +++ b/doc/guides/maintaining-icu.md @@ -33,6 +33,41 @@ $ node -p process.versions } ``` +### Time Zone Data + +Time zone data files are updated independently of ICU CLDR data. ICU and its +main data files do not need to be upgraded in order to apply time zone data file +fixes. + +The [IANA tzdata](https://www.iana.org/time-zones) project releases new versions +and announces them on the [`tz-announce`](http://mm.icann.org/pipermail/tz-announce/) +mailing list. + +The Unicode project takes new releases and publishes +[updated time zone data files](https://github.com/unicode-org/icu-data/tree/master/tzdata/icunew) +in the icu/icu-data repository. + +All modern versions of Node.js use the version 44 ABI of the time zone data +files. + +#### Example: Updating the ICU `.dat` File + +* Decompress `deps/icu/source/data/in/icudt##l.dat.bz2`, where `##` is + the ICU major version number. +* Clone the icu/icu-data repository and copy the latest `tzdata` release `le` + files into the `source/data/in` directory. +* Follow the upstream [ICU instructions](http://userguide.icu-project.org/datetime/timezone) + to patch the ICU `.dat` file: + > `for i in zoneinfo64.res windowsZones.res timezoneTypes.res metaZones.res; + > do icupkg -a $i icudt*l.dat` +* Optionally, verify that there is only one of the above files listed when using + `icupkg -l`. +* Optionally, extract each file using `icupkg -x` and verify the `shasum` + matches the desired value. +* Compress the `.dat` file with the same filename as in the first step. +* Build, test, verifying `process.versions.tz` matches the desired version. +* Create a new minor version release. + ## Release Schedule ICU typically has >1 release a year, particularly coinciding with a major