Upgrade to Ubuntu 20.04 (Focal Fossa) except for Android targets (see comment
in travis.sh).
The newer Ubuntu has a new-enough version of kcov; use it instead of
building kcov from source. This eliminates CI/CD's dependency on a C++
compiler, CMake, OpenSSL(!), etc. Simplify things accordingly.
Use Ubuntu's QEMU packages instead of the backport we were using before.
The backport is no longer required with the new version of Ubuntu and
also adding the PPA didn't work in the new version.
Use Ubuntu's `clang` package instead of using the LLVM project's PPA.
Thigns are failing with an "Illegal instruction" error. I initially thought
it was specific to Rust 1.40 but it is now happening with Rust 1.39 too, so
I'm assuming something changed in the emulator or NDK, since the Android SDK
isn't locked in CI/CD yet.
Embed test data files into test executables so that file I/O isn't
necessary during tests. This allows the tests to run on platforms that
don't have file I/O. It also makes it easier to run the tests on a
separate (virtual) machine from the build machine since the test
automation no longer needs to keep track of the test files.
Testing with API 24 images because there are no API 26 ARM images available.
I agree to license my contributions to each file under the terms given
at the top of each file I changed.
Run on Rust stable.
Install C++ compiler and other Kcov dependencies.
Don't install sources and packages that are not needed.
Update Kcov to the latest version.
I agree to license my contributions to each file under the terms given
at the top of each file I changed.
Removed unnecessary `sudo` entries.
Make `distro` explicit in case we want to mix Linux build environments.
Adjust compiler packages to the correct defaults.
I agree to license my contributions to each file under the terms given
at the top of each file I changed.
The Travis CI testing using the Android emulator was broken a while
back. See https://github.com/briansmith/ring/issues/603. Until that
is fixed, just don't run the tests on Android. This is unfortunate,
however it is necessary to make progress on improvements for higher-
priority platforms.
Newer versions of rustc generate a "ring-$something.d" file that was
matched by the old pattern. Update the pattern to be more picky to
unbreak this part of the Android CI.
Now the Android stuff is at least built again. Running the tests in the
emulator still fails due to an unrelated issue.
Thanks to andrewtj for proposing this.
It seems that the old way of installing the libraries for the target
doesn't work any more. Using `rustup` is better anyway since that is
how most people are installing Rust.