1*2fd832c6SAndroid Build Coastguard Worker#!/usr/bin/env bash 2*2fd832c6SAndroid Build Coastguard Worker# 3*2fd832c6SAndroid Build Coastguard Worker# Copyright (C) 2017 The Android Open Source Project 4*2fd832c6SAndroid Build Coastguard Worker# 5*2fd832c6SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*2fd832c6SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*2fd832c6SAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*2fd832c6SAndroid Build Coastguard Worker# 9*2fd832c6SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*2fd832c6SAndroid Build Coastguard Worker# 11*2fd832c6SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*2fd832c6SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*2fd832c6SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*2fd832c6SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*2fd832c6SAndroid Build Coastguard Worker# limitations under the License. 16*2fd832c6SAndroid Build Coastguard Worker# 17*2fd832c6SAndroid Build Coastguard Worker# Creates fake test data files by taking the files in $1 and turning them into ones 18*2fd832c6SAndroid Build Coastguard Worker# that appear to be ones from IANA release $2. The resulting files are placed beneath $3. 19*2fd832c6SAndroid Build Coastguard Worker 20*2fd832c6SAndroid Build Coastguard WorkerREFERENCE_FILES_DIR=$1 21*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_IANA_RULES_VERSION=$2 22*2fd832c6SAndroid Build Coastguard WorkerTEST_DATA_OUTPUT_DIR=$3 23*2fd832c6SAndroid Build Coastguard Worker 24*2fd832c6SAndroid Build Coastguard Worker# Fail on error 25*2fd832c6SAndroid Build Coastguard Workerset -e 26*2fd832c6SAndroid Build Coastguard Worker 27*2fd832c6SAndroid Build Coastguard WorkerTZDATA_FILE=iana/tzdata 28*2fd832c6SAndroid Build Coastguard WorkerTZDATA_LICENSE_FILE=iana/NOTICE 29*2fd832c6SAndroid Build Coastguard WorkerICU_DIR=icu_overlay/ 30*2fd832c6SAndroid Build Coastguard WorkerICU_LICENSE_FILE=icu_overlay/LICENSE 31*2fd832c6SAndroid Build Coastguard WorkerTZLOOKUP_FILE=android/tzlookup.xml 32*2fd832c6SAndroid Build Coastguard WorkerTELEPHONYLOOKUP_FILE=android/telephonylookup.xml 33*2fd832c6SAndroid Build Coastguard Worker 34*2fd832c6SAndroid Build Coastguard WorkerINPUT_TZDATA_FILE=${REFERENCE_FILES_DIR}/${TZDATA_FILE} 35*2fd832c6SAndroid Build Coastguard WorkerINPUT_ICU_DIR=${REFERENCE_FILES_DIR}/${ICU_DIR} 36*2fd832c6SAndroid Build Coastguard WorkerINPUT_TZLOOKUP_FILE=${REFERENCE_FILES_DIR}/${TZLOOKUP_FILE} 37*2fd832c6SAndroid Build Coastguard WorkerINPUT_TELEPHONYLOOKUP_FILE=${REFERENCE_FILES_DIR}/${TELEPHONYLOOKUP_FILE} 38*2fd832c6SAndroid Build Coastguard Worker 39*2fd832c6SAndroid Build Coastguard WorkerTZHEADER=$(head -n1 ${INPUT_TZDATA_FILE} | cut -c1-11) 40*2fd832c6SAndroid Build Coastguard WorkerINPUT_IANA_RULES_VERSION=${TZHEADER:6} 41*2fd832c6SAndroid Build Coastguard Worker 42*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_TZDATA_FILE=${TEST_DATA_OUTPUT_DIR}/${TZDATA_FILE} 43*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_ICU_DIR=${TEST_DATA_OUTPUT_DIR}/${ICU_DIR} 44*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_TZLOOKUP_FILE=${TEST_DATA_OUTPUT_DIR}/${TZLOOKUP_FILE} 45*2fd832c6SAndroid Build Coastguard WorkerOUTPUT_TELEPHONYLOOKUP_FILE=${TEST_DATA_OUTPUT_DIR}/${TELEPHONYLOOKUP_FILE} 46*2fd832c6SAndroid Build Coastguard Worker 47*2fd832c6SAndroid Build Coastguard Workermkdir -p ${TEST_DATA_OUTPUT_DIR} 48*2fd832c6SAndroid Build Coastguard Workermkdir -p ${TEST_DATA_OUTPUT_DIR}/iana 49*2fd832c6SAndroid Build Coastguard Workermkdir -p ${TEST_DATA_OUTPUT_DIR}/icu_overlay 50*2fd832c6SAndroid Build Coastguard Workermkdir -p ${TEST_DATA_OUTPUT_DIR}/android 51*2fd832c6SAndroid Build Coastguard Worker 52*2fd832c6SAndroid Build Coastguard Worker# Create a new tzdata file. 53*2fd832c6SAndroid Build Coastguard Workersed "1s/^tzdata${INPUT_IANA_RULES_VERSION}/tzdata${OUTPUT_IANA_RULES_VERSION}/" ${INPUT_TZDATA_FILE} > ${OUTPUT_TZDATA_FILE} 54*2fd832c6SAndroid Build Coastguard Worker 55*2fd832c6SAndroid Build Coastguard Worker# Create new ICU file. 56*2fd832c6SAndroid Build Coastguard WorkerSEARCH=$(echo ${INPUT_IANA_RULES_VERSION} | sed "s/\(.\)/\1\\\x00/g") 57*2fd832c6SAndroid Build Coastguard WorkerREPLACE=$(echo ${OUTPUT_IANA_RULES_VERSION} | sed "s/\(.\)/\1\\\x00/g") 58*2fd832c6SAndroid Build Coastguard Workersed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_DIR}/zoneinfo64.res > ${OUTPUT_ICU_DIR}/zoneinfo64.res 59*2fd832c6SAndroid Build Coastguard Workersed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_DIR}/windowsZones.res > ${OUTPUT_ICU_DIR}/windowsZones.res 60*2fd832c6SAndroid Build Coastguard Workersed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_DIR}/timezoneTypes.res > ${OUTPUT_ICU_DIR}/timezoneTypes.res 61*2fd832c6SAndroid Build Coastguard Workersed "s/$SEARCH/$REPLACE/" ${INPUT_ICU_DIR}/metaZones.res > ${OUTPUT_ICU_DIR}/metaZones.res 62*2fd832c6SAndroid Build Coastguard Worker 63*2fd832c6SAndroid Build Coastguard Worker# Copy the tzlookup.xml but update the ianaversion= attribute. 64*2fd832c6SAndroid Build Coastguard Workersed "s/${INPUT_IANA_RULES_VERSION}/${OUTPUT_IANA_RULES_VERSION}/" ${INPUT_TZLOOKUP_FILE} > ${OUTPUT_TZLOOKUP_FILE} 65*2fd832c6SAndroid Build Coastguard Worker 66*2fd832c6SAndroid Build Coastguard Worker# Copy the telephonylookup.xml file. No updates are required. 67*2fd832c6SAndroid Build Coastguard Workercp ${INPUT_TELEPHONYLOOKUP_FILE} ${OUTPUT_TELEPHONYLOOKUP_FILE} 68*2fd832c6SAndroid Build Coastguard Worker 69*2fd832c6SAndroid Build Coastguard Worker# Copy license files 70*2fd832c6SAndroid Build Coastguard Workercp ${REFERENCE_FILES_DIR}/${TZDATA_LICENSE_FILE} ${TEST_DATA_OUTPUT_DIR}/${TZDATA_LICENSE_FILE} 71*2fd832c6SAndroid Build Coastguard Workercp ${REFERENCE_FILES_DIR}/${ICU_LICENSE_FILE} ${TEST_DATA_OUTPUT_DIR}/${ICU_LICENSE_FILE} 72*2fd832c6SAndroid Build Coastguard Worker 73*2fd832c6SAndroid Build Coastguard Workerecho Transformed input files with version ${INPUT_IANA_RULES_VERSION} to ${OUTPUT_IANA_RULES_VERSION} in ${TEST_DATA_OUTPUT_DIR} 74*2fd832c6SAndroid Build Coastguard Worker 75