script.sh 1.5 KB

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