89 lines
2.4 KiB
Bash
Executable file
89 lines
2.4 KiB
Bash
Executable file
#!/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
|