Age | Commit message (Collapse) | Author |
|
Replace 'OSX' language with 'macOS', to match Rust's language.
|
|
|
|
On some platforms, mqd_t is a pointer. That means code like the below
can trigger a segfault. Fix it by defining a Newtype around mqd_t that
prevents use-after-free and dangling pointer scenarios.
```rust
fn invalid_mqd_t() {
let mqd: libc::mqd_t = std::ptr::null_mut();
mq_close(mqd).unwrap();
}
```
Also, get test coverage for mqueue in CI on FreeBSD.
|
|
Use latest nightly compiler.
|
|
|
|
|
|
Using features reduces build time and size for consumer crates. By
default all features are enabled.
|
|
Newer rustc is broken on DragonflyBSD, probably by https://github.com/rust-lang/rust/commit/e68887e67cc6b7bb4ea5113a40eaa4c0831bda13
|
|
Big Sur is the first OSX version that supports preadv/pwritev
|
|
When testing with older versions of rustc, there's a CI failure mode
when our dependency, which used to be compatible with that Rust version,
publishes a new version which can't be compiled using that old Rust
anymore. That's pretty unfortunate, as that means that third parties can
break our CI without any changes to the code in this repo.
To protect against that, let's use Cargo.lock on CI, but only when
testing against older versions. For stable Rust, we continue to generate
Cargo.lock with freshest dependencies. Implementation wise, we save
known-good Cargo.lock as `Cargo.lock.msrv`, and just copy that in every
relevant CI job.
To get a working `Cargo.lock.msrv`, I run `cargo +nightly
generate-lockfile -Zminimal-versions` -- that is guaranteed to support
the oldest Rust version we can.
|
|
libc::stat is deprecated on DragonflyBSD in libc. But there isn't any
alternative yet, so Nix must simply suppress the warnings. It's used in
too many places to suppress each one individually, so just suppress all
deprecation warnings globally until it's properly fixed.
https://github.com/rust-lang/libc/pull/2522
|
|
The latest libc uses the native_link_modifiers feature, which isn't
known by the old compiler used in the Redox builds. Update Redox's
compiler to that used by the Redox project itself.
|
|
This reverts commit fb1ae125d931b2de5bae05df614e8af565bf31c6.
Nightly clippy removed the warning in question.
|
|
This reverts commit 5e7c5f6e885753cb1d8ac2459da5a40b361ac684.
Upstream swiftly fixed the bug.
|
|
A bug in gimli-rs/object is causing the build to fail at the
"cargo install cross" step. Until that's fixed, we must use Rust 1.51.0
or newer for cross-based builds.
https://github.com/gimli-rs/object/issues/394
|
|
|
|
And this time, start running Clippy in CI
|
|
FreeBSD 11.4 will be EoL on 30-Sept
|
|
Build, but don't test, for these operating systems. Thanks to
@rtzoeller for the tip.
Also, fix the OpenBSD build.
|
|
* Define the build and test scripts once instead of repeating them
* Don't use cross with OSX. We no longer need it.
|
|
Also, test rustdoc in CI, and demote missing_docs from a deny to a
warning (but still deny it in CI).
|
|
Apparently AWS Graviton containers don't support it. socket() retunrs
EAFNOSUPPORT in that environment.
Also, be more selective about skipping tests under QEMU
Instead of skipping them on architectures where we happen to use QEMU,
only skip them when QEMU is actually being used.
|
|
|
|
* Install cross the easy way, via cargo
* Don't test in release mode. Nix contains no release-dependent paths,
and release mode testing has to my knowledge never revealed a bug in
Nix.
* Add Linux powerpc back to CI, fixed by the latest cross.
* Check the tests even on platforms that can't run them.
* DRY for the Illumos and Redox sections
* Cross-check iOS from a Linux VM instead of OSX
* Revert the workaround for rust-lang/rustup issue 2774
|
|
|
|
Bitflags raised its MSRV in a minor version, forcing all consumers to
follow suit.
Fixes #1491
|
|
* libc::aiocb must not be moved while the kernel has a pointer to it.
This change enforces that requirement by using std::pin.
* Split LioCbBuilder out of LioCb. struct LioCb relied on the
(incorrect) assumption that a Vec's elements have a stable location in
memory. That's not true; they can be moved during Vec::push. The
solution is to use a Vec in the new Builder struct, but finalize it to
a boxed slice (which doesn't support push) before allowing it to be
submitted to the kernel.
* Eliminate owned buffer types. mio-aio no longer uses owned buffers
with nix::aio. There's little need for it in the world of
async/await. I'm not aware of any other consumers. This
substantially simplifies the code.
|
|
A regression in rustup has broken that tool on FreeBSD. Set
RUSTUP_IO_THREADS=1 as a workaround.
https://github.com/rust-lang/rustup/issues/2774
|
|
Travis didn't compile check tests on platforms that couldn't run tests
in CI, so they bitrotted. Let's see how bad they are.
Most annoyingly, 32-bit Android defines mode_t as 16 bits, but
stat.st_mode as 32-bits.
|
|
Co-authored-by: Dominik Hassler <hadfl@omnios.org>
Co-authored-by: Joshua M. Clulow <josh@sysmgr.org>
|
|
|
|
https://github.com/cirruslabs/cirrus-ci-docs/issues/741
|
|
|
|
Allow nix to compile on Fuchsia by conditionally avoiding libc
functionality that does not exist for Fuchsia.
|
|
This was missed in d36353701341df9cfffb4fc4e88c002698d2deda.
|
|
This will shortly be needed for Fuchsia support.
|
|
Travis has been super-slow lately (> 6 hours per build). Cirrus is much
faster: about 20 minutes. Cirrus also has slightly better test
coverage, mainly because it doesn't use SECCOMP.
Also,
* Fix the Redox CI build. The old Travis configuration didn't actually
build for Redox, so we never noticed that Redox can't be built with a
stable compiler. Thanks to @coolreader18 for finding this.
* Disable the udp_offload tests on cross-tested platforms. These tests
are failing with ENOPROTOOPT in Cirrus-CI. I suspect it's due to a
lack of support in QEMU. These tests were skipped on Travis because
its kernel was too old.
* Fix require_kernel_version on Cirrus-CI. Cirrus reports the Linux
kernel version as 4.19.112+, which the semver crate can't handle.
* Fix test_setfsuid on Cirrus. When run on Cirrus, it seems like the
file in /tmp gets deleted as soon as it's closed. Probably an
overzealous temporary file cleaner. Use /var/tmp, because no
temporary file cleaner should run in there.
* Skip mount tests on Cirrus. They fail for an unknown reason.
Issue #1351
* Skip the AF_ALG tests on Cirrus-CI
Issue #1352
|
|
|
|
11.2 is EOL.
|
|
|
|
This should fix CI on FreeBSD after Rustup 1.20.0 was released, and save
time as well.
|
|
The minimum supported Rust version is being raised to 1.36.0 as this
is the first release to support the `mem::MaybeUninit` feature.
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
|
|
* Replace obsolete range syntax "..." with inclusive range "..="
* Use dyn Trait syntax instead of Box<Trait>
* Raise MSRV to 1.27.0 (for dyn Trait syntax)
* Raise MSRV to 1.31.0 (because of rand)
tempfile pulls in rand, and rand pulls in fuchsia-cprng, which requires
1.31.0. Why rand pulls in fuchsia-cprng I don't know. It's specified
as a target-specific dependency, but Cargo tries to build it anyway
(only on Linux, not on FreeBSD or OSX). A bug in Cargo 1.27.0?
|
|
Also bump Rust requirement to 1.25 which is a requirement of that feature
|
|
|
|
This change does the following:
1) Adds a CI build on cirrus-ci.com
2) Switches FreeBSD's CI from a jail to a full VM
3) Switches FreeBSD i386's CI from a 32-bit jail to simply using a
cross-compiled binary on a 64-bit VM.
4) Switches FreeBSD i386's CI from using stable rust to 1.24.1 (back
when I added buildbot, rustup didn't support i686-unknown-freebsd)
5) Switches bors to gate on cirrus-ci rather than buildbot
This change does _not_ disable buildbot. That must happen outside of
git.
Fixes #996
|