diff options
Diffstat (limited to 'tzdata/tools/createIcuUpdateResources.sh')
-rwxr-xr-x | tzdata/tools/createIcuUpdateResources.sh | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/tzdata/tools/createIcuUpdateResources.sh b/tzdata/tools/createIcuUpdateResources.sh new file mode 100755 index 0000000..2db7132 --- /dev/null +++ b/tzdata/tools/createIcuUpdateResources.sh @@ -0,0 +1,89 @@ +#!/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 |