mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-07-15 13:47:14 +00:00
By pinning the OVMF version, we will be able to update the EDK2 fork with a new version without potentially breaking our Cloud Hypervisor CI. Once the new version is ready on the EDK2 fork, we'll be able to update Cloud Hypervisor codebase, replacing the fixed version with the latest, as well as replacing OVMF.fd with CLOUDHV.fd. This is because we'll start building from the new target CloudHvX64. Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
61 lines
1.7 KiB
Bash
Executable File
61 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -x
|
|
|
|
source $HOME/.cargo/env
|
|
source $(dirname "$0")/test-util.sh
|
|
|
|
process_common_args "$@"
|
|
# For now these values are default for kvm
|
|
features=""
|
|
|
|
if [ "$hypervisor" = "mshv" ] ; then
|
|
features="--no-default-features --features mshv,common"
|
|
fi
|
|
WIN_IMAGE_FILE="/root/workloads/windows-server-2019.raw"
|
|
|
|
WORKLOADS_DIR="/root/workloads"
|
|
OVMF_FW_URL="https://github.com/cloud-hypervisor/edk2/releases/download/ch-e6d6251eb6/OVMF.fd"
|
|
OVMF_FW="$WORKLOADS_DIR/OVMF.fd"
|
|
if [ ! -f "$OVMF_FW" ]; then
|
|
pushd $WORKLOADS_DIR
|
|
time wget --quiet $OVMF_FW_URL || exit 1
|
|
popd
|
|
fi
|
|
|
|
BUILD_TARGET="$(uname -m)-unknown-linux-${CH_LIBC}"
|
|
CFLAGS=""
|
|
TARGET_CC=""
|
|
if [[ "${BUILD_TARGET}" == "x86_64-unknown-linux-musl" ]]; then
|
|
TARGET_CC="musl-gcc"
|
|
CFLAGS="-I /usr/include/x86_64-linux-musl/ -idirafter /usr/include/"
|
|
fi
|
|
|
|
# Check if the images are present
|
|
if [[ ! -f ${WIN_IMAGE_FILE} || ! -f ${OVMF_FW} ]]; then
|
|
echo "Windows image/firmware not present in the host"
|
|
exit 1
|
|
fi
|
|
|
|
# Use device mapper to create a snapshot of the Windows image
|
|
img_blk_size=$(du -b -B 512 ${WIN_IMAGE_FILE} | awk '{print $1;}')
|
|
loop_device=$(losetup --find --show --read-only ${WIN_IMAGE_FILE})
|
|
dmsetup create windows-base --table "0 $img_blk_size linear $loop_device 0"
|
|
dmsetup mknodes
|
|
dmsetup create windows-snapshot-base --table "0 $img_blk_size snapshot-origin /dev/mapper/windows-base"
|
|
dmsetup mknodes
|
|
|
|
cargo build --all --release $features --target $BUILD_TARGET
|
|
strip target/$BUILD_TARGET/release/cloud-hypervisor
|
|
|
|
export RUST_BACKTRACE=1
|
|
|
|
# Only run with 1 thread to avoid tests interfering with one another because
|
|
# Windows has a static IP configured
|
|
time cargo test $features "windows::$test_filter"
|
|
RES=$?
|
|
|
|
dmsetup remove_all -f
|
|
losetup -D
|
|
|
|
exit $RES
|