summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu-xetex/tools/tzcode/readme.txt
blob: 2558608d65ba779357e03d9ee79e2836c8e16443 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
**********************************************************************
* Copyright (c) 2003-2005, International Business Machines
* Corporation and others.  All Rights Reserved.
**********************************************************************
* Author: Alan Liu
* Created: August 18 2003
* Since: ICU 2.8
**********************************************************************

----------------------------------------------------------------------
OVERVIEW

This file describes the tools in icu/source/tools/tzcode

The purpose of these tools is to process the zoneinfo or "Olson" time
zone database into a form usable by ICU4C (release 2.8 and later).
Unlike earlier releases, ICU4C 2.8 supports historical time zone
behavior, as well as the full set of Olson compatibility IDs.

References:

ICU4C:  http://icu.sourceforge.net/
Olson:  ftp://elsie.nci.nih.gov/pub/

----------------------------------------------------------------------
ICU4C vs. ICU4J

For ICU releases >= 2.8, both ICU4C and ICU4J implement full
historical time zones, based on Olson data.  The implementations in C
and Java are somewhat different.  The C implementation is a
self-contained implementation, whereas ICU4J uses the underlying JDK
1.3 or 1.4 time zone implementation.

Older versions of ICU (C and Java <= 2.6) implement a "present day
snapshot".  This only reflects current time zone behavior, without
historical variation.  Furthermore, it lacks the full set of Olson
compatibility IDs.

----------------------------------------------------------------------
BACKGROUND

The zoneinfo or "Olson" time zone package is used by various systems
to describe the behavior of time zones.  The package consists of
several parts.  E.g.:

  Index of ftp://elsie.nci.nih.gov/pub/

  classictzcode.tar.gz    65 KB        12/10/1994    12:00:00 AM
  classictzdata.tar.gz    67 KB        12/10/1994    12:00:00 AM
  e5+57.tar.gz            2909 KB      3/22/1993     12:00:00 AM
  iso8601.ps.gz           16 KB        7/27/1996     12:00:00 AM
  leastsq.xls             49 KB        4/24/1997     12:00:00 AM
  ltroff.tar.gz           36 KB        7/16/1993     12:00:00 AM
  pi.shar.gz              4 KB         3/9/1994      12:00:00 AM
  tzarchive.gz            3412 KB      8/18/2003     4:00:00 AM
  tzcode2003a.tar.gz      98 KB        3/24/2003     2:32:00 PM
  tzdata2003a.tar.gz      132 KB       3/24/2003     2:32:00 PM

ICU only uses the tzcodeYYYYV.tar.gz and tzdataYYYYV.tar.gz files,
where YYYY is the year and V is the version letter ('a'...'z').

----------------------------------------------------------------------
HOWTO

1. Obtain the current versions of tzcodeYYYYV.tar.gz (aka `tzcode')
   and tzdataYYYYV.tar.gz (aka `tzdata') from the FTP site given
   above.  Either manually download or use wget:

   $ cd {path_to}/icu/source/tools/tzcode
   $ wget "ftp://elsie.nci.nih.gov/pub/tz*.tar.gz"

2. Unpack tzcode and tzdata directly into the directory tzcode:

   $ tar xzvf tzcode*.tar.gz
   $ tar xzvf tzdata*.tar.gz

   *** Make sure you only have ONE FILE named tzdata*.tar.gz in the
       directory.
   *** Do NOT delete the tzdata*.tar.gz file.

   The Makefile looks in the current directory to determine the
   version of Olson data it is building by looking for tzdata*.tar.gz.

3. Apply the ICU patch to zic.c:

   $ patch < patch-icu-tzcode

   If patch complains at this point, there is a mismatch that must be
   manually addressed.  See the CVS log of `patch-icu-tzcode' for
   version details.

4. Build:

   $ make icu_data

5. Copy the data files to the correct location in the ICU4C/ICU4J
   source trees:

   $ cp zoneinfo.txt ../../../data/misc/
   $ cp ZoneMetaData.java {path_to}/icu4j/src/com/ibm/icu/impl

6. Rebuild ICU:

   $ cd ../../../
   $ {*make}

7. Don't forget to check in the new zoneinfo.txt (from its location at
   {path_to}/icu/source/data/misc/zoneinfo.txt) into CVS.

----------------------------------------------------------------------
HOWTO regenerate patch-icu-tzcode

If you need to edit any of the tzcode* files, you will need to
regenerate the patch file as follows.

1. Follow the above instructions to extract and patch the tzcode*
   files in {path_to}/icu/source/tools/tzcode.  Modify any of the
   tzcode files.

2. Extract a clean set of the tzcode* files into a new directory,
   ../tzcode.orig/:

   $ mkdir ../tzcode.orig
   $ cd ../tzcode.orig
   $ tar xzf ../tzcode/tzcode*.tar.gz
   $ cd ../tzcode

3. Compute diffs, ignoring files that are in only one directory:

   $ diff -ur ../tzcode.orig . | grep -vE -e "^Only in " > patch-icu-tzcode

4. Test the patch-icu-tzcode file by regenerating and diffing the
   files again in another directory.  The expected output from the
   final diff command is *nothing*.

   $ mkdir ../tzcode.new
   $ cd ../tzcode.new
   $ tar xzf ../tzcode/tzcode*.tar.gz
   $ patch < ../tzcode/patch-icu-tzcode
   $ cd ../tzcode
   $ diff -ur ../tzcode.new . | grep -vE -e "^Only in "

5. Check in the new patch-icu-tzcode file.

----------------------------------------------------------------------
eof