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

Lighthouse releases do not compile with latest Rust (1.65.0) #3695

Closed
michaelsproul opened this issue Nov 7, 2022 · 1 comment
Closed

Lighthouse releases do not compile with latest Rust (1.65.0) #3695

michaelsproul opened this issue Nov 7, 2022 · 1 comment
Labels
bug Something isn't working v3.3.0 Minor release following v3.2.0

Comments

@michaelsproul
Copy link
Member

Description

The latest Lighthouse release v3.2.1 cannot be compiled with Rust 1.65.0.

This is due to an inconsequential yet annoying incompatibility rather than a serious issue. The incompatibility is fixed in unstable and our next releases will be compatible with Rust 1.65.0.

The Error

The compilation error indicating the incompatibility looks like this:

error[E0275]: overflow evaluating the requirement `Vec<u8>: std::marker::Send`
  |
  = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`http_api`)
  = note: required because it appears within the type `std::result::Result<Vec<u8>, ()>`
  = note: required because it appears within the type `warp::reply::Json`
  = note: required because it appears within the type `(warp::reply::Json,)`
  = note: required for `BoxedFilter<(warp::reply::Json,)>` to implement `warp::filter::FilterBase`
  = note: required for `BoxedFilter<(warp::reply::Json,)>` to implement `warp::Filter`
  = note: 121 redundant requirements hidden
  = note: required for `warp::cors::internal::CorsFilter<warp::filter::map::Map<log::internal::WithLog<[closure@beacon_node/http_api/src/lib.rs:183:23: 183:34], log::internal::WithLog<[closure@beacon_node/http_api/src/lib.rs:150:23: 150:34], warp::filter::recover::Recover<warp::filter::or::Or<warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@warp::get::{closure#0}]>::{closure#0}]>, warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<BoxedFilter<(warp::reply::Json,)>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::WithHeader<warp::http::Response<warp::hyper::Body>>,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::WithHeader<warp::http::Response<warp::hyper::Body>>,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(WithStatus<eth2::StatusCode>,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::http::Response<Vec<u8>>,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(sse::SseReply<sse::SseKeepAlive<futures::stream::SelectAll<tokio_stream::stream_ext::map::Map<BroadcastStream<EventKind<<T as BeaconChainTypes>::EthSpec>>, [closure@beacon_node/http_api/src/lib.rs:3071:79: 3071:84]>>>>,)>>>, warp::filter::and::And<warp::filter::FilterFn<[closure@warp::filters::method::method_is<[closure@post::{closure#0}]>::{closure#0}]>, warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<warp::filter::or::Or<BoxedFilter<(eth2::StatusCode,)>, BoxedFilter<(eth2::StatusCode,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>, BoxedFilter<(warp::reply::Json,)>>>>, fn(Rejection) -> impl futures::Future<Output = std::result::Result<impl Reply, Infallible>> {handle_rejection}>>>, [closure@beacon_node/http_api/src/lib.rs:3187:14: 3187:21]>>` to implement `warp::filter::FilterBase`
  = note: required because it appears within the type `(std::net::SocketAddr, impl futures::Future<Output = ()>)`

The Workaround

From the lighthouse source directory, set an override for the 1.64 compiler then run make as normal:

rustup override set 1.64
make
@michaelsproul
Copy link
Member Author

Fixed by v3.3.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working v3.3.0 Minor release following v3.2.0
Projects
None yet
Development

No branches or pull requests

1 participant