diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 00000000..b5ca909c --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,91 @@ +branches: + only: + - staging + - trying + - master + - /z_post_*/ + +# Appveyor configuration template for Rust using rustup for Rust installation +# https://github.com/starkat99/appveyor-rust + +## Operating System (VM environment) ## + +# Rust needs at least Visual Studio 2013 Appveyor OS for MSVC targets. +os: Visual Studio 2015 + +## Build Matrix ## +environment: + matrix: + +### MSVC Toolchains ### + # Nightly 64-bit MSVC + - channel: nightly + target: x86_64-pc-windows-msvc + MSYS_BITS: 64 + # Nightly 32-bit MSVC + - channel: nightly + target: i686-pc-windows-msvc + MSYS_BITS: 32 + +### GNU Toolchains ### + # Nightly 64-bit GNU + - channel: nightly + target: x86_64-pc-windows-gnu + MSYS_BITS: 64 + # Nightly 32-bit GNU + - channel: nightly + target: i686-pc-windows-gnu + MSYS_BITS: 32 + +cache: + - '%USERPROFILE%\.cargo\bin' + - '%USERPROFILE%\.cargo\.crates.toml' + +## Install Script ## + +# This is the most important part of the Appveyor configuration. This installs the version of Rust +# specified by the 'channel' and 'target' environment variables from the build matrix. This uses +# rustup to install Rust. +# +# For simple configurations, instead of using the build matrix, you can simply set the +# default-toolchain and default-host manually here. +install: + - appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe + - rustup-init -yv --default-toolchain %channel% --default-host %target% + - set PATH=%PATH%;%USERPROFILE%\.cargo\bin + - rustc -vV + - cargo -vV + + # Install qemu + - echo %cd% + - mkdir "C:\Program Files\qemu" + - cd "C:\Program Files\qemu" + - if %target%==i686-pc-windows-msvc appveyor DownloadFile "https://qemu.weilnetz.de/w32/2018/qemu-w32-setup-20180801.exe" -FileName "qemu-setup.exe" + - if %target%==i686-pc-windows-gnu appveyor DownloadFile "https://qemu.weilnetz.de/w32/2018/qemu-w32-setup-20180801.exe" -FileName "qemu-setup.exe" + - if %target%==x86_64-pc-windows-msvc appveyor DownloadFile "https://qemu.weilnetz.de/w64/2018/qemu-w64-setup-20180801.exe" -FileName "qemu-setup.exe" + - if %target%==x86_64-pc-windows-gnu appveyor DownloadFile "https://qemu.weilnetz.de/w64/2018/qemu-w64-setup-20180801.exe" -FileName "qemu-setup.exe" + - 7z x qemu-setup.exe + - set PATH=%PATH%;C:\Program Files\qemu + - cd "C:\projects\blog-os" + +## Build Script ## + +# 'cargo test' takes care of building for us, so disable Appveyor's build stage. This prevents +# the "directory does not contain a project or solution file" error. +build: false + +before_test: + - set PATH=C:\msys64\mingw%MSYS_BITS%\bin;C:\msys64\usr\bin;%PATH% + # Fix undefined references to __acrt_iob_func() + - sed -rie "s/#define std([[:alpha:]]+)[[:space:]]+\(__acrt_iob_func\(([[:digit:]]+)\)\)/#define std\1 (\&__iob_func()[\2])/" "C:\msys64\mingw64\x86_64-w64-mingw32\include\stdio.h" + - sed -rie "s/#define std([[:alpha:]]+)[[:space:]]+\(__acrt_iob_func\(([[:digit:]]+)\)\)/#define std\1 (\&__iob_func()[\2])/" "C:\msys64\mingw32\i686-w64-mingw32\include\stdio.h" + - rustup component add rust-src + - set RUST_BACKTRACE=1 + - if not exist %USERPROFILE%\.cargo\bin\cargo-install-latest.exe cargo install cargo-install-latest + - cargo install-latest cargo-xbuild bootimage + +test_script: + - bootimage build + - if %target%==x86_64-pc-windows-gnu cargo test + - if %target%==x86_64-pc-windows-msvc cargo test + - bootimage test diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..4308d582 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,52 @@ +language: rust + +rust: + - nightly + +os: + - linux + - osx + - windows + +notifications: + email: + on_success: never + on_failure: always + +branches: + only: + # This is where pull requests from "bors r+" are built. + - staging + # This is where pull requests from "bors try" are built. + - trying + # Build pull requests. + - master + # Build post braches + - /^z_post_.*$/ + +cache: + directories: + - $HOME/.cargo + - $HOME/Library/Caches/Homebrew + +addons: + apt: + packages: + - qemu-system-x86 + homebrew: + packages: + - qemu + +install: + - if [ $TRAVIS_OS_NAME = windows ]; then choco install qemu; export PATH="/c/Program Files/qemu:$PATH"; fi + +before_script: + - rustup component add rust-src + - (test -x $HOME/.cargo/bin/cargo-install-latest || cargo install cargo-install-latest) + - cargo install-latest cargo-xbuild bootimage cargo-cache + +script: + - bootimage build + - cargo test + - bootimage test + - cargo cache --autoclean