summaryrefslogtreecommitdiffstats
path: root/system_cmds/zic.tproj/install_zoneinfo.sh
diff options
context:
space:
mode:
Diffstat (limited to 'system_cmds/zic.tproj/install_zoneinfo.sh')
-rwxr-xr-xsystem_cmds/zic.tproj/install_zoneinfo.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/system_cmds/zic.tproj/install_zoneinfo.sh b/system_cmds/zic.tproj/install_zoneinfo.sh
new file mode 100755
index 0000000..50a9deb
--- /dev/null
+++ b/system_cmds/zic.tproj/install_zoneinfo.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+set -x
+
+if [ -n "$RC_BRIDGE" ]; then
+ ACTUAL_PLATFORM_NAME="bridgeos"
+else
+ ACTUAL_PLATFORM_NAME="${PLATFORM_NAME}"
+fi
+
+# This sets up the paths for the default set of zoneinfo files
+# On iOS, watchOS, and tvOS, this is handled by tzd in coordination with
+# launchd on first boot.
+# On macOS, the directory needs to be setup # during mastering for SIP
+# protection, and the symlink for the BaseSystem.
+# On bridgeOS tzd doesn't exist, so needs this all setup statically.
+default_zoneinfo_setup()
+{
+ mkdir -p "${DSTROOT}/private/var/db/timezone"
+ chmod 555 "${DSTROOT}/private/var/db/timezone"
+ ln -hfs "/usr/share/zoneinfo.default" "${DSTROOT}/private/var/db/timezone/zoneinfo"
+}
+
+case "$ACTUAL_PLATFORM_NAME" in
+iphone*|appletv*|watch*|macosx)
+ ditto "${BUILT_PRODUCTS_DIR}/zoneinfo" "${DSTROOT}/usr/share/zoneinfo.default"
+ ln -hfs "/var/db/timezone/zoneinfo" "${DSTROOT}/usr/share/zoneinfo"
+ case "$ACTUAL_PLATFORM_NAME" in
+ macosx)
+ default_zoneinfo_setup
+ ;;
+ esac
+ ;;
+bridge*)
+ # Since bridgeOS lacks any mechanism to change timezones (currently),
+ # and in the interest of saving space, only GMT is installed.
+ mkdir -p "${DSTROOT}/usr/share/zoneinfo.default"
+ chmod 555 "${DSTROOT}/usr/share/zoneinfo.default"
+ ditto "${BUILT_PRODUCTS_DIR}/zoneinfo/GMT" "${DSTROOT}/usr/share/zoneinfo.default/GMT"
+ default_zoneinfo_setup
+ ;;
+*)
+ echo "Unsupported platform: $ACTUAL_PLATFORM_NAME"
+ exit 1
+ ;;
+esac
+