Repository navigation
Expand file tree
/
Copy pathrun.bash
More file actions
86 lines (72 loc) · 2.56 KB
/
Copy pathrun.bash
File metadata and controls
86 lines (72 loc) · 2.56 KB
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
#!/bin/bash
set -ex
export RUST_BACKTRACE=1
rustc -vV
cargo -vV
if [ -n "$INSTALL_BINDGEN" ]; then
# Install `cargo-binstall` first for faster installation.
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
# An explicit `--target` is required to ensure that `bindgen-cli` is built for the
# same target as the rest of the toolchain.
# See: <https://github.com/rust-lang/rustup/issues/4396>
cargo binstall -y --force --locked bindgen-cli "--target=$(rustc --print host-tuple)"
mkdir "$CARGO_HOME"/bin/bindgen-cli
mv "$CARGO_HOME"/bin/bindgen "$CARGO_HOME"/bin/bindgen-cli/
export PATH="$CARGO_HOME/bin/bindgen-cli:$PATH"
fi
FEATURES=('--no-default-features' '--features' 'curl-backend,reqwest-native-tls')
case "$(uname -s)" in
*NT* ) ;; # Windows NT
* ) FEATURES+=('--features' 'vendored-openssl') ;;
esac
case "$TARGET" in
# these platforms aren't supported by aws-lc-rs:
powerpc64* ) ;;
mips* ) ;;
loongarch* ) ;;
*netbsd* ) ;;
*illumos* ) ;;
*solaris* ) ;;
# default case, build with rustls enabled
* ) FEATURES+=('--features' 'reqwest-rustls-tls') ;;
esac
# rustc only supports armv7: https://doc.rust-lang.org/nightly/rustc/platform-support.html
if [ "$TARGET" = arm-linux-androideabi ]; then
export CFLAGS='-march=armv7'
fi
target_cargo() {
cmd="$1"
shift
cargo "${cmd}" --locked --profile "$BUILD_PROFILE" --target "$TARGET" "${FEATURES[@]}" "$@"
}
target_cargo build
# Machines have 7GB of RAM, and our target/ contents is large enough that
# thrashing will occur if we build-run-build-run rather than
# build-build-build-run-run-run. Since this is used solely for non-release
# artifacts, we try to keep features consistent across the builds, whether for
# docs/test/runs etc.
build_test() {
cmd="$1"
shift
features=('--features' 'curl-backend,reqwest-native-tls')
case "$TARGET" in
# these platforms aren't supported by aws-lc-rs:
powerpc* ) ;;
mips* ) ;;
riscv* ) ;;
s390x* ) ;;
# default case, build with rustls enabled
* ) features+=('--features' 'reqwest-rustls-tls') ;;
esac
if [ "build" = "${cmd}" ]; then
target_cargo "${cmd}" --workspace --all-targets "${features[@]}" --features test
else
target_cargo "${cmd}" --workspace "${features[@]}" --features test --tests
target_cargo "${cmd}" --doc --workspace "${features[@]}" --features test
fi
}
if [ -z "$SKIP_TESTS" ]; then
target_cargo run --features test -- --dump-testament
build_test build
RUSTUP_CI=1 build_test test
fi