Commit graph

31 commits

Author SHA1 Message Date
390a5d97fe nix, ci: build with Crane
This removes our dependency on cargo2nix, which was causing us some
issues. Whereas cargo2nix creates one Nix derivation per crate, Crane
uses only two derivations:

1. Build dependencies only
2. Build the final binary

This means that during the second step, no caching can be done. For
instance, if we do a change in garage_model, we need to recompile all of
the Garage crates including those that do not depend on garage_model.
On the upside, this allows all of the Garage crates to be built at once
using cargo build logic, which is optimized for high parallelism and
better pipelining between all of the steps of the build. All in all,
this makes most builds faster than cargo2nix.

A few other changes have been made to the build scripts and CI:

- Unit tests are now run within a Nix derivation. In fact, we have
  different derivations to run the tests using LMDB and Sqlite as
  metadata db engines.

- For debug builds, most CI steps now run in parallel (with the notable
  exception of the smoke test that runs after the build, which is
  inevitable).

- We no longer pass the GIT_VERSION argument when building debug builds
  and running the tests. This means that dev binaries and test
  binaries don't know the exact version of Garage they are from. That
  shouldn't be an issue in most cases.

- The not-dynamic.sh scripts has been fixed to fail if the file does not
  exist.
2025-02-03 16:39:50 +01:00
bb3e0f7d22 nix CI: reduce redundant work 2025-01-27 18:09:51 +01:00
83887a8519 nix build: remove clippy build env that doesn't work 2025-01-12 17:51:33 +01:00
0a15db6960 nix build: update rustc to v1.78 2025-01-12 17:37:36 +01:00
7061fa5a56
use rust 1.77 in nix/compile.nix 2024-08-26 19:19:16 +02:00
f7cd4eb600
Merge branch 'main' into next-0.10 2024-03-26 16:34:40 +01:00
fe8a7819fa
[syslog] Add support to logging to syslog
Original patch by Jakub Jirutka for Alpine Linux port.
2024-03-20 14:22:18 +01:00
0038ca8a78
Merge branch 'main' into next-0.10 2024-03-18 20:19:30 +01:00
b55f52a9b7
[sqlite-r2d2] run integration test with all db engines 2024-03-18 18:31:35 +01:00
44454aac01
[rm-sled] Remove the Sled database engine 2024-03-08 14:11:02 +01:00
8724aabdf5
[oxalica-toolchain-only] remove obsolete comment on toolchains 2024-02-08 23:23:27 +01:00
9e0b1dcf1c
[oxalica-toolchain-only] remove use of nixos rust toolchain 2024-02-08 19:10:26 +01:00
33e6db8b72
[dep-upgrade-202402] update rustc to 1.73 2024-02-08 12:33:09 +01:00
865f0c7d0c Add LMDB to debug builds 2023-06-09 12:04:28 +02:00
5efcdc0de3 Update rust toolchain to 1.68 and simplify Nix stuff 2023-04-25 14:46:47 +02:00
f251b4721f Apply nixfmt to all .nix files; fix devshell and add it to cache 2023-01-26 12:25:48 +01:00
e76dba9561
Make repository into a Nix flake 2022-11-16 23:25:34 +01:00
002b9fc50c
Add TLS support for Consul discovery + refactoring 2022-10-18 18:38:20 +02:00
667ca9d3e3
Cleanup nix scripts 2022-10-18 12:48:31 +02:00
e89e047c5a
Fix i386 build with custom toolchain (armv6 unknown state) 2022-10-14 18:10:24 +02:00
8d04ae7014
cargo2nix unstable (patched), rust 1.63.0, nixpkgs 22.05 (32-bit builds are broken) 2022-10-14 14:30:48 +02:00
e89f880694
Enable k2v feature flag in CI 2022-09-20 17:54:41 +02:00
782630fc27
Initialize metrics exporter earlier (fix #389) 2022-09-20 17:50:22 +02:00
f310fce34b
Inject GIT_VERSION even later 2022-09-07 18:30:15 +02:00
db61f41030
Move GIT_VERSION injection later in build chain to reduce build times 2022-09-07 11:59:56 +02:00
2c2b93acdf
Update Nix files with optional db engines 2022-09-06 17:20:10 +02:00
7de53a4d66
Force disable pkg-config for libsodum-sys and libzstd-sys 2022-09-06 16:41:58 +02:00
8d77a76df1
Update .nix files 2022-09-06 15:49:41 +02:00
2c7bae935a
Configure structopt to report the right version
By default, structopt reports the value provided by
the env var CARGO_PKG_VERSION, feeded by Cargo when reading
Cargo.toml. However for Garage we use a versioning based on git,
so we often report a version that is behind the real version.
In this commit, we create garage_util::version::garage() that
reports the right version and configure all structopt subcommands
to call this function instead of using the env var.
2022-08-11 10:21:45 +02:00
fcb04843f7
Run clippy in nix, leveraging nix caching ability 2022-07-26 18:27:52 +02:00
5fb8584247
Refactor default.nix to follow Nix Flakes patterns 2022-07-26 18:27:52 +02:00