script.sh 1.4 KB

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