Skip to content

Commit

Permalink
doc: document ICU time zone data update process
Browse files Browse the repository at this point in the history
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 <jasnell@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Steven R Loomis <srloomis@us.ibm.com>
  • Loading branch information
apaprocki authored and codebytere committed May 21, 2020
1 parent caa6706 commit 60d1dee
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions doc/guides/maintaining-icu.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 60d1dee

Please sign in to comment.