install.sh 1.3 KB

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