#!/usr/bin/env bash

# Copyright 2023 Uber Technologies, Inc.
# Licensed under the MIT License

set -xeuo pipefail

cache_prefix="${HERMETIC_CC_TOOLCHAIN_CACHE_PREFIX:-/tmp/zig-cache}"

# check a very hermetic setup with a single target. Re-building all of
# them takes a long time, so using only one. If we ever decide to build all
# targets, we will need to exclude Go, since go dynamically links to glibc on
# linux.

echo "--- build a single target with very hermetic sandbox"
tools/bazel build "$@" \
    --experimental_use_hermetic_linux_sandbox \
    --sandbox_writable_path="$cache_prefix" \
    --sandbox_add_mount_pair=/proc \
    //test/c:which_libc

# then test everything else with the standard sandbox
echo "--- bazel test $* ..."
tools/bazel test "$@" ...

echo "--- ensure github.com/ziglang/zig/issues/13050 does not regress"
find "$cache_prefix" \
    -name mutex_destructor.o -execdir file '{}' \; \
    | sort \
    | uniq -c \
    | sort -rn > /tmp/got_cache

diff -u ci/testdata/want_cache /tmp/got_cache || {
    >&2 echo "ERROR: unexpected artifacts. This is TODO."
    # TODO: Go 1.20 regressed this. Find a way to re-enable. See README.
    #exit 1
    exit 0
}