|
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