summaryrefslogtreecommitdiff
path: root/.cirrus.yml
AgeCommit message (Collapse)Author
2023-06-05Fix CI with the latest RustupAlan Somers
The latest Rustup does not allow the toolchain specification to be blank, which we were using. Fix it by ensuring that only one toolchain is ever installed in a given task, so we won't need to use the +$TOOLCHAIN with cargo.
2022-12-14Rework vsock testStefano Garzarella
We mainly provide VsockAddr, so let's try to test well that VsockAddr mapping to libc::sockaddr_vm is correct. Let's remove all interactions with the socket, since vsock may or may not be available in the environment. Testing socket(), bind(), listen(), connect(), etc. caused unexpected failures, and it's out of scope of this crate. So let's simplify the vsock test focussing on VsockAddr. This should work also on graviton, so let's try to re-enable it. Fixes #1934 Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2022-12-05Update CI environment to FreeBSD 12.4Alan Somers
2022-12-04Tweak cirrus rust versionsAlex Saveau
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
2022-12-04Bump MSRV to 1.63 for I/O safetyAlex Saveau
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
2022-12-03Drop x86_64-unknown-darwin to Tier 2Alan Somers
And promote aarch64-unknown-darwin to Tier 1. Because that's what Cirrus CI is doing. Fixes #1904
2022-11-06Reformat everythingAlex Saveau
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
2022-08-25Eliminate Cargo.lock.msrvAlan Somers
We no longer need it since updating our MSRV to 1.56.1. Issue #1809
2022-08-14Raise the MSRV to 1.56.1 in anticipation of the next releaseAlan Somers
And fix some documentation lints warned about by the newer rustdoc.
2022-08-12Reenable cargo-hack in CIAlan Somers
But instead of building it from source, download pre-built binaries.
2022-08-11Also raise the MSRV just for cross-tests. Cross uses Serde too.Alan Somers
2022-08-11Disable cargo-hack in CIAlan Somers
Serde accidentally raised its MSRV to 1.51.0 in a patch release. They don't intent to fix it. Nix uses Serde via cargo-hack in CI. Disable it so we can publish a final release at 1.46.0.
2022-07-23Pin cargo-hack to 0.5.14 in CIAlan Somers
Newer versions of cargo-hack require a newer toolchain to install
2022-07-10Clippy cleanup in the tests.Alan Somers
* Remove a redundant closure. * Comparison with null * Manual implementation of find * Suppress a false positive
2022-06-25Pin cross to 0.2.1, as 0.2.2 requires Rust 1.58.1Ryan Zoeller
2022-06-24Add format test to CICostin-Robert Sin
To enforce uniformity for all PRs, the CI checks if the code is formatted rigth using `cargo fmt` tool. Signed-off-by: Costin-Robert Sin <sin.costinrobert@gmail.com>
2022-05-14add haiku supportAl Hoang
* enabled as much functionality and defines that match updated libc definitions for haiku
2022-05-14Rewrite the aio moduleAlan Somers
The existing AIO implementation has some problems: 1) The in_progress field is checked at runtime, not compile time. 2) The mutable field is checked at runtime, not compile time. 3) A downstream lio_listio user must store extra state to track whether the whole operation is partially, completely, or not at all submitted. 4) Nix does heap allocation itself, rather than allowing the caller to choose it. This can result in double (or triple, or quadruple) boxing. 5) There's no easy way to use lio_listio to submit multiple operations with a single syscall, but poll each individually. 6) The lio_listio usage is far from transparent and zero-cost. 7) No aio_readv or aio_writev support. 8) priority has type c_int; should be i32 9) aio_return should return a usize instead of an isize, since it only uses negative values to indicate errors, which Rust represents via the Result type. This rewrite solves several problems: 1) Unsolved. I don't think it can be solved without something like C++'s guaranteed type elision. It might require changing the signature of Future::poll too. 2) Solved. 3) Solved, by the new in_progress method and by removing the complicated lio_listio resubmit code. 4) Solved. 5) Solved. 6) Solved, by removing the lio_listo resubmit code. It can be reimplemented downstream if necessary. Or even in Nix, but it doesn't fit Nix's theme of zero-cost abstractions. 7) Solved. 8) Solved. 9) Solved. The rewrite includes functions that don't work on FreeBSD, so add CI testing for FreeBSD 14 too. By default only enable tests that will pass on FreeBSD 12.3. But run a CI job on FreeBSD 14 and set a flag that will enable such tests.
2022-05-11Merge #1699bors[bot]
1699: Revert "Pin nightly compiler used in CI for uclibc" r=rtzoeller a=asomers This reverts commit 23f18dfc18929965c95e0bcbdb8731645f07e401. libc v0.2.124 fixes the problem. Co-authored-by: Alan Somers <asomers@gmail.com>
2022-05-06Log compiler version in Cirrus CIRyan Zoeller
2022-04-18Revert "Pin nightly compiler used in CI for uclibc"Alan Somers
This reverts commit 23f18dfc18929965c95e0bcbdb8731645f07e401. libc v0.2.124 fixes the problem.
2022-04-15Merge #1698bors[bot]
1698: Update FreeBSD CI image to 12.3. 12.2 is EoL. r=rtzoeller a=asomers Co-authored-by: Alan Somers <asomers@gmail.com>
2022-04-14Update FreeBSD CI image to 12.3. 12.2 is EoL.Alan Somers
2022-04-10Pin nightly compiler used in CI for uclibcAlan Somers
Workaround for https://github.com/rust-lang/rust/issues/95866
2022-03-25Use the nightly toolchain for RedoxAlan Somers
The latest redox-syscall crate requires at least Rust 1.59.0, but they don't define an MSRV policy. And the version given in the rust-toolchain file in the Redox repository doesn't work. So until they clarify their MSRV, use nightly. https://gitlab.redox-os.org/redox-os/syscall/-/commit/30f29c32952343412bb6c36c9fda136d26e9431f
2022-01-29Add support for aarch64-apple-darwinRyan Zoeller
Replace 'OSX' language with 'macOS', to match Rust's language.
2022-01-24uclibc supportJonah Petri
2022-01-22Better type safety for mqueueAlan Somers
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.
2022-01-12Re-enable deprecation warnings on DragonFlyRyan Zoeller
Use latest nightly compiler.
2021-12-20try cargo-hack on Redox. It might work.Alan Somers
2021-12-20Use the correct toolchain for cargo-hackAlan Somers
2021-12-20feature-gate most Nix functionsVincent Dagonneau
Using features reduces build time and size for consumer crates. By default all features are enabled.
2021-12-14Pin the nightly compiler version used with DragonflyBSDAlan Somers
Newer rustc is broken on DragonflyBSD, probably by https://github.com/rust-lang/rust/commit/e68887e67cc6b7bb4ea5113a40eaa4c0831bda13
2021-12-14Update the OSX test environment for Big SurAlan Somers
Big Sur is the first OSX version that supports preadv/pwritev
2021-11-18Ensure that MSRV tests do not regressAleksey Kladov
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.
2021-11-15Suppress deprecation warnings on DragonflyAlan Somers
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
2021-11-15Update Redox compiler.Alan Somers
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.
2021-11-15Revert "Suppress a warning from the latest clippy"Alan Somers
This reverts commit fb1ae125d931b2de5bae05df614e8af565bf31c6. Nightly clippy removed the warning in question.
2021-10-22Revert "Temporarily use Rust 1.51.0 for testing cross-based builds"Alan Somers
This reverts commit 5e7c5f6e885753cb1d8ac2459da5a40b361ac684. Upstream swiftly fixed the bug.
2021-10-21Temporarily use Rust 1.51.0 for testing cross-based buildsAlan Somers
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
2021-10-03Suppress a warning from the latest clippyAlan Somers
2021-09-19Clippy cleanupAlan Somers
And this time, start running Clippy in CI
2021-09-17Update the FreeBSD CI imageAlan Somers
FreeBSD 11.4 will be EoL on 30-Sept
2021-09-04Check Dragonfly BSD and OpenBSD in CIAlan Somers
Build, but don't test, for these operating systems. Thanks to @rtzoeller for the tip. Also, fix the OpenBSD build.
2021-09-04DRY in the CI configAlan Somers
* Define the build and test scripts once instead of repeating them * Don't use cross with OSX. We no longer need it.
2021-09-04Document more thingsAlan Somers
Also, test rustdoc in CI, and demote missing_docs from a deny to a warning (but still deny it in CI).
2021-08-27Ignore vsock tests on Linux aarch64Alan Somers
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.
2021-08-27Test Linux aarch64 on real aarch64 hardware.Alan Somers
2021-08-22Multiple CI improvements:Alan Somers
* 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
2021-08-13Remove support for 32-bit Apple targetsAlan Somers