#!/bin/bash

set -e
set -x

if [[ ${KOKORO_JOB_NAME} =~ release$ ]]; then
  readonly BUILD_TYPE=release
elif [[ ${KOKORO_JOB_NAME} =~ continuous$ ]]; then
  readonly BUILD_TYPE=continuous
elif [[ ${KOKORO_JOB_NAME} =~ headless$ ]]; then
  readonly BUILD_TYPE=headless
else
  echo "Invalid job name: ${KOKORO_JOB_NAME}" && exit 1
fi

# Symlink the Makefile, like it would be if repo checked this out.
# Otherwise, sourcing setup.sh doesn't work as expected.
ln -sfr git/continuous-build/build/Makefile git/continuous-build/Makefile

# Sourcing this only works in the directory above build...
pushd git/continuous-build
source build/setup.sh
popd

export IS_GLINUX=true
export TARBALL_FETCH_ROOT_DIRECTORY=${KOKORO_GFILE_DIR}
export PREBUILT_MODULES_ROOT=${KOKORO_GFILE_DIR}
export PREBUILT_DOCKER_ROOT=${KOKORO_GFILE_DIR}
export FETCH_PBUILDER_DIRECTORY=${KOKORO_GFILE_DIR}
export ROOTFS_REVISION=.
export FETCH_PACKAGES=false

# Install haveged on the host to provide extra entropy.
sudo apt-get install -y haveged
sudo /etc/init.d/haveged start

case "${BUILD_TYPE}" in
  headless)
    export HEADLESS_BUILD=true
    ;;
esac

ARCHES="armhf arm64"

for arch in ${ARCHES}
do
  export USERSPACE_ARCH=${arch}
  m docker-all
  m docker-sdcard
  unset USERSPACE_ARCH
done

m docker-recovery

pushd ${ROOTDIR}
python3 ${ROOTDIR}/build/create_release_manifest.py \
  -i ${ROOTDIR}/manifest/default.xml \
  -o ${PRODUCT_OUT}/manifest.xml
popd

ARTIFACTS+="${ROOTDIR}/board/flash.sh "
ARTIFACTS+="${PRODUCT_OUT}/u-boot.imx "
ARTIFACTS+="${PRODUCT_OUT}/manifest.xml "
ARTIFACTS+="${PRODUCT_OUT}/recovery.img "
ARTIFACTS+="${PRODUCT_OUT}/partition-table-8gb.img "
ARTIFACTS+="${PRODUCT_OUT}/partition-table-16gb.img "
ARTIFACTS+="${PRODUCT_OUT}/partition-table-64gb.img "

for arch in ${ARCHES}
do
  ARTIFACTS+="${PRODUCT_OUT}/boot_${arch}.img "
  ARTIFACTS+="${PRODUCT_OUT}/rootfs_${arch}.img "
  ARTIFACTS+="${PRODUCT_OUT}/sdcard_${arch}.img "
done

# Check existence of artifacts, exit if one is missing
for artifact in ${ARTIFACTS}
do
  if [[ ! -f ${artifact} ]]; then
    echo "${artifact} not found!"
    exit 1
  fi
done

# Copy all artifacts to KOKORO_ARTIFACTS_DIR
for artifact in ${ARTIFACTS}
do
  cp ${artifact} ${KOKORO_ARTIFACTS_DIR}
done

# Clear executable bit from artifacts
chmod -x ${KOKORO_ARTIFACTS_DIR}/*
