`cargo clippy` failed with an error but this didn't cause mk/cargo.sh
to fail because it didn't contain `set -e`. Thus the `clippy` job has
been passing when it shouldn't.
Add the "bash strict mode" to the script.
I verified the other shell scripts use the "bash strict mode" already.
aarch64-unknown-linux-musl doesn't have profiler_builtins enabled so
use aarch64-unknown-linux-gnu instead.
Work around an issue where the "%m" feature of the LLVM source-based code
coverage doesn't work within QEMU.
Gather code review data to help guide the code review process. This is currently limited
to i686 and x86_64 Linux because these are the targets I could get working. More
investigation is needed to figure out how to collect coverage data for ARM targets.
Avoid requiring a sysroot for *-linux-musl targets when using Clang.
Add one AAarch64 and one 32-bit ARM MUSL target to GitHub Actions.
Use Rust 1.48's `-Clink-self-contained=yes` in CI for musl targets.
Support the non-default variants of the *-musl targets.
Android has its own `clang`, `llvm-ar`, etc., and if they are in `$PATH` then
they might accidentally get used when it isn't intended for them to be used.
As part of this, reduce the environment variables that are set to (almost) only
the ones needed for the given target. An exception is wasm32-unknown-unknown,
which has its variables set even regardless of whether "wasm32_c" is used.
Currently a .cargo/config file is written during the build when the linker
needs to be overridden. Instead, override the linker using the relatively
new environment variable. For symmetry, replace the use of `$TARGET_CC`
with `$CC_<target>` to demonstrate an easier-to-maintain way of setting
the compiler.
The build system is moving to a point where we know exactly what versions
of each thing are installed already, so they don't need to be logged in
travis.sh. Further, the logging would make future refactorings difficult.
The use of string interopolation makes it difficult to support optional environment variables.
Use a more flexible approach to make future changes easier.
`oss` is equivalent to `target.keys()` so eliminate `oss` in favor
of using `target.keys()`.
Similarly, `compilers` duplicates the list of targets. Fold it into
`targets` to eliminate the duplication.
This is a no-op change; `python mk/update-travis-yml.py` generates
the same `.travis.yml` as it did before.
Speed up the build by having fewer GCC-based configurations.
By default, test with GCC 9 (the default in Ubuntu Focal) when
configured to use GCC. This improves our coverage of GCC by
testing a newer version of GCC than we were ever testing before.
Add a couple of configurations for minimal GCC 4.8 compatibility
testing. This restores GCC 4.8 compatibility testing we had lost
earlier.