#!/usr/bin/env bash
set -euo pipefail

# Tell wrapper to not touch sandbox
export MONOGON_SYSROOT_REBUILD=1

# Packages to install. Make sure to document the reason for including each package.
PKGS=(
  # Common base toolchain used across the tree.
  "binutils"
  "gcc"
  "python3"
  "python-unversioned-command"
  "glibc-static"

  # Required to build static CGO binaries
  # see monogon-dev/monogon#192
  "libstdc++-static"

  # Kernel build
  "flex"
  "bison"
  "elfutils-libelf-devel"
  "openssl-devel"
  "diffutils"
  "bc"
  "perl"
  "lz4"

  # EDK2
  "libuuid-devel"
  "util-linux"
  "nasm"
  "acpica-tools"

  # patch tool, as used by gazelle
  "patch"

  # TPM emulator for testing
  "swtpm-tools"

  # Clang/LLVM (for EFI toolchain)
  "clang"
  "llvm"
  "lld"

  # image_gcp rule
  "tar"

  # ktest
  "qemu-system-x86-core"

  # musl-host-gcc
  "rsync"
  "xz"

  # Packages included to stabilize SAT solution when there are equal scores.
  "fedora-release-identity-container"
  "coreutils-single"
  "curl-minimal"
  "libcurl-minimal"
  "glibc-langpack-en"
  "selinux-policy-minimum"
)

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
REPO=third_party/sandboxroot/repo.yaml
BAZEL_ARGS="--noworkspace_rc --bazelrc ${DIR}/../../.bazelrc.sandboxroot"

# Fetch latest repository metadata
bazel ${BAZEL_ARGS} run //:bazeldnf -- fetch --repofile $REPO

# Write BUILD.bazel template
cat <<EOF > ${DIR}/BUILD.bazel.in
load("@bazeldnf//:deps.bzl", "rpmtree")
load("@bazeldnf//:def.bzl", "bazeldnf")

bazeldnf(
    name = "sandboxroot",
    command = "sandbox",
    tar = ":sandbox",
)

EOF

echo > ${DIR}/repositories.bzl.in

# Create new sandbox root
bazel ${BAZEL_ARGS} \
  run //:bazeldnf -- rpmtree \
  --repofile third_party/sandboxroot/repo.yaml \
  --name sandbox \
  --nobest \
  --buildfile third_party/sandboxroot/BUILD.bazel.in \
  --workspace third_party/sandboxroot/repositories.bzl.in \
  ${PKGS[@]}

# Verify package signatures
bazel ${BAZEL_ARGS} run //:bazeldnf -- verify \
  --repofile third_party/sandboxroot/repo.yaml \
  --workspace third_party/sandboxroot/repositories.bzl.in

# Write out repositories.bzl and clean up.
#
# Ideally, bazeldnf would support the format natively:
# https://github.com/rmohr/bazeldnf/issues/26
cat <<EOF > ${DIR}/repositories.bzl
load("@bazeldnf//:deps.bzl", "rpm")

def sandbox_dependencies():
$(cat ${DIR}/repositories.bzl.in | sed 's/^/    /')
EOF

mv ${DIR}/BUILD.bazel.in ${DIR}/BUILD.bazel
rm ${DIR}/repositories.bzl.in


# Mirror everything
bazel ${BAZEL_ARGS} \
  run //third_party/sandboxroot/mirror sync