]> git.saurik.com Git - apple/system_cmds.git/blame - zic.tproj/generate_zoneinfo.sh
system_cmds-735.tar.gz
[apple/system_cmds.git] / zic.tproj / generate_zoneinfo.sh
CommitLineData
aaff5f01
A
1#!/bin/sh
2set -e
3set -x
4
5printenv | sort
6
7if [ $# -ne 5 ]; then
8 echo "Usage: $0 SRCROOT OBJROOT BUILT_PRODUCTS_DIR SDKROOT PLATFORM_NAME" 1>&2
9 exit 1
10fi
11
12SRCROOT="$1"
13OBJROOT="$2"
14BUILT_PRODUCTS_DIR="$3"
15SDKROOT="$4"
16PLATFORM_NAME="$5"
17
18ZICHOST_SYMROOT="${BUILT_PRODUCTS_DIR}/zic_host-sym"
19ZICHOST_DSTROOT="${BUILT_PRODUCTS_DIR}/zic_host-dst"
20ZICHOST="${ZICHOST_DSTROOT}/zic_host"
21
22LOCALTIME="US/Pacific"
23POSIXRULES="US/Pacific"
24
aaff5f01
A
25ZONEINFO="${BUILT_PRODUCTS_DIR}/zoneinfo"
26DATFILES="${BUILT_PRODUCTS_DIR}/datfiles"
27PRIVATEDIR="${BUILT_PRODUCTS_DIR}/private"
28
29# ftp://elsie.nci.nih.gov/pub/tzdata*.tar.gz
30# the tzdata*.tar.gz file is automatically unpacked and a version file created
31# /usr/local/share/tz/tzdata*.tar.gz is installed by the TimeZoneData project
1a7e3f61
A
32TARBALL="${SDKROOT}"/usr/local/share/tz/latest_tzdata.tar.gz
33if [ ! -L "$TARBALL" ]; then
34 echo "error: ${TARBALL} is not a symbolic link" 1>&2
aaff5f01
A
35 exit 1
36fi
1a7e3f61
A
37if [ ! -r "$TARBALL" ]; then
38 echo "error: ${TARBALL} does not point to a valid file" 1>&2
39 exit 1
40fi
41DATVERS=`readlink ${TARBALL} | cut -d. -f1 | sed -e 's/^tzdata//'`
aaff5f01
A
42VERSIONFILE="${ZONEINFO}/+VERSION"
43
44mkdir -p "${DATFILES}"
45mkdir -p "${ZONEINFO}"
46tar zxf "${TARBALL}" -C "${DATFILES}"
cf37c299 47ZONE_FILES="$("${SRCROOT}"/zic.tproj/generate_zone_file_list.sh "${DATFILES}")"
aaff5f01
A
48for tz in ${ZONE_FILES}; do
49 if [ ${tz} = "northamerica" ]; then
50 ARG="-p America/New_York"
51 else
52 ARG=""
53 fi
cf37c299 54 "${ZICHOST}" ${ARG} -L /dev/null -d "${ZONEINFO}" \
aaff5f01
A
55 -y "${DATFILES}/yearistype.sh" "${DATFILES}/${tz}" || exit 1
56done
1a7e3f61 57
aaff5f01
A
58if [ $? -ne 0 ]; then
59 exit 1
60fi
61
62chmod -R og-w "${ZONEINFO}"
63for f in "zone.tab" "iso3166.tab"; do
64 install -m 0444 "${DATFILES}/$f" "${ZONEINFO}/$f" || exit 1
65done
66if [ $? -ne 0 ]; then
67 exit 1
68fi
69
cf37c299
A
70if [ -n "$RC_BRIDGE" ]; then
71 ACTUAL_PLATFORM_NAME="bridge${PLATFORM_NAME#watch}"
72else
73 ACTUAL_PLATFORM_NAME="${PLATFORM_NAME}"
74fi
75
76case "$ACTUAL_PLATFORM_NAME" in
9726c137 77iphone*|appletv*|watch*)
aaff5f01 78 mkdir -p "${PRIVATEDIR}/var/db"
1a7e3f61 79 mkdir -p -m a+rx "${PRIVATEDIR}/var/db/timezone"
fc6d9e4b
A
80
81 # This link must precisely start with TZDIR followed by a slash. radar:13532660
82 ln -hfs "/var/db/timezone/zoneinfo/${LOCALTIME}" "${PRIVATEDIR}/var/db/timezone/localtime"
9726c137 83 ;;
cf37c299 84macosx|bridge*)
aaff5f01
A
85 mkdir -p "${PRIVATEDIR}/etc"
86 ln -hfs "/usr/share/zoneinfo/${LOCALTIME}" "${PRIVATEDIR}/etc/localtime"
9726c137
A
87 ;;
88*)
cf37c299 89 echo "Unsupported platform: $ACTUAL_PLATFORM_NAME"
9726c137
A
90 exit 1
91 ;;
92esac
aaff5f01
A
93
94rm -f "${VERSIONFILE}"
95echo ${DATVERS} > "${VERSIONFILE}"
96chmod 444 "${VERSIONFILE}"
97touch "${ZONEINFO}"
98touch "${PRIVATEDIR}"
99