constellation/bazel/devbuild/prepare_developer_workspace.sh.in
Paul Meyer 2d3999440d bazel: use cache path to execute cli
This way it also works within the bazel container, where the symlinks
that are created won't work, as they are linking to host paths.

Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
2023-07-25 11:44:23 +02:00

74 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# This script is run from the user's Constellation workspace (BUILD_WORKING_DIRECTORY).
# It prepares the workspace by symlinking all required binaries into folder.
###### script header ######
lib=$(realpath @@BASE_LIB@@) || exit 1
stat "${lib}" >> /dev/null || exit 1
yq=$(realpath @@YQ@@)
stat "${yq}" >> /dev/null
# shellcheck source=../sh/lib.bash
if ! source "${lib}"; then
echo "Error: could not find import"
exit 1
fi
bootstrapper=$(realpath @@BOOTSTRAPPER@@)
stat "${bootstrapper}" >> /dev/null
upgrade_agent=$(realpath @@UPGRADE_AGENT@@)
stat "${upgrade_agent}" >> /dev/null
cli=$(realpath @@CLI@@)
stat "${cli}" >> /dev/null
cdbg=$(realpath @@CDBG@@)
stat "${cdbg}" >> /dev/null
container_sums=$(realpath @@CONTAINER_SUMS@@)
stat "${container_sums}" >> /dev/null
edition=$(cat @@EDITION@@)
cd "${BUILD_WORKING_DIRECTORY}"
###### script body ######
replace_prefix() {
local host_cache=$1
local builder_cache=$2
local dir=$3
if [[ ${dir#"${builder_cache}"} == "${dir}" ]]; then
echo "${dir}"
return
fi
relpath=${dir#"${builder_cache}"}
realpath -m "${host_cache}/${relpath}"
}
# Set HOST_CACHE when running in a container with mounted cache.
host_cache="${HOST_CACHE:-${HOME}/.cache}"
builder_cache="${HOME}/.cache"
if [[ $# -eq 0 ]]; then
workdir="."
else
workdir="$1"
fi
echo "Using ${edition} cli edition"
ln -sf "$(replace_prefix "${host_cache}" "${builder_cache}" "${bootstrapper}")" "${workdir}/bootstrapper"
ln -sf "$(replace_prefix "${host_cache}" "${builder_cache}" "${upgrade_agent}")" "${workdir}/upgrade-agent"
ln -sf "$(replace_prefix "${host_cache}" "${builder_cache}" "${cdbg}")" "${workdir}/cdbg"
ln -sf "$(replace_prefix "${host_cache}" "${builder_cache}" "${container_sums}")" "${workdir}/container_sums.sha256"
ln -sf "$(replace_prefix "${host_cache}" "${builder_cache}" "${cli}")" "${workdir}/constellation"
build_version=$("${cli}" version | grep ^Version: | awk '{print $2}')
if [[ ! -f "${workdir}/constellation-conf.yaml" ]]; then
echo "constellation-conf.yaml not present in workspace"
echo "Build version: ${build_version}"
else
${yq} -i eval ".microserviceVersion=\"${build_version}\"" ./constellation-conf.yaml
echo "Microservice version updated to ${build_version} in constellation-conf.yaml"
fi