script.sh 1.6 KB

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