#!/bin/bash
# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

set -ex

build_guest_tools() {
    local src_root="${KOKORO_ARTIFACTS_DIR}"/git/cros-container-guest-tools
    local result_dir="${src_root}"/guest_debs
    mkdir -p "${result_dir}"

    cd "${src_root}"

    curl -sSL https://bazel.build/bazel-release.pub.gpg \
        | gpg --dearmor \
        | sudo tee /etc/apt/trusted.gpg.d/bazel.gpg > /dev/null

    sudo tee /etc/apt/sources.list.d/bazel.list > /dev/null << EOF
deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/bazel.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8
EOF
    sudo apt-get -q update
    sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install \
        bazel-4.2.2 python-is-python3

    # Build all targets.
    bazel-4.2.2 build //cros-debs:debs

    # Copy resulting debs to results directory.
    chmod 644 bazel-bin/cros-debs/*/*.deb
    cp -r bazel-bin/cros-debs/* "${result_dir}"
}

# Builds one of the mesa-related tools. Usage is:
#     build_mesa_shard <distro> <architecture> [<package> ...]
# Which will build <package> for the <distro> debian version with the given
# processor <architecture>.
build_mesa_shard() {
    [[ $# -ge 3 ]]
    local dist="$1"
    local arch="$2"
    shift 2
    local pkg="$@"
    local base_image="buildmesa_${dist}"
    local base_image_tarball="${KOKORO_GFILE_DIR}"/"${base_image}".tar.xz

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json > /dev/null << EOF
{
    "data-root": "/tmpfs/docker"
}
EOF
    sudo apt-get -q update
    sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y install docker.io

    if [[ -z $(sudo docker images -q "${base_image}" 2> /dev/null) ]]; then
      sudo docker load -i "${base_image_tarball}"
    fi

    sudo docker run \
      --rm \
      --privileged \
      --volume "${KOKORO_ARTIFACTS_DIR}/${dist}_mesa_debs":/artifacts \
      --volume "${KOKORO_ARTIFACTS_DIR}/git/mesa":/scratch/mesa \
      --env ARCHES="${arch}" \
      --env PACKAGES="${pkg}" \
      "${base_image}" \
      ./sync-and-build.sh
}
