#!/bin/bash
#
# A script that generates an ICU data file containing just timezone rules data.
# The file can be used to provide time zone rules updates for compatible
# devices. Note: Only the rules are contained and new timezones will not have
# the translations.
#
# Usage:
# ./createIcuUpdateResources.sh <tzdata tar.gz file> <ICU version>
#
# e.g.
# ./createIcuUpdateResources.sh ~/Downloads/tzdata2015b.tar.gz 55
#
# After execution the file is generated.
if (( $# != 2 )); then
echo "Missing arguments"
echo "Usage:"
echo "./createIcuUpdateResources.sh <tzdata tar.gz file> <ICU version>"
exit 1
fi
if [[ -z "${ANDROID_BUILD_TOP}" ]]; then
echo "Configure your environment with build/envsetup.sh and lunch"
exit 1
fi
TZ_DATA_FILE=$1
ICU_VERSION=$2
if [[ ! -f ${TZ_DATA_FILE} ]]; then
echo "${TZ_DATA_FILE} not found"
exit 1
fi
# Keep track of the original working dir. Must be the "tools" dir.
START_DIR=`pwd`
ICU_DIR=${ANDROID_BUILD_TOP}/external/icu/icu4c/source
BUILD_DIR=${START_DIR}/icu_build
# Fail if anything below fails
set -e
rm -rf ${BUILD_DIR}
mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
# Configure the build
${ICU_DIR}/runConfigureICU Linux
mkdir -p ${BUILD_DIR}/bin
cd ${BUILD_DIR}/tools/tzcode
ln -s ${ICU_DIR}/tools/tzcode/icuregions ./icuregions
ln -s ${ICU_DIR}/tools/tzcode/icuzones ./icuzones
cp ${TZ_DATA_FILE} .
# Make the tools
make
# Then make the whole thing
cd ${BUILD_DIR}
make -j32
# Generate the tzdata.lst file used to configure which files are included.
ICU_LIB_DIR=${BUILD_DIR}/lib
BIN_DIR=${BUILD_DIR}/bin
TZ_FILES=tzdata.lst
echo metaZones.res > ${TZ_FILES}
echo timezoneTypes.res >> ${TZ_FILES}
echo windowsZones.res >> ${TZ_FILES}
echo zoneinfo64.res >> ${TZ_FILES}
# Copy all the .res files we need here a from, e.g. ./data/out/build/icudt55l
RES_DIR=data/out/build/icudt${ICU_VERSION}l
cp ${RES_DIR}/metaZones.res ${BUILD_DIR}
cp ${RES_DIR}/timezoneTypes.res ${BUILD_DIR}
cp ${RES_DIR}/windowsZones.res ${BUILD_DIR}
cp ${RES_DIR}/zoneinfo64.res ${BUILD_DIR}
# This is the package name required for the .dat file to be accepted by ICU.
# This also affects the generated file name.
ICU_PACKAGE=icudt${ICU_VERSION}l
# Create the file
LD_LIBRARY_PATH=${ICU_LIB_DIR} ${BIN_DIR}/pkgdata -F -m common -v -T . -d . -p ${ICU_PACKAGE} ${TZ_FILES}
cp ${ICU_PACKAGE}.dat ${START_DIR}/icu_tzdata.dat
# Copy the file to the original working dir.
echo File can be found here: ${START_DIR}/icu_tzdata.dat