-
Notifications
You must be signed in to change notification settings - Fork 182
/
.travis.yml
214 lines (189 loc) · 7.58 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
language: rust
os: linux
dist: focal
env:
global:
# All of the supported x86 Linux targets
- LINUX_TARGETS="x86_64-unknown-linux-gnu x86_64-unknown-linux-musl i686-unknown-linux-gnu i686-unknown-linux-musl"
# Targets that we just build (rather than run and test)
- STD_TARGETS="x86_64-sun-solaris x86_64-unknown-freebsd x86_64-fuchsia x86_64-unknown-netbsd x86_64-unknown-redox x86_64-fortanix-unknown-sgx"
- NO_STD_TARGETS="x86_64-unknown-cloudabi x86_64-unknown-uefi x86_64-unknown-hermit x86_64-unknown-l4re-uclibc x86_64-uwp-windows-gnu x86_64-wrs-vxworks"
jobs:
include:
- name: "Linux, 1.34.0"
rust: 1.34.0
- name: "OSX, 1.34.0"
rust: 1.34.0
os: osx
- name: "Linux, stable"
rust: stable
- name: "OSX+iOS, stable"
rust: stable
os: osx
install:
- rustup target add aarch64-apple-ios
script:
- cargo test
- cargo build --target aarch64-apple-ios
- name: "Linux, beta"
rust: beta
- name: "WASM via stdweb, wasm-bindgen and WASI"
rust: stable
addons:
# firefox: latest
chrome: stable
install:
- rustup target add wasm32-unknown-unknown
- rustup target add wasm32-wasi
# Get latest geckodriver
- export VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | jq -r ".tag_name")
- wget -O geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/$VERSION/geckodriver-$VERSION-linux64.tar.gz
- tar -xzf geckodriver.tar.gz -C $HOME
# Get latest chromedirver
- export VERSION=$(wget -q -O - https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
- wget -O chromedriver.zip https://chromedriver.storage.googleapis.com/$VERSION/chromedriver_linux64.zip
- unzip chromedriver.zip -d $HOME
# Get cargo-web
# - export VERSION=0.6.26 # Pin version for stability
# - wget -O cargo-web.gz https://github.com/koute/cargo-web/releases/download/$VERSION/cargo-web-x86_64-unknown-linux-gnu.gz
# - gunzip cargo-web.gz
# - chmod +x cargo-web
# Get wasmtime
- export VERSION=v0.19.0 # Pin version for stability
- wget -O wasmtime.tar.xz https://github.com/CraneStation/wasmtime/releases/download/$VERSION/wasmtime-$VERSION-x86_64-linux.tar.xz
- tar -xf wasmtime.tar.xz --strip-components=1
# Get wasm-bindgen-test-runner which matches our wasm-bindgen version
- export VERSION=$(cargo metadata --format-version=1 | jq -r '.packages[] | select ( .name == "wasm-bindgen" ) | .version')
- wget -O wasm-bindgen.tar.gz https://github.com/rustwasm/wasm-bindgen/releases/download/$VERSION/wasm-bindgen-$VERSION-x86_64-unknown-linux-musl.tar.gz
- tar -xzf wasm-bindgen.tar.gz --strip-components=1
# Place the runner binaries in our PATH
- mv wasmtime wasm-bindgen-test-runner $HOME/.cargo/bin
script:
- cargo test --target wasm32-wasi
# stdweb (wasm32-unknown-unknown) tests are currently broken (see https://github.com/koute/cargo-web/issues/243)
# - cargo web test --features js --nodejs
# - cargo web test --features js
- cargo build --features js
# wasm-bindgen (wasm32-unknown-unknown) tests (Node, Firefox, Chrome)
- cargo test --target wasm32-unknown-unknown --features js
- GECKODRIVER=$HOME/geckodriver
cargo test --target wasm32-unknown-unknown --features js,test-in-browser
- CHROMEDRIVER=$HOME/chromedriver
cargo test --target wasm32-unknown-unknown --features js,test-in-browser
- name: "WASM via Emscripten"
rust: stable
env:
- CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_RUNNER=node
- CARGO_TARGET_ASMJS_UNKNOWN_EMSCRIPTEN_RUNNER=node
install:
- rustup target add wasm32-unknown-emscripten
- rustup target add asmjs-unknown-emscripten
- export VERSION=2.0.2 # Pin version for stability
- git clone https://github.com/emscripten-core/emsdk.git
- ./emsdk/emsdk install $VERSION
- ./emsdk/emsdk activate $VERSION
- source ./emsdk/emsdk_env.sh
script:
- cargo test --target wasm32-unknown-emscripten
# Prevent 'wasm2js does not support source maps yet' error.
- RUSTFLAGS='-C debuginfo=0' cargo test --target asmjs-unknown-emscripten
- &nightly_and_docs
name: "Linux, nightly, docs"
rust: nightly
install:
- rustup target add wasm32-unknown-unknown
- cargo install cargo-deadlinks
- cargo deadlinks -V
script:
# Check that setting various features does not break the build
- cargo build --features=std
- cargo build --features=custom
# remove cached documentation, otherwise files from previous PRs can get included
- rm -rf target/doc
- cargo doc --no-deps --features=std,custom
- cargo deadlinks --dir target/doc
# Check that our tests pass in the default/minimal configuration
- cargo test --tests --benches --features=std,custom
- cargo generate-lockfile -Z minimal-versions
- cargo test --tests --benches
- <<: *nightly_and_docs
name: "OSX, nightly, docs"
os: osx
- name: "cross-platform tests"
rust: nightly
addons:
apt:
packages:
- gcc-multilib
install:
- echo $LINUX_TARGETS | xargs -n1 rustup target add
script:
# We run tests for all supported x86 Linux targets
- echo $LINUX_TARGETS | xargs -t -n1 cargo test --target
- name: "cross-platform build only"
rust: nightly
install:
- echo $STD_TARGETS | xargs -n1 rustup target add
# For no_std targets
- rustup component add rust-src
- cargo --list | egrep "^\s*xbuild$" -q || cargo install cargo-xbuild
script:
# We test that getrandom builds for all targets
- echo $STD_TARGETS | xargs -t -n1 cargo build --target
- echo $NO_STD_TARGETS | xargs -t -n1 cargo xbuild --features=rdrand --target
# also test minimum dependency versions are usable
- cargo generate-lockfile -Z minimal-versions
- echo $STD_TARGETS | xargs -t -n1 cargo build --target
- echo $NO_STD_TARGETS | xargs -t -n1 cargo xbuild --features=rdrand --target
# Trust cross-built/emulated targets. We must repeat all non-default values.
- name: "Linux (MIPS, big-endian)"
env: TARGET=mips-unknown-linux-gnu
rust: stable
dist: trusty
services: docker
install:
- sh utils/ci/install.sh
- source ~/.cargo/env || true
script:
- bash utils/ci/script.sh
- name: "Android (ARMv7)"
env: TARGET=armv7-linux-androideabi
rust: stable
dist: trusty
services: docker
install:
- sh utils/ci/install.sh
- source ~/.cargo/env || true
script:
- bash utils/ci/script.sh
- name: "rustfmt"
rust: stable
install:
- rustup component add rustfmt
script:
- cargo fmt --all -- */*.rs --check
allow_failures:
# Formatting errors should appear in Travis, but not break the build.
- name: "rustfmt"
before_install:
- set -e
- rustup self update
before_script:
- export RUSTFLAGS="-D warnings"
script:
- cargo test
after_script: set +e
cache:
cargo: true
directories:
- .local/share/cargo-web
before_cache:
# Travis can't cache files that are not readable by "others"
- chmod -R a+r $HOME/.cargo
notifications:
email:
on_success: never
branches:
only:
- master
- 0.1