| How to rebuild the ICU data files. | 
 |  | 
 | This is based off of section B in the README.chromium file. | 
 |  | 
 | 1. Set ICU_ROOT to the directory of the ICU source code in the Cobalt source | 
 |    tree, e.g. `$COBALT_SRC_ROOT/src/third_party/icu`. | 
 |  | 
 | 2. Create a build directory outside of the Cobalt codebase, and make that your | 
 |    current working directory.  Set ICU_DATA_ROOT to this directory. | 
 |  | 
 | 3. Configure the ICU build.  Note that we setup our compiler defines in the same | 
 |    way that they are set when building ICU within Cobalt, according to our | 
 |    icu.gyp file. | 
 |  | 
 |    Run | 
 |  | 
 |    ``` | 
 |    ICU_DATA_FILTER_FILE="$ICU_ROOT/filters/cobalt.json" \ | 
 |      env CPPFLAGS="-DUCONFIG_NO_LEGACY_CONVERSION=1 -DU_CHARSET_IS_UTF8=1 \ | 
 |      -DUCONFIG_ONLY_HTML_CONVERSION=1 -DUCONFIG_NO_TRANSLITERATION=1 \ | 
 |      -DUCONFIG_NO_COLLATION=1" \ | 
 |      "$ICU_ROOT/source/runConfigureICU" --enable-debug --disable-release \ | 
 |      Linux/gcc --disable-tests  --disable-layoutex | 
 |  | 
 |    ``` | 
 |  | 
 | 4. Run `$ICU_ROOT/cast/patch_locale.sh && make -j 120` | 
 |  | 
 | 5. Run `$ICU_ROOT/scripts/clean_up_data_source.sh` to clean up the changes | 
 |    made to $ICU_ROOT from the call to `patch_locale.sh`. | 
 |  | 
 | Cobalt uses a packaged ICU data file instead of individual files, but | 
 | instructions for both options have been included. | 
 |  | 
 | ***Option 1: Rebuild packaged ICU data file | 
 |  | 
 | 6. Replace the files in this directory with the new files that you have built. | 
 |  | 
 | Run: | 
 |  | 
 |     ``` | 
 |     cd $COBALT_SRC_ROOT/src/cobalt/content/icu | 
 |     rm -rf * | 
 |     cp $ICU_DATA_ROOT/data/out/tmp/icudt68l.dat . | 
 |     cp $ICU_DATA_ROOT/data/out/tmp/icudt68b.dat . | 
 |     ``` | 
 |  | 
 | Note that at the time of this writing, the final resulting contents had a size | 
 | of 4.6MB, from running the command | 
 | `du -sh $COBALT_SRC_ROOT/src/cobalt/content/icu/icudt68l.dat`. | 
 |  | 
 | ***Option 2: Rebuild individual ICU data files | 
 |  | 
 | 6. Create a new directory where we will rebuild ICU with different options | 
 |     because the options used above will produce a version of the tool `icupkg` ( | 
 |     which we need to use to translate from little to big endian) that does not | 
 |     work.  Call this new directory $ICU_PKG_ROOT. | 
 |  | 
 | 7. Change directory to $ICU_PKG_ROOT. | 
 |  | 
 | 8. Run | 
 |    ``` | 
 |    $ICU_ROOT/source/runConfigureICU --enable-debug --disable-release \ | 
 |      Linux/gcc  --disable-tests --disable-layoutex | 
 |    ``` | 
 |  | 
 | 9. Run `make -j 120` | 
 |  | 
 | 10. Run `export LD_LIBRARY_PATH=$ICU_PKG_ROOT/lib` | 
 |  | 
 | 11. Run `sudo apt install icu-devtools` to obtain the `icupkg` command and its | 
 |     dependencies.  Even though you will be running a locally-built version of | 
 |     `icupkg`, you will need the shared libraries installed by this command. | 
 |  | 
 | 12. Replace the files in this directory with the new files that you have built. | 
 |     They will exist as a little-endian package file, but you can use the | 
 |     `icupkg` tool to both unpack the files out of the package (which Cobalt | 
 |     prefers), and switch from little-endian to big-endian. | 
 |  | 
 |     Run: | 
 |  | 
 |     ``` | 
 |     cd $COBALT_SRC_ROOT/src/cobalt/content/icu | 
 |     rm -rf * | 
 |     mkdir icudt68l icudt68b | 
 |     $ICU_PKG_ROOT/bin/icupkg --ignore-deps -tl -x '*' -d icudt68l $ICU_DATA_ROOT/data/out/tmp/icudt68l.dat | 
 |     $ICU_PKG_ROOT/bin/icupkg --ignore-deps -tb -x '*' -d icudt68b $ICU_DATA_ROOT/data/out/tmp/icudt68l.dat | 
 |     ``` | 
 |  | 
 | Note that at the time of this writing, the final resulting contents had a size | 
 | of 6.7MB, from running the command | 
 | `du -sh $COBALT_SRC_ROOT/src/cobalt/content/icu/icudt68l`. | 
 |  | 
 | ******************************************************************************** | 
 |  | 
 | You should now have the ICU data files generated and ready to go in the Cobalt | 
 | source tree, and you can clean up any outstanding files.  If there are any | 
 | leftover changes in your $ICU_ROOT directory, you can revert them.  At this | 
 | point you can re-gyp, re-ninja, and run Cobalt and it should work. |