summaryrefslogtreecommitdiffstats
path: root/system_cmds/zic.tproj/generate_zoneinfo.sh
diff options
context:
space:
mode:
authorCameron Katri <me@cameronkatri.com>2021-05-09 14:20:58 -0400
committerCameron Katri <me@cameronkatri.com>2021-05-09 14:20:58 -0400
commit5fd83771641d15c418f747bd343ba6738d3875f7 (patch)
tree5abf0f78f680d9837dbd93d4d4c3933bb7509599 /system_cmds/zic.tproj/generate_zoneinfo.sh
downloadapple_cmds-5fd83771641d15c418f747bd343ba6738d3875f7.tar.gz
apple_cmds-5fd83771641d15c418f747bd343ba6738d3875f7.tar.zst
apple_cmds-5fd83771641d15c418f747bd343ba6738d3875f7.zip
Import macOS userland
adv_cmds-176 basic_cmds-55 bootstrap_cmds-116.100.1 developer_cmds-66 diskdev_cmds-667.40.1 doc_cmds-53.60.1 file_cmds-321.40.3 mail_cmds-35 misc_cmds-34 network_cmds-606.40.1 patch_cmds-17 remote_cmds-63 shell_cmds-216.60.1 system_cmds-880.60.2 text_cmds-106
Diffstat (limited to 'system_cmds/zic.tproj/generate_zoneinfo.sh')
-rwxr-xr-xsystem_cmds/zic.tproj/generate_zoneinfo.sh105
1 files changed, 105 insertions, 0 deletions
diff --git a/system_cmds/zic.tproj/generate_zoneinfo.sh b/system_cmds/zic.tproj/generate_zoneinfo.sh
new file mode 100755
index 0000000..2f25d1c
--- /dev/null
+++ b/system_cmds/zic.tproj/generate_zoneinfo.sh
@@ -0,0 +1,105 @@
+#!/bin/sh
+set -e
+set -x
+
+printenv | sort
+
+if [ $# -ne 5 ]; then
+ echo "Usage: $0 SRCROOT OBJROOT BUILT_PRODUCTS_DIR SDKROOT PLATFORM_NAME" 1>&2
+ exit 1
+fi
+
+SRCROOT="$1"
+OBJROOT="$2"
+BUILT_PRODUCTS_DIR="$3"
+SDKROOT="$4"
+PLATFORM_NAME="$5"
+
+ZICHOST_SYMROOT="${BUILT_PRODUCTS_DIR}/zic_host-sym"
+ZICHOST_DSTROOT="${BUILT_PRODUCTS_DIR}/zic_host-dst"
+ZICHOST="${ZICHOST_DSTROOT}/zic_host"
+
+LOCALTIME="US/Pacific"
+POSIXRULES="US/Pacific"
+
+ZONEINFO="${BUILT_PRODUCTS_DIR}/zoneinfo"
+DATFILES="${BUILT_PRODUCTS_DIR}/datfiles"
+PRIVATEDIR="${BUILT_PRODUCTS_DIR}/private"
+
+# ftp://elsie.nci.nih.gov/pub/tzdata*.tar.gz
+# the tzdata*.tar.gz file is automatically unpacked and a version file created
+# /usr/local/share/tz/tzdata*.tar.gz is installed by the TimeZoneData project
+TARBALL="${SDKROOT}"/usr/local/share/tz/latest_tzdata.tar.gz
+if [ ! -L "$TARBALL" ]; then
+ echo "error: ${TARBALL} is not a symbolic link" 1>&2
+ exit 1
+fi
+if [ ! -r "$TARBALL" ]; then
+ echo "error: ${TARBALL} does not point to a valid file" 1>&2
+ exit 1
+fi
+DATVERS=`readlink ${TARBALL} | cut -d. -f1 | sed -e 's/^tzdata//'`
+VERSIONFILE="${ZONEINFO}/+VERSION"
+
+mkdir -p "${DATFILES}"
+mkdir -p "${ZONEINFO}"
+tar zxf "${TARBALL}" -C "${DATFILES}"
+ZONE_FILES="$("${SRCROOT}"/zic.tproj/generate_zone_file_list.sh "${DATFILES}")"
+for tz in ${ZONE_FILES}; do
+ if [ ${tz} = "northamerica" ]; then
+ ARG="-p America/New_York"
+ else
+ ARG=""
+ fi
+ "${ZICHOST}" ${ARG} -L /dev/null -d "${ZONEINFO}" \
+ -y "${DATFILES}/yearistype.sh" "${DATFILES}/${tz}" || exit 1
+done
+
+if [ $? -ne 0 ]; then
+ exit 1
+fi
+
+chmod -R og-w "${ZONEINFO}"
+for f in "zone.tab" "iso3166.tab" "leapseconds"; do
+ install -m 0444 "${DATFILES}/$f" "${ZONEINFO}/$f" || exit 1
+done
+if [ $? -ne 0 ]; then
+ exit 1
+fi
+
+if [ -n "$RC_BRIDGE" ]; then
+ ACTUAL_PLATFORM_NAME="bridgeos"
+else
+ ACTUAL_PLATFORM_NAME="${PLATFORM_NAME}"
+fi
+
+case "$ACTUAL_PLATFORM_NAME" in
+bridge*)
+ LOCALTIME="GMT"
+ ;;
+esac
+
+case "$ACTUAL_PLATFORM_NAME" in
+iphone*|appletv*|watch*|bridge*)
+ mkdir -p "${PRIVATEDIR}/var/db"
+ mkdir -p -m a+rx "${PRIVATEDIR}/var/db/timezone"
+
+ # This link must precisely start with TZDIR followed by a slash. radar:13532660
+ ln -hfs "/var/db/timezone/zoneinfo/${LOCALTIME}" "${PRIVATEDIR}/var/db/timezone/localtime"
+ ;;
+macosx)
+ mkdir -p "${PRIVATEDIR}/etc"
+ ln -hfs "/var/db/timezone/zoneinfo/${LOCALTIME}" "${PRIVATEDIR}/etc/localtime"
+ ;;
+*)
+ echo "Unsupported platform: $ACTUAL_PLATFORM_NAME"
+ exit 1
+ ;;
+esac
+
+rm -f "${VERSIONFILE}"
+echo ${DATVERS} > "${VERSIONFILE}"
+chmod 444 "${VERSIONFILE}"
+touch "${ZONEINFO}"
+touch "${PRIVATEDIR}"
+