blob: c5c97d9c1ba5054d41e165d3e701e2bad5edfca5 [file] [log] [blame]
#!/usr/bin/env bash
set -euo pipefail
# Our local user needs write access to /dev/kvm (best accomplished by
# adding your user to the kvm group).
if ! touch /dev/kvm; then
echo "Cannot write to /dev/kvm - please verify permissions."
exit 1
fi
# The KVM module needs to be loaded, since our container is unprivileged
# and won't be able to do it itself.
if ! [[ -d /sys/module/kvm ]]; then
echo "kvm module not loaded - please modprobe kvm"
exit 1
fi
# Rebuild base image
podman build -t monogon-builder build/ci
# Keep this in sync with ci.sh:
podman pod create --name monogon
# Mount bazel root to identical paths inside and outside the container.
# This caches build state even if the container is destroyed, and
BAZEL_ROOT=${HOME}/.cache/bazel-monogon
mkdir -p ${BAZEL_ROOT}
# The Bazel plugin injects a Bazel repository into the sync command line,
# We need to copy the aspect repository and apply a custom patch.
# TODO(leo): the IntelliJ path changed to ~/.config on new setups, we should look for that as well
IJ_HOME=$(echo ${HOME}/.IntelliJIdea* | tr ' ' '\n' | sort | tail -n 1)
ASPECT_ORIG=${IJ_HOME}/config/plugins/ijwb/aspect
ASPECT_PATH=${BAZEL_ROOT}/ijwb_aspect
if [[ -d "$IJ_HOME" ]]; then
echo "IntelliJ found, copying aspect file to Bazel root"
rm -rf "$ASPECT_PATH"
cp -r "$ASPECT_ORIG" "$ASPECT_PATH"
patch -d "$ASPECT_PATH" -p1 < scripts/patches/bazel_intellij_aspect_filter.patch
fi
podman run -it -d \
-v $(pwd):$(pwd):z \
-w $(pwd) \
--volume=${BAZEL_ROOT}:${BAZEL_ROOT} \
--device /dev/kvm \
--privileged \
--pod monogon \
--name=monogon-dev \
--net=host \
monogon-builder