script.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. set -ex
  2. . $(dirname $0)/env.sh
  3. gist_it() {
  4. gist -ap -f "'$1' from commit '$TRAVIS_COMMIT' on branch '$TRAVIS_BRANCH'"
  5. echo "Disassembly available at the above URL."
  6. }
  7. build() {
  8. ${CARGO:-cargo} build --target $TARGET
  9. ${CARGO:-cargo} build --target $TARGET --release
  10. }
  11. inspect() {
  12. $PREFIX$NM -g --defined-only target/**/debug/*.rlib
  13. set +e
  14. case $TRAVIS_OS_NAME in
  15. linux)
  16. $PREFIX$OBJDUMP -Cd target/**/release/*.rlib | gist_it "$TARGET/rustc-builtins.rlib"
  17. ;;
  18. osx)
  19. $PREFIX$OBJDUMP -Cd target/**/release/*.rlib
  20. ;;
  21. esac
  22. set -e
  23. # Check presence of weak symbols
  24. if [[ $TRAVIS_OS_NAME = "linux" ]]; then
  25. local symbols=( memcmp memcpy memmove memset )
  26. for symbol in "${symbols[@]}"; do
  27. $PREFIX$NM target/**/debug/deps/librlibc*.rlib | grep -q "W $symbol"
  28. done
  29. fi
  30. }
  31. run_tests() {
  32. if [[ $QEMU_LD_PREFIX ]]; then
  33. export RUST_TEST_THREADS=1
  34. fi
  35. if [[ ${RUN_TESTS:-y} == "y" ]]; then
  36. cargo test --target $TARGET
  37. cargo test --target $TARGET --release
  38. fi
  39. }
  40. main() {
  41. if [[ $TRAVIS_OS_NAME == "linux" && ${IN_DOCKER_CONTAINER:-n} == "n" ]]; then
  42. local tag=2016-08-22
  43. docker run \
  44. --privileged \
  45. -e IN_DOCKER_CONTAINER=y \
  46. -e TARGET=$TARGET \
  47. -e TRAVIS_BRANCH=$TRAVIS_BRANCH \
  48. -e TRAVIS_COMMIT=$TRAVIS_COMMIT \
  49. -e TRAVIS_OS_NAME=$TRAVIS_OS_NAME \
  50. -v $(pwd):/mnt \
  51. japaric/rustc-builtins:$tag \
  52. sh -c 'set -ex;
  53. cd /mnt;
  54. export PATH="$PATH:/root/.cargo/bin";
  55. bash ci/install.sh;
  56. bash ci/script.sh'
  57. else
  58. build
  59. inspect
  60. run_tests
  61. fi
  62. }
  63. main