diff options
Diffstat (limited to 'ci_tools/run_tz_master_env.sh')
-rwxr-xr-x | ci_tools/run_tz_master_env.sh | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/ci_tools/run_tz_master_env.sh b/ci_tools/run_tz_master_env.sh new file mode 100755 index 0000000..059c631 --- /dev/null +++ b/ci_tools/run_tz_master_env.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash + +### +# Runs the 'tz' tox test environment, which builds the repo against the master +# branch of the upstream tz database project. + +set -e + +TMP_DIR=${1} +REPO_DIR=${2} +ORIG_DIR=$(pwd) +CITOOLS_DIR=$REPO_DIR/ci_tools + +REPO_TARBALL=${REPO_DIR}/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz +TMP_TARBALL=${TMP_DIR}/dateutil-zoneinfo.tar.gz + +UPSTREAM_URL="https://github.com/eggert/tz.git" + +function cleanup { + # Since this script modifies the original repo, whether or not + # it fails we need to restore the original file so as to not + # overwrite the user's local changes. + echo "Cleaning up." + if [ -f $TMP_TARBALL ]; then + cp -p $TMP_TARBALL $REPO_TARBALL + fi +} + +trap cleanup EXIT + +# Work in a temporary directory +cd $TMP_DIR + +# Clone or update the repo +DIR_EXISTS=false +if [ -d tz ]; then + cd tz + if [[ $(git remote get-url origin) == ${UPSTREAM_URL} ]]; then + git fetch origin master + git reset --hard origin/master + DIR_EXISTS=true + else + cd .. + rm -rf tz + fi +fi + +if [ "$DIR_EXISTS" = false ]; then + git clone ${UPSTREAM_URL} + cd tz +fi + +# Get the version +make version +VERSION=$(cat version) +TARBALL_NAME=tzdata${VERSION}.tar.gz + +# Make the tzdata tarball - deactivate errors because +# I don't know how to make just the .tar.gz and I don't +# care if the others fail +set +e +make traditional_tarballs +set -e + +mv $TARBALL_NAME $ORIG_DIR + +# Install everything else +make TOPDIR=$TMP_DIR/tzdir install + +# +# Make the zoneinfo tarball +# +cd $ORIG_DIR + +# Put the latest version of zic on the path +PATH=$TMP_DIR/tzdir/usr/sbin:${PATH} + +# Stash the old zoneinfo file in the temporary directory +mv $REPO_TARBALL $TMP_TARBALL + + +# Make the metadata file +ZONEFILE_METADATA_NAME=zonefile_metadata_master.json +${CITOOLS_DIR}/make_zonefile_metadata.py \ + $TARBALL_NAME \ + $VERSION \ + $ZONEFILE_METADATA_NAME + +python ${REPO_DIR}/updatezinfo.py $ZONEFILE_METADATA_NAME + +# Run the tests +python -m pytest ${REPO_DIR}/dateutil/test + |