|
1 | 1 | #!/bin/bash |
2 | | -set -x |
| 2 | +set -xeuf |
3 | 3 |
|
4 | | -source $HOME/.cargo/env |
| 4 | +source "${CARGO_HOME:-$HOME/.cargo}/env" |
5 | 5 |
|
6 | | -CH_VERSION="v0.8.0" |
7 | | -rm cloud-hypervisor |
8 | | -wget --quiet "https://github.com/cloud-hypervisor/cloud-hypervisor/releases/download/$CH_VERSION/cloud-hypervisor" || exit 1 |
9 | | -chmod +x cloud-hypervisor |
| 6 | +XBUILD_VERSION="0.5.34" |
| 7 | +cargo install cargo-xbuild --version $XBUILD_VERSION |
| 8 | + |
| 9 | +rustup component add rust-src |
| 10 | +cargo xbuild --release --target target.json |
10 | 11 |
|
11 | | -WORKLOADS_DIR="$HOME/workloads" |
12 | | -mkdir -p "$WORKLOADS_DIR" |
| 12 | +CH_VERSION="v0.8.0" |
| 13 | +CH_URL="https://github.com/cloud-hypervisor/cloud-hypervisor/releases/download/$CH_VERSION/cloud-hypervisor" |
| 14 | +CH_PATH="./resources/cloud-hypervisor" |
| 15 | +if [ ! -f "$CH_PATH" ]; then |
| 16 | + wget --quiet $CH_URL -O $CH_PATH |
| 17 | + chmod +x $CH_PATH |
| 18 | +fi |
13 | 19 |
|
| 20 | +IMAGES_DIR="./resources/images" |
| 21 | +mkdir -p "$IMAGES_DIR" |
14 | 22 |
|
15 | 23 | CLEAR_OS_IMAGE_NAME="clear-31311-cloudguest.img" |
16 | 24 | CLEAR_OS_IMAGE_URL="https://cloudhypervisorstorage.blob.core.windows.net/images/$CLEAR_OS_IMAGE_NAME" |
17 | | -CLEAR_OS_IMAGE="$WORKLOADS_DIR/$CLEAR_OS_IMAGE_NAME" |
| 25 | +CLEAR_OS_IMAGE="$IMAGES_DIR/$CLEAR_OS_IMAGE_NAME" |
18 | 26 | if [ ! -f "$CLEAR_OS_IMAGE" ]; then |
19 | | - pushd $WORKLOADS_DIR |
20 | | - wget --quiet $CLEAR_OS_IMAGE_URL || exit 1 |
| 27 | + pushd $IMAGES_DIR |
| 28 | + wget --quiet $CLEAR_OS_IMAGE_URL |
21 | 29 | popd |
22 | 30 | fi |
23 | 31 |
|
24 | 32 | BIONIC_OS_IMAGE_NAME="bionic-server-cloudimg-amd64.img" |
25 | 33 | BIONIC_OS_IMAGE_URL="https://cloudhypervisorstorage.blob.core.windows.net/images/$BIONIC_OS_IMAGE_NAME" |
26 | | -BIONIC_OS_IMAGE="$WORKLOADS_DIR/$BIONIC_OS_IMAGE_NAME" |
| 34 | +BIONIC_OS_IMAGE="$IMAGES_DIR/$BIONIC_OS_IMAGE_NAME" |
27 | 35 | if [ ! -f "$BIONIC_OS_IMAGE" ]; then |
28 | | - pushd $WORKLOADS_DIR |
29 | | - wget --quiet $BIONIC_OS_IMAGE_URL || exit 1 |
| 36 | + pushd $IMAGES_DIR |
| 37 | + wget --quiet $BIONIC_OS_IMAGE_URL |
30 | 38 | popd |
31 | 39 | fi |
32 | 40 |
|
33 | 41 | BIONIC_OS_RAW_IMAGE_NAME="bionic-server-cloudimg-amd64-raw.img" |
34 | | -BIONIC_OS_RAW_IMAGE="$WORKLOADS_DIR/$BIONIC_OS_RAW_IMAGE_NAME" |
| 42 | +BIONIC_OS_RAW_IMAGE="$IMAGES_DIR/$BIONIC_OS_RAW_IMAGE_NAME" |
35 | 43 | if [ ! -f "$BIONIC_OS_RAW_IMAGE" ]; then |
36 | | - pushd $WORKLOADS_DIR |
37 | | - qemu-img convert -p -f qcow2 -O raw $BIONIC_OS_IMAGE_NAME $BIONIC_OS_RAW_IMAGE_NAME || exit 1 |
| 44 | + pushd $IMAGES_DIR |
| 45 | + qemu-img convert -p -f qcow2 -O raw $BIONIC_OS_IMAGE_NAME $BIONIC_OS_RAW_IMAGE_NAME |
38 | 46 | popd |
39 | 47 | fi |
40 | 48 |
|
41 | 49 |
|
42 | 50 | FOCAL_OS_IMAGE_NAME="focal-server-cloudimg-amd64.img" |
43 | 51 | FOCAL_OS_IMAGE_URL="https://cloudhypervisorstorage.blob.core.windows.net/images/$FOCAL_OS_IMAGE_NAME" |
44 | | -FOCAL_OS_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_IMAGE_NAME" |
| 52 | +FOCAL_OS_IMAGE="$IMAGES_DIR/$FOCAL_OS_IMAGE_NAME" |
45 | 53 | if [ ! -f "$FOCAL_OS_IMAGE" ]; then |
46 | | - pushd $WORKLOADS_DIR |
47 | | - wget --quiet $FOCAL_OS_IMAGE_URL || exit 1 |
| 54 | + pushd $IMAGES_DIR |
| 55 | + wget --quiet $FOCAL_OS_IMAGE_URL |
48 | 56 | popd |
49 | 57 | fi |
50 | 58 |
|
51 | 59 | FOCAL_OS_RAW_IMAGE_NAME="focal-server-cloudimg-amd64-raw.img" |
52 | | -FOCAL_OS_RAW_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_RAW_IMAGE_NAME" |
| 60 | +FOCAL_OS_RAW_IMAGE="$IMAGES_DIR/$FOCAL_OS_RAW_IMAGE_NAME" |
53 | 61 | if [ ! -f "$FOCAL_OS_RAW_IMAGE" ]; then |
54 | | - pushd $WORKLOADS_DIR |
55 | | - qemu-img convert -p -f qcow2 -O raw $FOCAL_OS_IMAGE_NAME $FOCAL_OS_RAW_IMAGE_NAME || exit 1 |
| 62 | + pushd $IMAGES_DIR |
| 63 | + qemu-img convert -p -f qcow2 -O raw $FOCAL_OS_IMAGE_NAME $FOCAL_OS_RAW_IMAGE_NAME |
56 | 64 | popd |
57 | 65 | fi |
58 | 66 |
|
59 | | -cargo install cargo-xbuild |
60 | | -rustup component add rust-src |
61 | | -cargo xbuild --release --target target.json |
| 67 | +# Add the user to the kvm group (if not already in it), so they can run VMs |
| 68 | +id -nGz "$USER" | grep -qzxF kvm || sudo adduser "$USER" kvm |
62 | 69 |
|
63 | | -sudo adduser $USER kvm |
64 | 70 | newgrp kvm << EOF |
65 | 71 | export RUST_BACKTRACE=1 |
66 | 72 | cargo test --features "integration_tests" -- --test-threads=1 test_boot |
|
0 commit comments