forked from hermit-os/kernel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
65 lines (62 loc) · 3.04 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
language: rust
branches:
only:
# This is where pull requests from "bors r+" are built.
- staging
# This is where pull requests from "bors try" are built.
- trying
# Uncomment this to enable building pull requests.
- master
rust:
- nightly
os: linux
dist: bionic
cache:
cargo: true # This caches $HOME/.cargo and $TRAVIS_BUILD_DIR/target (The latter is not used here)
before_install:
- sudo apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- sudo adduser $USER libvirt
- sudo adduser $USER kvm
- cargo install cargo-download
- rustup component add rust-src
- rustup component add llvm-tools-preview
- cargo install uhyve
install:
- ls -l
- if [ -d "$HOME/tmp_libhermit-rs" ]; then rm -rf $HOME/tmp_libhermit-rs; fi
- mkdir $HOME/tmp_libhermit-rs
- shopt -s dotglob nullglob && mv ./* $HOME/tmp_libhermit-rs
# If for some reason target exists (due to a bad cache) then delete it.
- if [ -d "$HOME/tmp_libhermit-rs/target" ]; then rm -rf $HOME/tmp_libhermit-rs/target; fi
- git clone https://github.com/hermitcore/rusty-hermit.git
- cd rusty-hermit
- echo "rusty-hermit at commit $(git rev-parse HEAD)"
# Ensure that libhermit-rs is empty - This shouldn't be necessary since we don't initialize the submodules
# But let's do it anyway to be safe
- if [ -d "$TRAVIS_BUILD_DIR/rusty-hermit/libhermit-rs" ]; then rm -rf $TRAVIS_BUILD_DIR/rusty-hermit/libhermit-rs; fi
- mkdir $TRAVIS_BUILD_DIR/rusty-hermit/libhermit-rs
- shopt -s dotglob nullglob && mv $HOME/tmp_libhermit-rs/* $TRAVIS_BUILD_DIR/rusty-hermit/libhermit-rs/.
- ls -l --all libhermit-rs
- rustc --version
- cargo --version
- uhyve --version
jobs:
include:
- stage: Test
name: "Test Debug build"
script:
- cd $TRAVIS_BUILD_DIR/rusty-hermit
- cargo build -Z build-std=std,core,alloc,panic_abort --target x86_64-unknown-hermit
# used to get terminal with new groups permissions while preserving own user
- sudo -E sudo -u $USER -E bash -c "HERMIT_VERBOSE=1 $HOME/.cargo/bin/uhyve target/x86_64-unknown-hermit/debug/rusty_demo"
- sudo -E sudo -u $USER -E bash -c "HERMIT_VERBOSE=1 HERMIT_CPUS=2 $HOME/.cargo/bin/uhyve target/x86_64-unknown-hermit/debug/rusty_demo"
- name: "Test Release Build"
script:
- cd $TRAVIS_BUILD_DIR/rusty-hermit
- RUSTFLAGS="-Clinker-plugin-lto" cargo build -Z build-std=std,core,alloc,panic_abort --target x86_64-unknown-hermit --release
- sudo -E sudo -u $USER -E bash -c "HERMIT_VERBOSE=1 $HOME/.cargo/bin/uhyve target/x86_64-unknown-hermit/release/rusty_demo"
- sudo -E sudo -u $USER -E bash -c "HERMIT_VERBOSE=1 HERMIT_CPUS=2 $HOME/.cargo/bin/uhyve target/x86_64-unknown-hermit/release/rusty_demo"
- name: "Integration Tests (experimental)"
script:
- cd $TRAVIS_BUILD_DIR/rusty-hermit/libhermit-rs
- sudo -E sudo -u $USER -E bash -c "$HOME/.cargo/bin/cargo test --tests --no-fail-fast -Z build-std=core,alloc --target x86_64-unknown-hermit-kernel -- --uhyve_path=$HOME/.cargo/bin/uhyve"