1*2fd832c6SAndroid Build Coastguard Worker#!/usr/bin/python3 -B 2*2fd832c6SAndroid Build Coastguard Worker 3*2fd832c6SAndroid Build Coastguard Worker# Copyright 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"""Generates a time zone version file""" 18*2fd832c6SAndroid Build Coastguard Worker 19*2fd832c6SAndroid Build Coastguard Workerimport argparse 20*2fd832c6SAndroid Build Coastguard Workerimport os 21*2fd832c6SAndroid Build Coastguard Workerimport shutil 22*2fd832c6SAndroid Build Coastguard Workerimport subprocess 23*2fd832c6SAndroid Build Coastguard Workerimport sys 24*2fd832c6SAndroid Build Coastguard Worker 25*2fd832c6SAndroid Build Coastguard Workersys.path.append('%s/external/icu/tools' % os.environ.get('ANDROID_BUILD_TOP')) 26*2fd832c6SAndroid Build Coastguard Workerimport i18nutil 27*2fd832c6SAndroid Build Coastguard Worker 28*2fd832c6SAndroid Build Coastguard Workersys.path.append('%s/system/timezone' % os.environ.get('ANDROID_BUILD_TOP')) 29*2fd832c6SAndroid Build Coastguard Workerimport tzdatautil 30*2fd832c6SAndroid Build Coastguard Worker 31*2fd832c6SAndroid Build Coastguard Workerandroid_build_top = i18nutil.GetAndroidRootOrDie() 32*2fd832c6SAndroid Build Coastguard Workerandroid_host_out_dir = i18nutil.GetAndroidHostOutOrDie() 33*2fd832c6SAndroid Build Coastguard Workertimezone_dir = os.path.realpath('%s/system/timezone' % android_build_top) 34*2fd832c6SAndroid Build Coastguard Workeri18nutil.CheckDirExists(timezone_dir, 'system/timezone') 35*2fd832c6SAndroid Build Coastguard Worker 36*2fd832c6SAndroid Build Coastguard Workerdef RunCreateTzVersion(properties_file): 37*2fd832c6SAndroid Build Coastguard Worker # Build the libraries needed. 38*2fd832c6SAndroid Build Coastguard Worker tzdatautil.InvokeSoong(android_build_top, ['create_tz_version']) 39*2fd832c6SAndroid Build Coastguard Worker 40*2fd832c6SAndroid Build Coastguard Worker # Run the CreateTzVersion tool 41*2fd832c6SAndroid Build Coastguard Worker command = '%s/bin/create_tz_version' % android_host_out_dir 42*2fd832c6SAndroid Build Coastguard Worker subprocess.check_call([command, properties_file]) 43*2fd832c6SAndroid Build Coastguard Worker 44*2fd832c6SAndroid Build Coastguard Worker 45*2fd832c6SAndroid Build Coastguard Workerdef CreateTzVersion( 46*2fd832c6SAndroid Build Coastguard Worker iana_version, revision, output_version_file): 47*2fd832c6SAndroid Build Coastguard Worker original_cwd = os.getcwd() 48*2fd832c6SAndroid Build Coastguard Worker 49*2fd832c6SAndroid Build Coastguard Worker i18nutil.SwitchToNewTemporaryDirectory() 50*2fd832c6SAndroid Build Coastguard Worker working_dir = os.getcwd() 51*2fd832c6SAndroid Build Coastguard Worker 52*2fd832c6SAndroid Build Coastguard Worker # Generate the properties file. 53*2fd832c6SAndroid Build Coastguard Worker properties_file = '%s/tzversion.properties' % working_dir 54*2fd832c6SAndroid Build Coastguard Worker with open(properties_file, "w") as properties: 55*2fd832c6SAndroid Build Coastguard Worker properties.write('rules.version=%s\n' % iana_version) 56*2fd832c6SAndroid Build Coastguard Worker properties.write('revision=%s\n' % revision) 57*2fd832c6SAndroid Build Coastguard Worker properties.write('output.version.file=%s\n' % output_version_file) 58*2fd832c6SAndroid Build Coastguard Worker 59*2fd832c6SAndroid Build Coastguard Worker RunCreateTzVersion(properties_file) 60*2fd832c6SAndroid Build Coastguard Worker 61*2fd832c6SAndroid Build Coastguard Worker os.chdir(original_cwd) 62*2fd832c6SAndroid Build Coastguard Worker 63*2fd832c6SAndroid Build Coastguard Worker 64*2fd832c6SAndroid Build Coastguard Workerdef main(): 65*2fd832c6SAndroid Build Coastguard Worker parser = argparse.ArgumentParser() 66*2fd832c6SAndroid Build Coastguard Worker parser.add_argument('-iana_version', required=True, 67*2fd832c6SAndroid Build Coastguard Worker help='The IANA time zone rules release version, e.g. 2017b') 68*2fd832c6SAndroid Build Coastguard Worker parser.add_argument('-revision', type=int, required = True, 69*2fd832c6SAndroid Build Coastguard Worker help='Revision of the current IANA version') 70*2fd832c6SAndroid Build Coastguard Worker parser.add_argument('-output_version_file', required=True, 71*2fd832c6SAndroid Build Coastguard Worker help='The output path for the version file') 72*2fd832c6SAndroid Build Coastguard Worker args = parser.parse_args() 73*2fd832c6SAndroid Build Coastguard Worker 74*2fd832c6SAndroid Build Coastguard Worker iana_version = args.iana_version 75*2fd832c6SAndroid Build Coastguard Worker revision = args.revision 76*2fd832c6SAndroid Build Coastguard Worker output_version_file = os.path.abspath(args.output_version_file) 77*2fd832c6SAndroid Build Coastguard Worker 78*2fd832c6SAndroid Build Coastguard Worker CreateTzVersion( 79*2fd832c6SAndroid Build Coastguard Worker iana_version=iana_version, 80*2fd832c6SAndroid Build Coastguard Worker revision=revision, 81*2fd832c6SAndroid Build Coastguard Worker output_version_file=output_version_file) 82*2fd832c6SAndroid Build Coastguard Worker 83*2fd832c6SAndroid Build Coastguard Worker print('Version file created as %s' % output_version_file) 84*2fd832c6SAndroid Build Coastguard Worker sys.exit(0) 85*2fd832c6SAndroid Build Coastguard Worker 86*2fd832c6SAndroid Build Coastguard Worker 87*2fd832c6SAndroid Build Coastguard Workerif __name__ == '__main__': 88*2fd832c6SAndroid Build Coastguard Worker main() 89