1#!/usr/bin/env bash 2# 3# Copyright (C) 2017 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16# 17# Creates fake distro data files by taking the files in $1 and turning them into ones 18# that appear to be ones from IANA release $2. The resulting files are placed beneath $3. 19 20REFERENCE_FILES_DIR=$1 21OUTPUT_IANA_RULES_VERSION=$2 22DISTRO_OUTPUT_DIR=$3 23 24# Fail on error 25set -e 26 27TZDATA_FILE=iana/tzdata 28ICU_FILE=icu_overlay/icu_tzdata.dat 29TZLOOKUP_FILE=android/tzlookup.xml 30 31INPUT_TZDATA_FILE=${REFERENCE_FILES_DIR}/${TZDATA_FILE} 32INPUT_ICU_FILE=${REFERENCE_FILES_DIR}/${ICU_FILE} 33INPUT_TZLOOKUP_FILE=${REFERENCE_FILES_DIR}/${TZLOOKUP_FILE} 34 35TZHEADER=$(head -n1 ${INPUT_TZDATA_FILE} | cut -c1-11) 36INPUT_IANA_RULES_VERSION=${TZHEADER:6} 37 38OUTPUT_TZDATA_FILE=${DISTRO_OUTPUT_DIR}/${TZDATA_FILE} 39OUTPUT_ICU_FILE=${DISTRO_OUTPUT_DIR}/${ICU_FILE} 40OUTPUT_TZLOOKUP_FILE=${DISTRO_OUTPUT_DIR}/${TZLOOKUP_FILE} 41 42mkdir -p ${DISTRO_OUTPUT_DIR} 43mkdir -p ${DISTRO_OUTPUT_DIR}/iana 44mkdir -p ${DISTRO_OUTPUT_DIR}/icu_overlay 45mkdir -p ${DISTRO_OUTPUT_DIR}/android 46 47# Create a new tzdata file. 48sed "1s/^tzdata${INPUT_IANA_RULES_VERSION}/tzdata${OUTPUT_IANA_RULES_VERSION}/" ${INPUT_TZDATA_FILE} > ${OUTPUT_TZDATA_FILE} 49 50# Create new ICU file. 51SEARCH=$(echo ${INPUT_IANA_RULES_VERSION} | sed "s/\(.\)/\1\\\x00/g") 52REPLACE=$(echo ${OUTPUT_IANA_RULES_VERSION} | sed "s/\(.\)/\1\\\x00/g") 53sed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_FILE} > ${OUTPUT_ICU_FILE} 54 55# Copy the tzlookup.xml as is. 56cp ${INPUT_TZLOOKUP_FILE} ${OUTPUT_TZLOOKUP_FILE} 57 58echo Transformed input files with version ${INPUT_IANA_RULES_VERSION} to ${OUTPUT_IANA_RULES_VERSION} in ${DISTRO_OUTPUT_DIR} 59 60