]>
Commit | Line | Data |
---|---|---|
abe05a73 | 1 | #!/usr/bin/env bash |
476ff2be SL |
2 | # Copyright 2016 The Rust Project Developers. See the COPYRIGHT |
3 | # file at the top-level directory of this distribution and at | |
4 | # http://rust-lang.org/COPYRIGHT. | |
5 | # | |
6 | # Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | |
7 | # http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
8 | # <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | |
9 | # option. This file may not be copied, modified, or distributed | |
10 | # except according to those terms. | |
11 | ||
12 | set -e | |
13 | ||
83c7162d XL |
14 | if [ -n "$CI_JOB_NAME" ]; then |
15 | echo "[CI_JOB_NAME=$CI_JOB_NAME]" | |
16 | fi | |
17 | ||
8bb4bdeb XL |
18 | if [ "$NO_CHANGE_USER" = "" ]; then |
19 | if [ "$LOCAL_USER_ID" != "" ]; then | |
20 | useradd --shell /bin/bash -u $LOCAL_USER_ID -o -c "" -m user | |
21 | export HOME=/home/user | |
22 | unset LOCAL_USER_ID | |
23 | exec su --preserve-environment -c "env PATH=$PATH \"$0\"" user | |
24 | fi | |
476ff2be SL |
25 | fi |
26 | ||
8bb4bdeb XL |
27 | ci_dir=`cd $(dirname $0) && pwd` |
28 | source "$ci_dir/shared.sh" | |
29 | ||
7cac9316 XL |
30 | if [ "$TRAVIS" == "true" ] && [ "$TRAVIS_BRANCH" != "auto" ]; then |
31 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-quiet-tests" | |
0531ce1d XL |
32 | else |
33 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set build.print-step-timings" | |
7cac9316 XL |
34 | fi |
35 | ||
32a655c1 | 36 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-sccache" |
32a655c1 | 37 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --disable-manage-submodules" |
8bb4bdeb XL |
38 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-locked-deps" |
39 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-cargo-openssl-static" | |
8bb4bdeb XL |
40 | |
41 | if [ "$DIST_SRC" = "" ]; then | |
42 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --disable-dist-src" | |
43 | fi | |
32a655c1 SL |
44 | |
45 | # If we're deploying artifacts then we set the release channel, otherwise if | |
ff7c6d11 | 46 | # we're not deploying then we want to be sure to enable all assertions because |
32a655c1 SL |
47 | # we'll be running tests |
48 | # | |
49 | # FIXME: need a scheme for changing this `nightly` value to `beta` and `stable` | |
50 | # either automatically or manually. | |
ff7c6d11 | 51 | export RUST_RELEASE_CHANNEL=stable |
8bb4bdeb | 52 | if [ "$DEPLOY$DEPLOY_ALT" != "" ]; then |
ff7c6d11 | 53 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --release-channel=$RUST_RELEASE_CHANNEL" |
32a655c1 SL |
54 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-llvm-static-stdcpp" |
55 | ||
56 | if [ "$NO_LLVM_ASSERTIONS" = "1" ]; then | |
57 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --disable-llvm-assertions" | |
8bb4bdeb | 58 | elif [ "$DEPLOY_ALT" != "" ]; then |
abe05a73 | 59 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-llvm-assertions" |
32a655c1 SL |
60 | fi |
61 | else | |
ea8adc8c XL |
62 | # We almost always want debug assertions enabled, but sometimes this takes too |
63 | # long for too little benefit, so we just turn them off. | |
64 | if [ "$NO_DEBUG_ASSERTIONS" = "" ]; then | |
65 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-debug-assertions" | |
66 | fi | |
32a655c1 SL |
67 | |
68 | # In general we always want to run tests with LLVM assertions enabled, but not | |
69 | # all platforms currently support that, so we have an option to disable. | |
70 | if [ "$NO_LLVM_ASSERTIONS" = "" ]; then | |
71 | RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-llvm-assertions" | |
72 | fi | |
476ff2be SL |
73 | fi |
74 | ||
0531ce1d XL |
75 | # We've had problems in the past of shell scripts leaking fds into the sccache |
76 | # server (#48192) which causes Cargo to erroneously think that a build script | |
77 | # hasn't finished yet. Try to solve that problem by starting a very long-lived | |
78 | # sccache server at the start of the build, but no need to worry if this fails. | |
79 | SCCACHE_IDLE_TIMEOUT=10800 sccache --start-server || true | |
80 | ||
83c7162d | 81 | if [ "$RUN_CHECK_WITH_PARALLEL_QUERIES" != "" ]; then |
0531ce1d | 82 | $SRC/configure --enable-experimental-parallel-queries |
83c7162d | 83 | CARGO_INCREMENTAL=0 python2.7 ../x.py check |
0531ce1d XL |
84 | rm -f config.toml |
85 | rm -rf build | |
86 | fi | |
87 | ||
7cac9316 XL |
88 | travis_fold start configure |
89 | travis_time_start | |
32a655c1 | 90 | $SRC/configure $RUST_CONFIGURE_ARGS |
7cac9316 XL |
91 | travis_fold end configure |
92 | travis_time_finish | |
93 | ||
94 | travis_fold start make-prepare | |
95 | travis_time_start | |
8bb4bdeb | 96 | retry make prepare |
7cac9316 XL |
97 | travis_fold end make-prepare |
98 | travis_time_finish | |
476ff2be | 99 | |
3b2f2976 XL |
100 | travis_fold start check-bootstrap |
101 | travis_time_start | |
102 | make check-bootstrap | |
103 | travis_fold end check-bootstrap | |
104 | travis_time_finish | |
105 | ||
0531ce1d XL |
106 | # Display the CPU and memory information. This helps us know why the CI timing |
107 | # is fluctuating. | |
108 | travis_fold start log-system-info | |
476ff2be | 109 | if [ "$TRAVIS_OS_NAME" = "osx" ]; then |
0531ce1d XL |
110 | system_profiler SPHardwareDataType || true |
111 | sysctl hw || true | |
476ff2be SL |
112 | ncpus=$(sysctl -n hw.ncpu) |
113 | else | |
0531ce1d XL |
114 | cat /proc/cpuinfo || true |
115 | cat /proc/meminfo || true | |
32a655c1 | 116 | ncpus=$(grep processor /proc/cpuinfo | wc -l) |
476ff2be | 117 | fi |
0531ce1d | 118 | travis_fold end log-system-info |
476ff2be | 119 | |
32a655c1 SL |
120 | if [ ! -z "$SCRIPT" ]; then |
121 | sh -x -c "$SCRIPT" | |
476ff2be | 122 | else |
7cac9316 XL |
123 | do_make() { |
124 | travis_fold start "make-$1" | |
125 | travis_time_start | |
126 | echo "make -j $ncpus $1" | |
0531ce1d | 127 | make -j $ncpus $1 |
7cac9316 XL |
128 | local retval=$? |
129 | travis_fold end "make-$1" | |
130 | travis_time_finish | |
131 | return $retval | |
132 | } | |
133 | ||
134 | do_make tidy | |
135 | do_make all | |
136 | do_make "$RUST_CHECK_TARGET" | |
476ff2be | 137 | fi |