#!/bin/bash
#
# Build file to set up and run tests based on distribution archive

set -eux

# Change to repo root
cd $(dirname $0)/../../..

#
# Update git submodules
#
git submodule update --init --recursive

#
# Build distribution archive
#
# TODO: this should use Bazel-built dist archives.
date ; ./autogen.sh
date ; ./configure
date ; make dist
date

DIST_ARCHIVE=( $(ls protobuf-*.tar.gz) )
if (( ${#DIST_ARCHIVE[@]} != 1 )); then
  echo >&2 "Distribution archive not found. ${#DIST_ARCHIVE[@]} matches:"
  echo >&2 "${DIST_ARCHIVE[@]}"
  exit 1
fi

#
# Check for all expected files
#
kokoro/common/check_missing_dist_files.sh ${DIST_ARCHIVE}

#
# Extract to a temporary directory
#
if [[ -z ${DIST_WORK_ROOT:-} ]]; then
  # If you want to preserve the extracted sources, set the DIST_WORK_ROOT
  # environment variable to an existing directory that should be used.
  DIST_WORK_ROOT=$(mktemp -d)
  function cleanup_work_root() {
    echo "Cleaning up temporary directory ${DIST_WORK_ROOT}..."
    rm -rf ${DIST_WORK_ROOT}
  }
  trap cleanup_work_root EXIT
fi

tar -C ${DIST_WORK_ROOT} --strip-components=1 -axf ${DIST_ARCHIVE}

#
# Run tests using extracted sources
#
SOURCE_DIR=${DIST_WORK_ROOT} \
CMAKE_GENERATOR=Ninja \
CTEST_PARALLEL_LEVEL=$(nproc) \
kokoro/common/cmake.sh

echo "PASS"
