Put all the tzdata in one file.
I'll come back and remove the separate files (and change the regular 'generate' script) when the separate files are obsolete, but in the interim period, it's easier to have both old and new files available. Bug: 7012465 Change-Id: I36e2fd49c08ff79ded6eca1c5bc4c08837cc490a
This commit is contained in:
parent
a2f596b650
commit
fb018a2dde
77
libc/tools/zoneinfo/generate-single-file
Executable file
77
libc/tools/zoneinfo/generate-single-file
Executable file
@ -0,0 +1,77 @@
|
||||
#!/usr/bin/python
|
||||
# Run with no arguments from any directory, with no special setup required.
|
||||
|
||||
import ftplib
|
||||
import hashlib
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import string
|
||||
import struct
|
||||
import subprocess
|
||||
import sys
|
||||
import tarfile
|
||||
import tempfile
|
||||
|
||||
# Find the bionic directory, searching upward from this script.
|
||||
bionic_libc_tools_zoneinfo_dir = os.path.realpath(os.path.dirname(sys.argv[0]))
|
||||
bionic_libc_tools_dir = os.path.dirname(bionic_libc_tools_zoneinfo_dir)
|
||||
bionic_libc_dir = os.path.dirname(bionic_libc_tools_dir)
|
||||
bionic_dir = os.path.dirname(bionic_libc_dir)
|
||||
bionic_libc_zoneinfo_dir = '%s/libc/zoneinfo' % bionic_dir
|
||||
if not os.path.isdir(bionic_libc_tools_zoneinfo_dir) or not os.path.isdir(bionic_libc_zoneinfo_dir):
|
||||
print "Couldn't find bionic/libc/tools/zoneinfo!"
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
||||
|
||||
def current_tzdata_version():
|
||||
return open('%s/zoneinfo.version' % bionic_libc_zoneinfo_dir).readline().rstrip('\n')
|
||||
|
||||
|
||||
# TODO: make the regular "generate" script just output this format directly.
|
||||
|
||||
# Open the output file.
|
||||
f = open('%s/tzdata' % bionic_libc_zoneinfo_dir, 'wb+')
|
||||
|
||||
# -- header
|
||||
# char[12] tzdata_version -- 'tzdata2012f\0'
|
||||
# u32 file_format_version -- probably won't need this, but just in case
|
||||
# u32 index_offset -- likewise
|
||||
# u32 data_offset
|
||||
# u32 zonetab_offset
|
||||
header_format = "! 12s i i i i"
|
||||
header_size = struct.calcsize(header_format)
|
||||
|
||||
index_offset = header_size
|
||||
index_bytes = open('%s/zoneinfo.idx' % bionic_libc_zoneinfo_dir, "rb").read()
|
||||
index_size = len(index_bytes)
|
||||
|
||||
data_offset = index_offset + index_size
|
||||
data_bytes = open('%s/zoneinfo.dat' % bionic_libc_zoneinfo_dir).read()
|
||||
data_size = len(data_bytes)
|
||||
|
||||
zonetab_offset = 0 # TODO: data_offset + data_size
|
||||
|
||||
tzdata_version = current_tzdata_version()
|
||||
file_format_version = 1
|
||||
|
||||
header = struct.pack(header_format, 'tzdata%s' % tzdata_version, file_format_version, index_offset, data_offset, zonetab_offset)
|
||||
f.write(header)
|
||||
|
||||
# -- index (@index_offset)
|
||||
# u8* index_bytes
|
||||
f.write(index_bytes)
|
||||
|
||||
# -- data (@data_offset)
|
||||
# u8* data_bytes
|
||||
f.write(data_bytes)
|
||||
|
||||
# TODO: zonetab
|
||||
# -- zonetab (@zonetab_offset)
|
||||
# u8* zonetab_bytes
|
||||
|
||||
f.close()
|
||||
|
||||
sys.exit(0)
|
@ -30,6 +30,15 @@ LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_MODULE_PATH := $(TARGET_OUT)/usr/share/zoneinfo
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
############################################
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := tzdata
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||
LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
||||
LOCAL_MODULE_CLASS := ETC
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_MODULE_PATH := $(TARGET_OUT)/usr/share/zoneinfo
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
# The host build doesn't use bionic, but it does use bionic's zoneinfo data
|
||||
ifeq ($(WITH_HOST_DALVIK),true)
|
||||
@ -70,4 +79,16 @@ LOCAL_MODULE_STEM := $(LOCAL_SRC_FILES)
|
||||
LOCAL_MODULE_PATH := $(HOST_OUT)/usr/share/zoneinfo
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
############################################
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := tzdata-host
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||
LOCAL_IS_HOST_MODULE := true
|
||||
LOCAL_SRC_FILES := tzdata
|
||||
LOCAL_MODULE_CLASS := ETC
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_MODULE_STEM := $(LOCAL_SRC_FILES)
|
||||
LOCAL_MODULE_PATH := $(HOST_OUT)/usr/share/zoneinfo
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
endif
|
||||
|
BIN
libc/zoneinfo/tzdata
Normal file
BIN
libc/zoneinfo/tzdata
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user