@@ -10,29 +10,27 @@ set -ex
10
10
: " ${TOOLCHAIN?The TOOLCHAIN environment variable must be set.} "
11
11
: " ${OS?The OS environment variable must be set.} "
12
12
13
- RUST=${TOOLCHAIN}
14
- VERBOSE=-v
13
+ rust=" $TOOLCHAIN "
15
14
16
- echo " Testing Rust ${RUST} on ${OS} "
15
+ echo " Testing Rust $rust on $OS "
17
16
18
- if [ " ${ TOOLCHAIN} " = " nightly" ] ; then
17
+ if [ " $TOOLCHAIN " = " nightly" ] ; then
19
18
rustup component add rust-src
20
19
fi
21
20
22
21
test_target () {
23
- BUILD_CMD =" ${1} "
24
- TARGET =" ${2} "
25
- NO_STD =" ${3} "
22
+ build_cmd =" ${1} "
23
+ target =" ${2} "
24
+ no_std =" ${3} "
26
25
27
26
# If there is a std component, fetch it:
28
- if [ " ${NO_STD } " != " 1" ]; then
27
+ if [ " ${no_std } " != " 1" ]; then
29
28
# FIXME: rustup often fails to download some artifacts due to network
30
29
# issues, so we retry this N times.
31
30
N=5
32
31
n=0
33
- until [ $n -ge $N ]
34
- do
35
- if rustup target add " ${TARGET} " --toolchain " ${RUST} " ; then
32
+ until [ $n -ge $N ]; do
33
+ if rustup target add " $target " --toolchain " $rust " ; then
36
34
break
37
35
fi
38
36
n=$(( n+ 1 ))
@@ -41,64 +39,88 @@ test_target() {
41
39
fi
42
40
43
41
# Test that libc builds without any default features (no std)
44
- if [ " ${NO_STD} " != " 1" ]; then
45
- cargo " +${RUST} " " ${BUILD_CMD} " " $VERBOSE " --no-default-features --target " ${TARGET} "
42
+ if [ " $no_std " != " 1" ]; then
43
+ cargo " +$rust " " $build_cmd " --no-default-features --target " $target "
46
44
else
47
45
# FIXME: With `build-std` feature, `compiler_builtins` emits a lof of lint warnings.
48
- RUSTFLAGS=" -A improper_ctypes_definitions" cargo " +${RUST} " " ${BUILD_CMD} " \
49
- -Z build-std=core,alloc " $VERBOSE " --no-default-features --target " ${TARGET} "
46
+ RUSTFLAGS=" -A improper_ctypes_definitions" \
47
+ cargo " +$rust " " $build_cmd " \
48
+ -Z build-std=core,alloc \
49
+ --no-default-features \
50
+ --target " $target "
50
51
fi
52
+
51
53
# Test that libc builds with default features (e.g. std)
52
54
# if the target supports std
53
- if [ " $NO_STD " != " 1" ]; then
54
- cargo " +${RUST} " " ${BUILD_CMD} " " $VERBOSE " --target " ${TARGET} "
55
+ if [ " $no_std " != " 1" ]; then
56
+ cargo " +$rust " " $build_cmd " --target " $target "
55
57
else
56
- RUSTFLAGS=" -A improper_ctypes_definitions" cargo " +${RUST} " " ${BUILD_CMD} " \
57
- -Z build-std=core,alloc " $VERBOSE " --target " ${TARGET} "
58
+ RUSTFLAGS=" -A improper_ctypes_definitions" \
59
+ cargo " +$rust " " ${build_cmd} " \
60
+ -Z build-std=core,alloc \
61
+ --target " $target "
58
62
fi
59
63
60
64
# Test that libc builds with the `extra_traits` feature
61
- if [ " ${NO_STD} " != " 1" ]; then
62
- cargo " +${RUST} " " ${BUILD_CMD} " " $VERBOSE " --no-default-features --target " ${TARGET} " \
63
- --features extra_traits
65
+ if [ " $no_std " != " 1" ]; then
66
+ cargo " +$rust " " $build_cmd " \
67
+ --no-default-features \
68
+ --features extra_traits \
69
+ --target " $target "
64
70
else
65
- RUSTFLAGS=" -A improper_ctypes_definitions" cargo " +${RUST} " " ${BUILD_CMD} " \
66
- -Z build-std=core,alloc " $VERBOSE " --no-default-features \
67
- --target " ${TARGET} " --features extra_traits
71
+ RUSTFLAGS=" -A improper_ctypes_definitions" \
72
+ cargo " +$rust " " $build_cmd " \
73
+ -Z build-std=core,alloc \
74
+ --no-default-features \
75
+ --features extra_traits \
76
+ --target " $target "
68
77
fi
69
78
70
79
# Test the 'const-extern-fn' feature on nightly
71
- if [ " ${RUST} " = " nightly" ]; then
72
- if [ " ${NO_STD} " != " 1" ]; then
73
- cargo " +${RUST} " " ${BUILD_CMD} " " $VERBOSE " --no-default-features --target " ${TARGET} " \
74
- --features const-extern-fn
80
+ if [ " ${rust} " = " nightly" ]; then
81
+ if [ " ${no_std} " != " 1" ]; then
82
+ cargo " +$rust " " $build_cmd " \
83
+ --no-default-features \
84
+ --features const-extern-fn \
85
+ --target " $target "
75
86
else
76
- RUSTFLAGS=" -A improper_ctypes_definitions" cargo " +${RUST} " " ${BUILD_CMD} " \
77
- -Z build-std=core,alloc " $VERBOSE " --no-default-features \
78
- --target " ${TARGET} " --features const-extern-fn
87
+ RUSTFLAGS=" -A improper_ctypes_definitions" \
88
+ cargo " +$rust " " $build_cmd " \
89
+ -Z build-std=core,alloc \
90
+ --no-default-features \
91
+ --features const-extern-fn \
92
+ --target " $target "
79
93
fi
80
94
fi
81
95
82
96
# Also test that it builds with `extra_traits` and default features:
83
- if [ " $NO_STD " != " 1" ]; then
84
- cargo " +${RUST} " " ${BUILD_CMD} " " $VERBOSE " --target " ${TARGET} " \
97
+ if [ " $no_std " != " 1" ]; then
98
+ cargo " +$rust " " $build_cmd " \
99
+ --target " $target " \
85
100
--features extra_traits
86
101
else
87
- RUSTFLAGS=" -A improper_ctypes_definitions" cargo " +${RUST} " " ${BUILD_CMD} " \
88
- -Z build-std=core,alloc " $VERBOSE " --target " ${TARGET} " \
102
+ RUSTFLAGS=" -A improper_ctypes_definitions" \
103
+ cargo " +$rust " " $build_cmd " \
104
+ -Z build-std=core,alloc \
105
+ --target " $target " \
89
106
--features extra_traits
90
107
fi
91
108
}
92
109
93
- RUST_LINUX_TARGETS =" \
110
+ rust_linux_targets =" \
94
111
aarch64-linux-android \
95
112
aarch64-unknown-linux-gnu \
113
+ aarch64-unknown-linux-musl \
96
114
arm-linux-androideabi \
97
115
arm-unknown-linux-gnueabi \
98
116
arm-unknown-linux-gnueabihf \
117
+ arm-unknown-linux-musleabi \
118
+ arm-unknown-linux-musleabihf \
99
119
armv7-linux-androideabi \
100
120
armv7-unknown-linux-gnueabihf \
121
+ armv7-unknown-linux-musleabihf \
101
122
i586-unknown-linux-gnu \
123
+ i586-unknown-linux-musl \
102
124
i686-linux-android \
103
125
i686-unknown-freebsd \
104
126
i686-unknown-linux-gnu \
@@ -107,113 +129,89 @@ powerpc-unknown-linux-gnu \
107
129
powerpc64-unknown-linux-gnu \
108
130
powerpc64le-unknown-linux-gnu \
109
131
s390x-unknown-linux-gnu \
132
+ sparc64-unknown-linux-gnu \
133
+ sparcv9-sun-solaris \
134
+ wasm32-unknown-emscripten \
135
+ wasm32-unknown-unknown \
136
+ x86_64-linux-android \
110
137
x86_64-unknown-freebsd \
111
138
x86_64-unknown-linux-gnu \
112
139
x86_64-unknown-linux-musl \
113
140
x86_64-unknown-netbsd \
114
141
"
115
142
116
- RUST_GT_1_13_LINUX_TARGETS=" \
117
- arm-unknown-linux-musleabi \
118
- arm-unknown-linux-musleabihf \
119
- armv7-unknown-linux-musleabihf \
120
- sparc64-unknown-linux-gnu \
121
- wasm32-unknown-emscripten \
122
- x86_64-linux-android \
123
- "
124
- RUST_GT_1_19_LINUX_TARGETS=" \
125
- aarch64-unknown-linux-musl \
126
- sparcv9-sun-solaris \
127
- wasm32-unknown-unknown \
128
- "
129
- RUST_GT_1_24_LINUX_TARGETS=" \
130
- i586-unknown-linux-musl \
131
- "
132
-
133
- RUST_NIGHTLY_LINUX_TARGETS=" \
143
+ rust_nightly_linux_targets=" \
134
144
aarch64-unknown-fuchsia \
135
145
armv5te-unknown-linux-gnueabi \
136
146
armv5te-unknown-linux-musleabi \
137
147
i686-pc-windows-gnu \
138
148
riscv64gc-unknown-linux-gnu \
139
149
x86_64-fortanix-unknown-sgx \
140
- x86_64-unknown-fuchsia \
141
150
x86_64-pc-solaris \
142
151
x86_64-pc-windows-gnu \
152
+ x86_64-unknown-fuchsia \
143
153
x86_64-unknown-illumos \
144
154
x86_64-unknown-linux-gnux32 \
145
155
x86_64-unknown-redox \
146
156
"
147
157
148
- RUST_APPLE_TARGETS=" \
158
+ rust_apple_targets=" \
159
+ aarch64-apple-darwin \
149
160
aarch64-apple-ios \
150
161
x86_64-apple-darwin \
151
162
x86_64-apple-ios \
152
163
"
153
164
154
- RUST_NIGHTLY_APPLE_TARGETS=" \
155
- aarch64-apple-darwin \
165
+ rust_nightly_apple_targets=" \
156
166
"
157
167
158
168
# Must start with `x86_64-pc-windows-msvc` first.
159
- RUST_NIGHTLY_WINDOWS_TARGETS =" \
169
+ rust_nightly_windows_targets =" \
160
170
x86_64-pc-windows-msvc \
161
171
x86_64-pc-windows-gnu \
162
172
i686-pc-windows-msvc \
163
173
"
164
174
165
175
# The targets are listed here alphabetically
166
- TARGETS =" "
176
+ targets =" "
167
177
case " ${OS} " in
168
178
linux* )
169
- TARGETS=" ${RUST_LINUX_TARGETS} "
170
-
171
- if [ " ${RUST} " != " 1.13.0" ]; then
172
- TARGETS=" ${TARGETS} ${RUST_GT_1_13_LINUX_TARGETS} "
173
- if [ " ${RUST} " != " 1.19.0" ]; then
174
- TARGETS=" ${TARGETS} ${RUST_GT_1_19_LINUX_TARGETS} "
175
- if [ " ${RUST} " != " 1.24.0" ]; then
176
- TARGETS=" ${TARGETS} ${RUST_GT_1_24_LINUX_TARGETS} "
177
- fi
178
- fi
179
- fi
179
+ targets=" $rust_linux_targets "
180
180
181
- if [ " ${RUST} " = " nightly" ]; then
182
- TARGETS =" ${TARGETS} ${RUST_NIGHTLY_LINUX_TARGETS} "
181
+ if [ " $rust " = " nightly" ]; then
182
+ targets =" $targets $rust_nightly_linux_targets "
183
183
fi
184
184
185
185
;;
186
186
macos* )
187
- TARGETS =" ${RUST_APPLE_TARGETS} "
187
+ targets =" $rust_apple_targets "
188
188
189
- if [ " ${RUST} " = " nightly" ]; then
190
- TARGETS =" ${TARGETS} ${RUST_NIGHTLY_APPLE_TARGETS} "
189
+ if [ " $rust " = " nightly" ]; then
190
+ targets =" $targets $rust_nightly_apple_targets "
191
191
fi
192
192
193
193
;;
194
194
windows* )
195
- TARGETS=${RUST_NIGHTLY_WINDOWS_TARGETS}
196
-
197
- ;;
198
- * )
195
+ targets=${rust_nightly_windows_targets}
199
196
;;
197
+ * ) ;;
200
198
esac
201
199
202
- for TARGET in $TARGETS ; do
203
- if echo " $TARGET " | grep -q " $FILTER " ; then
200
+ for target in $targets ; do
201
+ if echo " $target " | grep -q " $FILTER " ; then
204
202
if [ " ${OS} " = " windows" ]; then
205
- TARGET=" $TARGET " sh ./ci/install-rust.sh
206
- test_target build " $TARGET "
203
+ TARGET=" $target " sh ./ci/install-rust.sh
204
+ test_target build " $target "
207
205
else
208
- test_target build " $TARGET "
206
+ test_target build " $target "
209
207
fi
210
208
fi
211
209
done
212
210
213
211
# Targets which are not available via rustup and must be built with -Zbuild-std
214
212
# FIXME(hexagon): hexagon-unknown-linux-musl should be tested but currently has
215
213
# duplicate symbol errors from `compiler_builtins`.
216
- RUST_LINUX_NO_CORE_TARGETS =" \
214
+ rust_linux_no_core_targets =" \
217
215
aarch64-pc-windows-msvc \
218
216
aarch64-unknown-freebsd \
219
217
aarch64-unknown-hermit \
@@ -278,24 +276,24 @@ x86_64-unknown-openbsd \
278
276
x86_64-wrs-vxworks \
279
277
"
280
278
281
- if [ " ${RUST } " = " nightly" ] && [ " ${OS} " = " linux" ]; then
282
- for TARGET in $RUST_LINUX_NO_CORE_TARGETS ; do
283
- if echo " $TARGET " | grep -q " $FILTER " ; then
284
- test_target build " $TARGET " 1
279
+ if [ " ${rust } " = " nightly" ] && [ " ${OS} " = " linux" ]; then
280
+ for target in $rust_linux_no_core_targets ; do
281
+ if echo " $target " | grep -q " $FILTER " ; then
282
+ test_target build " $target " 1
285
283
fi
286
284
done
287
285
fi
288
286
289
- RUST_APPLE_NO_CORE_TARGETS =" \
287
+ rust_apple_no_core_targets =" \
290
288
armv7s-apple-ios \
291
289
i686-apple-darwin \
292
290
i386-apple-ios \
293
291
"
294
292
295
- if [ " ${RUST } " = " nightly" ] && [ " ${OS} " = " macos" ]; then
296
- for TARGET in $RUST_APPLE_NO_CORE_TARGETS ; do
297
- if echo " $TARGET " | grep -q " $FILTER " ; then
298
- test_target build " $TARGET " 1
293
+ if [ " ${rust } " = " nightly" ] && [ " ${OS} " = " macos" ]; then
294
+ for target in $rust_apple_no_core_targets ; do
295
+ if echo " $target " | grep -q " $FILTER " ; then
296
+ test_target build " $target " 1
299
297
fi
300
298
done
301
299
fi
0 commit comments