#!/usr/bin/env bash

# NOTE: This script has been slightly adopted to suite the Apache Arrow / crossbow CI
# 	setup. The next time this is updated to the current version on conda-forge,
#       you will also make this additions afterwards.

# PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here
# will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent
# changes to this script, consider a proposal to conda-smithy so that other feedstocks can also
# benefit from the improvement.

set -xeo pipefail

build_dir=${1}

THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )"
ARROW_ROOT=$(cd "$THISDIR/../../.."; pwd;)
FEEDSTOCK_ROOT=$THISDIR
RECIPE_ROOT=$THISDIR

docker info

# In order for the conda-build process in the container to write to the mounted
# volumes, we need to run with the same id as the host machine, which is
# normally the owner of the mounted volumes, or at least has write permission
export HOST_USER_ID=$(id -u)
# Check if docker-machine is being used (normally on OSX) and get the uid from
# the VM
if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then
    export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u)
fi

if [ -z "$CONFIG" ]; then
    set +x
    FILES=`ls .ci_support/linux_*`
    CONFIGS=""
    for file in $FILES; do
        CONFIGS="${CONFIGS}'${file:12:-5}' or ";
    done
    echo "Need to set CONFIG env variable. Value can be one of ${CONFIGS:0:-4}"
    exit 1
fi

if [ -z "${DOCKER_IMAGE}" ]; then
    SHYAML_INSTALLED="$(shyaml -h || echo NO)"
    if [ "${SHYAML_INSTALLED}" == "NO" ]; then
        echo "WARNING: DOCKER_IMAGE variable not set and shyaml not installed. Falling back to condaforge/linux-anvil-comp7"
        DOCKER_IMAGE="condaforge/linux-anvil-comp7"
    else
        DOCKER_IMAGE="$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 condaforge/linux-anvil-comp7 )"
    fi
fi

mkdir -p "${build_dir}"
DONE_CANARY="${build_dir}/conda-forge-build-done-${CONFIG}"
rm -f "$DONE_CANARY"

if [ -z "${CI}" ]; then
    DOCKER_RUN_ARGS="-it "
fi

export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}"
docker run ${DOCKER_RUN_ARGS} \
           --shm-size=2G \
           -v "${ARROW_ROOT}":/arrow:rw,z \
           -v "${build_dir}":/build:rw \
           -e FEEDSTOCK_ROOT="/arrow/dev/tasks/conda-recipes" \
           -e RECIPE_ROOT="/arrow/dev/tasks/conda-recipes" \
           -e CONFIG \
           -e R_CONFIG \
           -e HOST_USER_ID \
           -e UPLOAD_PACKAGES \
           -e ARROW_VERSION \
           -e CI \
           $DOCKER_IMAGE \
           bash /arrow/dev/tasks/conda-recipes/build_steps.sh /build

# verify that the end of the script was reached
test -f "$DONE_CANARY"
