14
14
15
15
jobs :
16
16
check-doc :
17
- name : Doc deadlinks
17
+ name : Docs, deadlinks, minimal dependencies
18
18
runs-on : ubuntu-latest
19
19
steps :
20
20
- uses : actions/checkout@v2
21
- - name : Install toolchain
22
- uses : actions-rs/toolchain@v1
21
+ - uses : actions-rs/toolchain@v1
23
22
with :
24
23
profile : minimal
25
- toolchain : nightly
24
+ toolchain : nightly # Needed for -Z minimal-versions
26
25
override : true
27
- - run : cargo install cargo-deadlinks
28
- - run : cargo deadlinks -- --features custom
26
+ - name : Install precompiled cargo-deadlinks
27
+ run : |
28
+ export URL=$(curl -s https://api.github.com/repos/deadlinks/cargo-deadlinks/releases/latest | jq -r '.assets[] | select(.name | contains("cargo-deadlinks-linux")) | .browser_download_url')
29
+ wget -O /tmp/cargo-deadlinks $URL
30
+ chmod +x /tmp/cargo-deadlinks
31
+ mv /tmp/cargo-deadlinks ~/.cargo/bin
32
+ - run : cargo deadlinks -- --features=custom,std
33
+ - run : |
34
+ cargo generate-lockfile -Z minimal-versions
35
+ cargo test --features=custom,std
29
36
30
37
main-tests :
31
38
name : Main tests
32
39
runs-on : ${{ matrix.os }}
33
40
strategy :
34
41
matrix :
35
- os : [ubuntu-latest, macos-latest, windows-latest]
42
+ os : [ubuntu-latest, windows-latest]
36
43
toolchain : [nightly, beta, stable, 1.34]
44
+ # Only Test macOS on stable to reduce macOS CI jobs
45
+ include :
46
+ - os : macos-latest
47
+ toolchain : stable
37
48
steps :
38
49
- uses : actions/checkout@v2
39
- - name : Install toolchain
40
- uses : actions-rs/toolchain@v1
50
+ - uses : actions-rs/toolchain@v1
41
51
with :
42
52
profile : minimal
43
53
toolchain : ${{ matrix.toolchain }}
44
54
override : true
45
55
- run : cargo test
46
- - run : cargo test --features std
56
+ - run : cargo test --features=std
57
+ - run : cargo test --features=custom # custom should do nothing here
47
58
- if : ${{ matrix.toolchain == 'nightly' }}
48
59
run : cargo build --benches
49
60
@@ -59,18 +70,40 @@ jobs:
59
70
]
60
71
steps :
61
72
- uses : actions/checkout@v2
62
- - name : Install toolchain
63
- uses : actions-rs/toolchain@v1
73
+ - uses : actions-rs/toolchain@v1
64
74
with :
65
75
profile : minimal
66
76
target : ${{ matrix.target }}
67
77
toolchain : stable
68
- override : true
69
- # update is needed to fix the 404 error on install, see:
70
- # https://github.com/actions/virtual-environments/issues/675
71
- - run : sudo apt-get update
72
- - run : sudo apt-get install gcc-multilib
73
- - run : cargo test --target ${{ matrix.target }}
78
+ - name : Install multilib
79
+ # update is needed to fix the 404 error on install, see:
80
+ # https://github.com/actions/virtual-environments/issues/675
81
+ run : |
82
+ sudo apt-get update
83
+ sudo apt-get install gcc-multilib
84
+ - run : cargo test --target=${{ matrix.target }} --features=std
85
+
86
+ # We can only Build/Link on these targets for now.
87
+ # TODO: Run the iOS binaries in the simulator
88
+ # TODO: build/run aarch64-apple-darwin binaries on a x86_64 Mac
89
+ apple-tests :
90
+ name : Additional Apple targets
91
+ runs-on : macos-latest
92
+ strategy :
93
+ matrix :
94
+ target : [
95
+ aarch64-apple-ios,
96
+ x86_64-apple-ios,
97
+ ]
98
+ steps :
99
+ - uses : actions/checkout@v2
100
+ - uses : actions-rs/toolchain@v1
101
+ with :
102
+ profile : minimal
103
+ target : ${{ matrix.target }}
104
+ toolchain : stable
105
+ - name : Build Tests
106
+ run : cargo test --no-run --target=${{ matrix.target }} --features=std
74
107
75
108
windows-tests :
76
109
name : Additional Windows targets
@@ -90,88 +123,149 @@ jobs:
90
123
profile : minimal
91
124
toolchain : ${{ matrix.toolchain }}
92
125
override : true
93
- - run : cargo test
126
+ - run : cargo test --features=std
94
127
128
+ # TODO: Add emscripten when it's working with Cross
95
129
cross-tests :
96
- name : Cross tests
97
- runs-on : ${{ matrix.os }}
130
+ name : Cross Test
131
+ runs-on : ubuntu-latest
98
132
strategy :
99
133
matrix :
100
- include :
101
- - os : ubuntu-latest
102
- target : mips-unknown-linux-gnu
103
- toolchain : stable
134
+ target : [
135
+ aarch64-unknown-linux-gnu,
136
+ aarch64-linux-android,
137
+ mips-unknown-linux-gnu,
138
+ ]
104
139
steps :
105
140
- uses : actions/checkout@v2
106
- - name : Install toolchain
107
- uses : actions-rs/toolchain@v1
141
+ - uses : actions-rs/toolchain@v1
108
142
with :
109
143
profile : minimal
110
144
target : ${{ matrix.target }}
111
- toolchain : ${{ matrix.toolchain }}
112
- override : true
113
- - name : Cache cargo plugins
114
- uses : actions/cache@v1
115
- with :
116
- path : ~/.cargo/bin/
117
- key : ${{ runner.os }}-cargo-plugins
118
- - name : Install cross
119
- run : cargo install cross || true
145
+ toolchain : stable
146
+ - name : Install precompiled cross
147
+ run : |
148
+ export URL=$(curl -s https://api.github.com/repos/rust-embedded/cross/releases/latest | jq -r '.assets[] | select(.name | contains("x86_64-unknown-linux-gnu.tar.gz")) | .browser_download_url')
149
+ wget -O /tmp/binaries.tar.gz $URL
150
+ tar -C /tmp -xzf /tmp/binaries.tar.gz
151
+ mv /tmp/cross ~/.cargo/bin
120
152
- name : Test
121
- run : cross test --no-fail-fast --target ${{ matrix.target }}
153
+ run : cross test --no-fail-fast --target= ${{ matrix.target }} --features=std
122
154
123
- build :
124
- name : Build-only
155
+ cross-link :
156
+ name : Cross Build/Link
125
157
runs-on : ubuntu-latest
126
158
strategy :
127
159
matrix :
128
160
target : [
129
161
x86_64-sun-solaris,
162
+ x86_64-unknown-netbsd,
163
+ ]
164
+ steps :
165
+ - uses : actions/checkout@v2
166
+ - uses : actions-rs/toolchain@v1
167
+ with :
168
+ profile : minimal
169
+ target : ${{ matrix.target }}
170
+ toolchain : stable
171
+ - name : Install precompiled cross
172
+ run : |
173
+ export URL=$(curl -s https://api.github.com/repos/rust-embedded/cross/releases/latest | jq -r '.assets[] | select(.name | contains("x86_64-unknown-linux-gnu.tar.gz")) | .browser_download_url')
174
+ wget -O /tmp/binaries.tar.gz $URL
175
+ tar -C /tmp -xzf /tmp/binaries.tar.gz
176
+ mv /tmp/cross ~/.cargo/bin
177
+ - name : Build Tests
178
+ run : cross test --no-run --target=${{ matrix.target }} --features=std
179
+
180
+ web-tests :
181
+ name : Web tests
182
+ runs-on : ubuntu-latest
183
+ steps :
184
+ - uses : actions/checkout@v2
185
+ - uses : actions-rs/toolchain@v1
186
+ with :
187
+ profile : minimal
188
+ target : wasm32-unknown-unknown
189
+ toolchain : stable
190
+ - name : Install precompiled wasm-bindgen-test-runner
191
+ run : |
192
+ export VERSION=$(cargo metadata --format-version=1 | jq -r '.packages[] | select ( .name == "wasm-bindgen" ) | .version')
193
+ wget -O /tmp/binaries.tar.gz https://github.com/rustwasm/wasm-bindgen/releases/download/$VERSION/wasm-bindgen-$VERSION-x86_64-unknown-linux-musl.tar.gz
194
+ tar -C /tmp -xzf /tmp/binaries.tar.gz --strip-components=1
195
+ mv /tmp/wasm-bindgen-test-runner ~/.cargo/bin
196
+ - name : Test (Node)
197
+ run : cargo test --target=wasm32-unknown-unknown --features=js
198
+ - name : Test (Firefox)
199
+ env :
200
+ GECKODRIVER : /usr/bin/geckodriver
201
+ run : cargo test --target=wasm32-unknown-unknown --features=js,test-in-browser
202
+ - name : Test (Chrome)
203
+ env :
204
+ CHROMEDRIVER : /usr/bin/chromedriver
205
+ run : cargo test --target=wasm32-unknown-unknown --features=js,test-in-browser
206
+ - name : Build Tests (with custom, without JS)
207
+ run : cargo test --no-run --target=wasm32-unknown-unknown --features=custom
208
+
209
+ wasi-tests :
210
+ name : WASI test
211
+ runs-on : ubuntu-latest
212
+ steps :
213
+ - uses : actions/checkout@v2
214
+ - uses : actions-rs/toolchain@v1
215
+ with :
216
+ profile : minimal
217
+ target : wasm32-wasi
218
+ toolchain : stable
219
+ - name : Install precompiled wasmtime
220
+ run : |
221
+ export URL=$(curl -s https://api.github.com/repos/bytecodealliance/wasmtime/releases/latest | jq -r '.assets[] | select(.name | contains("x86_64-linux.tar.xz")) | .browser_download_url')
222
+ wget -O /tmp/binaries.tar.xz $URL
223
+ tar -C /tmp -xf /tmp/binaries.tar.xz --strip-components=1
224
+ mv /tmp/wasmtime ~/.cargo/bin
225
+ - run : cargo test --target wasm32-wasi
226
+
227
+ build :
228
+ name : Build only
229
+ runs-on : ubuntu-latest
230
+ strategy :
231
+ matrix :
232
+ target : [
130
233
x86_64-unknown-freebsd,
131
234
x86_64-fuchsia,
132
- x86_64-unknown-netbsd,
133
235
x86_64-unknown-redox,
134
236
x86_64-fortanix-unknown-sgx,
135
237
]
136
238
steps :
137
239
- uses : actions/checkout@v2
138
- - name : Install toolchain
139
- uses : actions-rs/toolchain@v1
240
+ - uses : actions-rs/toolchain@v1
140
241
with :
141
242
profile : minimal
142
243
target : ${{ matrix.target }}
143
- toolchain : nightly
244
+ toolchain : nightly # Required to build libc for Redox
144
245
override : true
145
246
- name : Build
146
- run : cargo build --target ${{ matrix.target }}
247
+ run : cargo build --target= ${{ matrix.target }} --features=std
147
248
148
- build-rdrand :
149
- name : Build-only RDRAND
249
+ build-std :
250
+ name : Build-only (build-std)
150
251
runs-on : ubuntu-latest
151
252
steps :
152
253
- uses : actions/checkout@v2
153
254
- name : Install toolchain
154
255
uses : actions-rs/toolchain@v1
155
256
with :
156
257
profile : minimal
157
- toolchain : nightly
258
+ toolchain : nightly # Required to build libcore
158
259
components : rust-src
159
260
override : true
160
- - name : Cache cargo plugins
161
- uses : actions/cache@v1
162
- with :
163
- path : ~/.cargo/bin/
164
- key : ${{ runner.os }}-cargo-plugins
165
- - name : Install xbuild
166
- run : cargo install cargo-xbuild || true
167
- - name : UEFI
168
- run : cargo xbuild --features=rdrand --target x86_64-unknown-uefi
169
- - name : Hermit
170
- run : cargo xbuild --features=rdrand --target x86_64-unknown-hermit
171
- - name : L4Re
172
- run : cargo xbuild --features=rdrand --target x86_64-unknown-l4re-uclibc
261
+ - name : UEFI (RDRAND)
262
+ run : cargo build -Z build-std=core --features=rdrand --target=x86_64-unknown-uefi
263
+ - name : Hermit (RDRAND)
264
+ run : cargo build -Z build-std=core --features=rdrand --target=x86_64-unknown-hermit
265
+ - name : L4Re (RDRAND)
266
+ run : cargo build -Z build-std=core --features=rdrand --target=x86_64-unknown-l4re-uclibc
173
267
- name : VxWorks
174
- run : cargo xbuild --features=rdrand --target x86_64-wrs-vxworks
268
+ run : cargo build -Z build-std=core --target= x86_64-wrs-vxworks
175
269
176
270
clippy-fmt :
177
271
name : Clippy + rustfmt
@@ -181,9 +275,12 @@ jobs:
181
275
- uses : actions-rs/toolchain@v1
182
276
with :
183
277
profile : minimal
184
- toolchain : stable
278
+ # https://github.com/rust-lang/rust-clippy/pull/6379 added MSRV
279
+ # support, so we need to use nightly until this is on stable.
280
+ toolchain : nightly
185
281
components : rustfmt, clippy
282
+ override : true
186
283
- name : clippy
187
- run : cargo clippy --all
284
+ run : cargo clippy --all --features=custom,std
188
285
- name : fmt
189
286
run : cargo fmt --all -- --check
0 commit comments