emk / rust-musl-builder

Docker images for compiling static Rust binaries using musl-libc and musl-gcc, with static versions of useful C libraries. Supports openssl and diesel crates.
Apache License 2.0
1.54k stars 193 forks source link

Build error: https://github.com/mariocao/actix-p2p #60

Closed PlaneB closed 5 years ago

PlaneB commented 5 years ago

First of all great work! The project is very much appreciated.

Anyway, building https://github.com/mariocao/actix-p2p outside of rust-musl-builder works without error on my Debian GNU/Linux 9 (stretch) 64 Bit machine with cargo 1.30.0 (36d96825d 2018-10-24) . However if I try to build inside the rust-musl-builder, I get the following errors:


error: cannot find derive macro Message in this scope --> src/codec.rs:8:17 | 8 | #[derive(Debug, Message)] | ^^^^^^^

error: cannot find derive macro Message in this scope --> src/codec.rs:14:17 | 14 | #[derive(Debug, Message)] | ^^^^^^^

error[E0658]: crate in paths is experimental (see issue #45477) --> src/client.rs:11:5 | 11 | use crate::codec::P2PCodec; | ^^^^^

error[E0658]: crate in paths is experimental (see issue #45477) --> src/client.rs:12:5 | 12 | use crate::session::Session; | ^^^^^

error[E0658]: crate in paths is experimental (see issue #45477) --> src/server.rs:17:5 | 17 | use crate::codec::P2PCodec; | ^^^^^

error[E0658]: crate in paths is experimental (see issue #45477) --> src/server.rs:18:5 | 18 | use crate::session::Session; | ^^^^^

error[E0658]: crate in paths is experimental (see issue #45477) --> src/session.rs:13:5 | 13 | use crate::codec::{P2PCodec, Request}; | ^^^^^

error[E0658]: crate in paths is experimental (see issue #45477) --> src/main.rs:14:5 | 14 | use crate::client::Client; | ^^^^^

error[E0658]: crate in paths is experimental (see issue #45477) --> src/main.rs:15:5 | 15 | use crate::server::Server; | ^^^^^

error: aborting due to 9 previous errors

For more information about this error, try rustc --explain E0658. error: Could not compile actix-p2p.


E0658:

An unstable feature was used.

Erroneous code example:

#[repr(u128)] // error: use of unstable library feature 'repr128'
enum Foo {
    Bar(u64),
}

If you're using a stable or a beta version of rustc, you won't be able to use any unstable features. In order to do so, please switch to a nightly version of rustc (by using rustup).

If you're using a nightly version of rustc, just add the corresponding feature to be able to use it:

samsieber commented 5 years ago

I had the same problem with using it for a project that I moved to the 2018 edition on stable.

Turns out, I had used it earlier, and to update the version of rust in the docker image, you need to pull an update.

docker pull ekidd/rust-musl-builder

After that it worked like a charm.

emk commented 5 years ago

Yup! Please run docker pull ekidd/rust-musl-builder to update your build image. Or you can hard-code a specific Rust release in your Dockerfile:

FROM ekidd/rust-musl-builder:1.31.0

I try to re-build this image once every 6 weeks, generally on the day when a new stable Rust is released, and to tag the individual versions.

If you try this and still encounter this problem, please feel free to re-open this issue, or to file a new one.