Rebase of #610 and also move emscripten up much higher in the hierarchy to
ensure that it doesn't have too much of a ripple effect on other platforms.
This involved moving down a good number of definitions, but hopefully was done
with care to not break anything!
This works by specifying a "runner" for actually executing the binary.
This doesn't apply to the Android or NetBSD runs because there
isn't a simple binary that just runs the executable.
We now create an additional binary `linux_fcntl` for testing this
since there are header conflicts when including all necessary headers.
This binary is run on all platforms even though it's empty on all non-
Android/non-Linux platforms.
Testing has been switched from a custom binary to using a runner-less
test (or pair of tests). This means that for local development a simple
`cd libc-test && cargo test` will run all the tests. CI has also been
updated here to reflect that.
It's now broken due to changes in the `gcc` crate and having a too-old compiler,
and in general it's unfortunately architecturally so different from the other
test frameworks that it's difficult to maintain over time.
Documentation generation appears to be failing on master (https://travis-ci.org/rust-lang/libc/jobs/183483333):
```
Collecting ghp-import
Downloading ghp-import-0.4.1.tar.gz
Collecting travis
Could not find a version that satisfies the requirement travis (from versions: )
No matching distribution found for travis
```
Basically `--user` doesn't appear to take an option, so `pip install ghp_import --user $USER` makes pip think the user is a package that needs to be installed (in this case `travis`). As there is no `travis` package, it dies.
This helps caching between runs and can help speed up turnaround time for
various operations. The old android container didn't work out for some reason
due to permissions so the definition has now been vendored locally to just
rebuild it each time.
* Override the compiler via CC; ./configure can't seem to detect it.
* Unset CROSS_COMPILE when running make. Per the comment, we otherwise
end up invoking commands like i686-ar.
Specifically:
* Update the base docker images to ubuntu 16.10
* Update musl to version 1.1.15
This is necessary since the versions we were previously using do not
define CLONE_NEWCGROUP, so adding the symbol to the libc crate causes
test failures.
- allow QEMU name to have subdirectory inside (replace `/` by `__` in
the filename)
- add a new code path for plain qcow2 image (for efficient bandwidth
usage, the qcow2 is expected to use compressed qcow2 format)
- move freebsd image to explicitly download the gzipped QEMU
Previously we were somewhat half-Docker, half-Travis, half apt-get, etc. This
commit alters the CI infrastructure to use Docker images for each target. This
should make it much easier to update the images and tweak various bits and
pieces of installed software. Additionally, it's also much clearer now what's
needed for each suite of tests!
Some images were updated a bit (e.g. musl is now 1.1.14), but other images
encountered failures when updating so they're not getting updated just yet.
It's tough to have PRs bounce or to have a back and forth with contributors
about minor style quibbles. Sometimes it ends up just being easier to fix style
after the fact, but let's add some automation to help this!
This commit adds a script to run on CI and locally to verify the style of this
repository. There's a few stylistic guidelines to ensure that definitions are
understandable across the jungle of modules. This consistency should help assist
readability for any future readers!
This commit adds support to test all libc definitions on both OpenBSD and
FreeBSD via QEMU userspace emulation. Specially prepared images for each OS are
used which are essentially intended to run a script on startup and then exit.
Documentation has been added to the `ci/README.md` file describing this new
system.