The `dtolnay/rust-toolchain` action accepts a lot of options, including things like "stable 8 weeks
ago". Instead of trying to have this action validate the input, we'll leave it to
`dtolnay/rust-toolchain`.
This also adds tests using non-stable toolchains.
Until https://github.com/cross-rs/cross/issues/1628 is resolved, running cross on Linux ARM also
requires the user to provide a custom Docker image, so this is only sort of usable.
It seems like restoring the cache for subcrate deletes sometimes removes the compiled binaries for
the parent crate. I'm not sure what's going on here, as it doesn't happen every time.
For test commands, there can be arguments passed to the test binary like `-- --ignored` or `--
--test-threads=1`. For these cases to work properly, the `args` parameter needs to be added to the
end of the 'test' command.
While in theory this should work without `cross`, compiling `openssl` with the
`vendored` feature fails when we run `cargo build --target i686-unknown-linux-musl`.
This commit updates the tests to check that this works and also rewrites the
test script from Bash to Perl.
Co-authored-by: Dave Rolsky <autarch@urth.org>