Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check minimum supported Rust version. #390

Open
rndhouse opened this issue Apr 20, 2022 · 1 comment
Open

Check minimum supported Rust version. #390

rndhouse opened this issue Apr 20, 2022 · 1 comment

Comments

@rndhouse
Copy link
Contributor

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.

@rndhouse rndhouse changed the title Check minimum supported rustc version. Check minimum supported Rust version. Apr 20, 2022
@darosior
Copy link
Member

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants