#!/bin/bash # Run with no arguments from any directory, with no special setup required. # Abort if any command returns an error exit status, or if an undefined # variable is used. set -e set -u echo "Looking for bionic..." bionic_dir=$(cd $(dirname $0)/../../.. && pwd) bionic_zoneinfo_dir=$bionic_dir/libc/zoneinfo bionic_zoneinfo_tools_dir=$bionic_dir/libc/tools/zoneinfo if [[ ! -d "$bionic_zoneinfo_dir" || ! -d "$bionic_zoneinfo_tools_dir" ]]; then echo "Can't find bionic's zoneinfo directories!" exit 1 fi echo "Switching to temporary directory..." temp_dir=`mktemp -d` cd $temp_dir trap "rm -rf $temp_dir; exit" INT TERM EXIT # URL from "Sources for Time Zone and Daylight Saving Time Data" # http://www.twinsun.com/tz/tz-link.htm echo "Looking for new tzdata..." wget -N --no-verbose 'ftp://elsie.nci.nih.gov/pub/tzdata*.tar.gz' zoneinfo_version_file=$bionic_zoneinfo_dir/zoneinfo.version if [ -f "$zoneinfo_version_file" ]; then current_version=tzdata`sed s/\n// < $zoneinfo_version_file` else current_version=missing fi latest_archive=`ls -r -v tzdata*.tar.gz | head -n1` latest_version=`basename $latest_archive .tar.gz` if [ "$current_version" == "$latest_version" ]; then echo "You already have the latest tzdata ($latest_version)!" exit 1 fi echo "Extracting $latest_version..." mkdir $latest_version tar -C $latest_version -zxf $latest_archive echo "Compiling $latest_version..." mkdir data for i in \ africa \ antarctica \ asia \ australasia \ etcetera \ europe \ factory \ northamerica \ solar87 \ solar88 \ solar89 \ southamerica do zic -d data $latest_version/$i done echo "Compacting $latest_version..." ( cat $latest_version/* | grep '^Link' | awk '{print $1, $2, $3}' ( cat $latest_version/* | grep '^Zone' | awk '{print $2}' cat $latest_version/* | grep '^Link' | awk '{print $3}' ) | LC_ALL="C" sort ) | grep -v Riyadh8 > setup javac -d . \ $bionic_zoneinfo_tools_dir/ZoneCompactor.java \ $bionic_zoneinfo_tools_dir/ZoneInfo.java java ZoneCompactor setup data echo "Updating bionic to $latest_version..." mv zoneinfo.dat zoneinfo.idx $bionic_zoneinfo_dir echo $latest_version | sed 's/tzdata//' > $bionic_zoneinfo_dir/zoneinfo.version