sudo: false dist: xenial language: rust rust: nightly-2019-06-15 os: - linux # - osx # too slow and hard to fix, skip it for now cache: cargo: true directories: - $HOME/Library/Caches/Homebrew - $TRAVIS_BUILD_DIR/qemu-4.0.0 addons: homebrew: packages: - qemu env: matrix: - ARCH="riscv64" - ARCH="riscv64" OPTS="board=u540" - ARCH="riscv32" - ARCH="x86_64" - ARCH="aarch64" - ARCH="mipsel" OPTS="board=malta" matrix: allow_failures: - os: osx install: - if [ $ARCH = riscv32 ] || [ $ARCH = riscv64 ]; then [ $TRAVIS_OS_NAME = linux ] && export FILE="riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-linux-ubuntu14"; [ $TRAVIS_OS_NAME = osx ] && export FILE="riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-apple-darwin"; wget https://static.dev.sifive.com/dev-tools/$FILE.tar.gz; tar xf $FILE.tar.gz; export PATH=$PATH:$PWD/$FILE/bin; fi - if [ $ARCH = aarch64 ]; then if [ $TRAVIS_OS_NAME = linux ]; then export FILE="gcc-arm-8.2-2018.11-x86_64-aarch64-elf"; wget https://developer.arm.com/-/media/Files/downloads/gnu-a/8.2-2018.11/$FILE.tar.xz; tar -xf $FILE.tar.xz; export PATH=$PATH:$PWD/$FILE/bin; elif [ $TRAVIS_OS_NAME = osx ]; then brew tap SergioBenitez/osxct; brew install aarch64-none-elf; fi; fi - if [ $TRAVIS_OS_NAME = linux ]; then wget https://download.qemu.org/qemu-4.0.0.tar.xz && tar xJf qemu-4.0.0.tar.xz > /dev/null && cd qemu-4.0.0 && ./configure --target-list=$ARCH-softmmu && make && cd ..; export PATH=$PATH:$PWD/qemu-4.0.0/$ARCH-softmmu:$PWD/qemu-4.0.0; sudo apt update; sudo apt install device-tree-compiler -y; fi - if [ $TRAVIS_OS_NAME = linux ]; then [ $ARCH = riscv32 ] && export FILE="riscv32-linux-musl-cross"; [ $ARCH = riscv64 ] && export FILE="riscv64-linux-musl-cross"; [ $ARCH = mipsel ] && export FILE="mipsel-linux-musln32-cross"; [ $ARCH = aarch64 ] && export FILE="aarch64-linux-musl-cross"; [ $ARCH = x86_64 ] && export FILE="x86_64-linux-musl-cross"; sudo apt update; sudo apt install linux-headers-$(uname -r); wget https://musl.cc/$FILE.tgz; tar -xf $FILE.tgz; export PATH=$PATH:$PWD/$FILE/bin; fi before_script: - rustup component add rust-src llvm-tools-preview - (test -x $HOME/.cargo/bin/cargo-objdump || cargo install cargo-binutils) - (test -x $HOME/.cargo/bin/cargo-xbuild || cargo install cargo-xbuild) - if [ $ARCH = x86_64 ]; then (test -x $HOME/.cargo/bin/bootimage || cargo install bootimage --version 0.6.6); fi script: - cd user && make sfsimg arch=$ARCH && cd .. - cd kernel && make build arch=$ARCH $OPTS && cd .. - if [ $ARCH = riscv32 ]; then cd tests && ./test.sh && cd ..; fi