install.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. set -ex
  2. . $(dirname $0)/env.sh
  3. install_qemu() {
  4. case ${QEMU_ARCH:-$TRAVIS_OS_NAME} in
  5. i386)
  6. dpkg --add-architecture $QEMU_ARCH
  7. apt-get update
  8. apt-get install -y --no-install-recommends \
  9. binfmt-support qemu-user-static:$QEMU_ARCH
  10. ;;
  11. linux)
  12. apt-get update
  13. apt-get install -y --no-install-recommends \
  14. binfmt-support qemu-user-static
  15. ;;
  16. esac
  17. }
  18. install_binutils() {
  19. if [[ $TRAVIS_OS_NAME == "osx" ]]; then
  20. brew install binutils
  21. fi
  22. }
  23. install_rust() {
  24. if [[ $TRAVIS_OS_NAME == "osx" ]]; then
  25. curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=nightly
  26. else
  27. rustup default nightly
  28. fi
  29. rustc -V
  30. cargo -V
  31. }
  32. add_rustup_target() {
  33. if [[ $TARGET != $HOST && ${CARGO:-cargo} == "cargo" ]]; then
  34. rustup target add $TARGET
  35. fi
  36. }
  37. install_xargo() {
  38. if [[ $CARGO == "xargo" ]]; then
  39. curl -sf "https://raw.githubusercontent.com/japaric/rust-everywhere/master/install.sh" | \
  40. bash -s -- --from japaric/xargo --at /root/.cargo/bin
  41. fi
  42. }
  43. main() {
  44. if [[ $TRAVIS_OS_NAME == "osx" || ${IN_DOCKER_CONTAINER:-n} == "y" ]]; then
  45. install_qemu
  46. install_binutils
  47. install_rust
  48. add_rustup_target
  49. install_xargo
  50. fi
  51. }
  52. main