revault/revaultd

Check minimum supported Rust version.

Opened this issue · 1 comments

When I try to build using Rust 1.43 I get the following output:

user@dev:~/dev/revault/revaultd$ podman build -t test ./tests
STEP 1: FROM docker.io/rust:1.43 AS builder_revaultd
STEP 2: WORKDIR /revaultd
--> Using cache 16b89cbfb92d59dc0a8df00cb5a6ec41fa9448dc0ce67b255a3b93ab8a21d593
--> 16b89cbfb92
STEP 3: COPY ../ .
--> 57ffba82b4a
STEP 4: RUN cargo install --path .
^Cuser@dev:~/dev/revault/revaultd$ podman build -t test -f ./tests/Containerfile .
STEP 1: FROM docker.io/rust:1.43 AS builder_revaultd
STEP 2: WORKDIR /revaultd
--> Using cache 16b89cbfb92d59dc0a8df00cb5a6ec41fa9448dc0ce67b255a3b93ab8a21d593
--> 16b89cbfb92
STEP 3: COPY . .
--> 438caaab23c
STEP 4: RUN cargo install --path .
  Installing revaultd v0.3.1 (/revaultd)
    Updating crates.io index
    Updating git repository `https://github.com/revault/revault_net`
    Updating git repository `https://github.com/revault/revault_tx`
 Downloading crates ...
  Downloaded serde v1.0.136
  Downloaded base64 v0.13.0
  Downloaded mio v0.7.14
  Downloaded dirs v3.0.2
  Downloaded serde_json v1.0.79
  Downloaded bitcoin v0.27.1
  Downloaded toml v0.5.9
  Downloaded log v0.4.16
  Downloaded jsonrpc-core v15.1.0
  Downloaded daemonize-simple v0.1.5
  Downloaded jsonrpc v0.12.1
  Downloaded backtrace v0.3.65
  Downloaded jsonrpc-derive v15.1.0
  Downloaded miniscript v6.1.0
  Downloaded rusqlite v0.26.3
  Downloaded libc v0.2.124
  Downloaded fern v0.6.1
  Downloaded snow v0.7.2
  Downloaded cfg-if v1.0.0
  Downloaded bitflags v1.3.2
  Downloaded addr2line v0.17.0
  Downloaded ryu v1.0.9
  Downloaded rustc-demangle v0.1.21
  Downloaded quote v1.0.18
  Downloaded syn v1.0.91
  Downloaded bitcoin_hashes v0.10.0
  Downloaded secp256k1 v0.20.3
  Downloaded base64-compat v1.0.0
  Downloaded cc v1.0.73
  Downloaded memchr v2.4.1
  Downloaded dirs-sys v0.3.7
  Downloaded hashlink v0.7.0
  Downloaded fallible-streaming-iterator v0.1.9
  Downloaded bech32 v0.8.1
  Downloaded futures v0.1.31
  Downloaded itoa v1.0.1
  Downloaded fallible-iterator v0.2.0
  Downloaded smallvec v1.8.0
  Downloaded serde_derive v1.0.136
  Downloaded object v0.28.3
  Downloaded proc-macro2 v1.0.37
  Downloaded sodiumoxide v0.2.7
  Downloaded miniz_oxide v0.5.1
  Downloaded proc-macro-crate v0.1.5
  Downloaded unicode-xid v0.2.2
  Downloaded rand_core v0.5.1
  Downloaded rustc_version v0.2.3
  Downloaded subtle v2.4.1
  Downloaded secp256k1-sys v0.4.2
  Downloaded hashbrown v0.11.2
  Downloaded byteorder v1.4.3
  Downloaded ed25519 v1.4.1
error: failed to compile `revaultd v0.3.1 (/revaultd)`, intermediate artifacts can be found at `/revaultd/target`

Caused by:
  failed to parse manifest at `/usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/ed25519-1.4.1/Cargo.toml`

Caused by:
  failed to parse the `edition` key

Caused by:
  supported edition values are `2015` or `2018`, but `2021` is unknown
Error: error building at STEP "RUN cargo install --path .": error while running runtime: exit status 101

Container file is just:

FROM docker.io/rust:1.43 as builder_revaultd
WORKDIR /revaultd
COPY . .
RUN cargo install --path .

Which porbably means that the README is incorrect:

`revaultd` should always compile and pass tests using **Rust 1.43**.

I'm not sure how important that is to you guys but I figured I'd point it out.

Thank you for raising this. The ed25519 crate recently bumped their MSRV (in a minor version...). We therefore need to pin it.

Looks like cargo install ignores the Cargo.lock? It is pinned to 1.2.0 in the Cargo.lock so i don't have any issue building with 1.43 locally with:

git fetch upstream && git checkout upstream/master && cargo clean && cargo +1.43 build

I'm not sure how important that is to you guys but I figured I'd point it out.

It is important for a number of reasons, but primarily:

  • to be able to use a compiler vouched-by and released in decent package managers (current Debian stable is 1.48 so we have some margin)
  • to be able to use an alternative compiler, such as mrustc (which was recently upgraded to support 1.54, so here again we have some slack)
  • for bootstrap-able builds that are a goal to have for this project. Bootstrapping the compiler is part of this (see point 2.) and we therefore don't want to depend on bleeding-edge features.