This directory contains tools for ICU updates.

Data update tools
=================

update-tzdata.py
  - downloads tzdata updates and regenerates the ICU and
    libcore/bionic timezone data files.
    There are sometimes code and metadata changes associated
    with tzdata updates that should be applied at the same time.
    e.g. see http://bugs.icu-project.org/trac/search?q=2015d

    ICU and CTS tests for bionic / libcore should be run before
    and after.

updateicudata.py
  - regerates the ICU data files.
    ICU and CTS tests for libcore should be run before and
    after.

Source code updates
===================

The source code in android_icu4j is generated from the code in icu4j. Do not change the code
in android_icu4j directly: instead you change the icu4j source or the rules used to generate
android_icu4j.

All changes made to icu4j should be accompanied by changes in android_icu4j and vice versa.

Applying patches to ICU4J
-------------------------

After making changes to icu4j (e.g. after applying upstream patches):

source build/envsetup.sh
lunch

cd external/icu/tools/srcgen
./generate_android_icu4j.sh

The code in android_icu4j will be regenerated and should contain the changes you made
in icu4j. Confirm the diffs are what you intended. Commit both at the same time.

Modifying the code gen
----------------------

android_icu4j is generated using a Java tool found in tools/srcgen.

The "rules" that transform the source are configured in
src/main/java/com/android/icu4j/srcgen/Icu4jTransform.java.