The main branch does not build in Ubuntu Linux, and fails with the following Cargo output:
Checking forester-rs v0.3.2 (/workspaces/forester)
error[E0432]: unresolved import `hyper::client`
--> src/runtime/action/builtin/remote.rs:6:12
|
6 | use hyper::client::HttpConnector;
| ^^^^^^ could not find `client` in `hyper`
|
note: found an item that was configured out
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/lib.rs:99:13
|
99 | pub mod client;
| ^^^^^^
= note: the item is gated behind the `client` feature
error[E0432]: unresolved import `hyper::Client`
--> src/runtime/action/builtin/remote.rs:7:25
|
7 | use hyper::{body, Body, Client, Method, Request};
| ^^^^^^ no `Client` in the root
|
= help: consider importing one of these items instead:
reqwest::Client
reqwest::blocking::Client
tungstenite::protocol::Role::Client
note: found an item that was configured out
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/lib.rs:102:28
|
102 | pub use crate::client::Client;
| ^^^^^^
= note: the item is gated behind the `client` feature
error[E0432]: unresolved import `hyper::client`
--> src/runtime/forester/serv.rs:13:12
|
13 | use hyper::client::HttpConnector;
| ^^^^^^ could not find `client` in `hyper`
|
note: found an item that was configured out
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/lib.rs:99:13
|
99 | pub mod client;
| ^^^^^^
= note: the item is gated behind the `client` feature
error[E0432]: unresolved import `hyper::Client`
--> src/runtime/forester/serv.rs:16:19
|
16 | use hyper::{Body, Client};
| ^^^^^^ no `Client` in the root
|
= help: consider importing one of these items instead:
reqwest::Client
reqwest::blocking::Client
tungstenite::protocol::Role::Client
note: found an item that was configured out
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/lib.rs:102:28
|
102 | pub use crate::client::Client;
| ^^^^^^
= note: the item is gated behind the `client` feature
error[E0433]: failed to resolve: could not find `Client` in `hyper`
--> src/runtime/action/builtin/remote.rs:64:24
|
64 | hyper::Client::builder().build(HttpConnector::new());
| ^^^^^^ could not find `Client` in `hyper`
|
note: found an item that was configured out
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/lib.rs:102:28
|
102 | pub use crate::client::Client;
| ^^^^^^
= note: the item is gated behind the `client` feature
help: consider importing one of these items
|
1 + use reqwest::Client;
|
1 + use reqwest::blocking::Client;
|
help: if you import `Client`, refer to it directly
|
64 - hyper::Client::builder().build(HttpConnector::new());
64 + Client::builder().build(HttpConnector::new());
|
error[E0433]: failed to resolve: could not find `Client` in `hyper`
--> src/runtime/forester/serv.rs:92:64
|
92 | let client:Client<HttpConnector,Body> = hyper::Client::builder().build(HttpConnector::new());
| ^^^^^^ could not find `Client` in `hyper`
|
note: found an item that was configured out
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/lib.rs:102:28
|
102 | pub use crate::client::Client;
| ^^^^^^
= note: the item is gated behind the `client` feature
help: consider importing one of these items
|
3 + use reqwest::Client;
|
3 + use reqwest::blocking::Client;
|
help: if you import `Client`, refer to it directly
|
92 - let client:Client<HttpConnector,Body> = hyper::Client::builder().build(HttpConnector::new());
92 + let client:Client<HttpConnector,Body> = Client::builder().build(HttpConnector::new());
|
warning: unused doc comment
--> src/runtime/action/builtin/remote.rs:65:13
|
65 | /// todo with vec is slow. Bytes?
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
66 | let body_js = serde_json::to_vec(&request).unwrap();
| ---------------------------------------------------- rustdoc does not generate documentation for statements
|
= help: use `//` for a plain comment
= note: `#[warn(unused_doc_comments)]` on by default
warning: unused import: `format`
--> src/runtime/args.rs:17:16
|
17 | use std::fmt::{format, Display, Formatter};
| ^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: unused import: `RtArgument`
--> src/runtime/forester/decorator.rs:1:36
|
1 | use crate::runtime::args::{RtArgs, RtArgument, RtValue, RtValueNumber};
| ^^^^^^^^^^
warning: unused import: `FlowType`
--> src/runtime/rtree.rs:11:51
|
11 | use crate::runtime::rtree::rnode::{DecoratorType, FlowType, RNode, RNodeId};
| ^^^^^^^^
error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
--> src/runtime/action/builtin/remote.rs:77:22
|
77 | .and_then(|bytes| to_fail(serde_json::from_slice::<TickResult>(&bytes))),
| ^^^^^^^^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `[u8]`
note: required by a bound in `Result::<T, E>::and_then`
--> /home/user/.rustup/toolchains/1.79.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:518:6
|
518 | impl<T, E> Result<T, E> {
| ^ required by this bound in `Result::<T, E>::and_then`
...
1319 | pub fn and_then<U, F: FnOnce(T) -> Result<U, E>>(self, op: F) -> Result<U, E> {
| -------- required by a bound in this associated function
error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
--> src/runtime/action/builtin/remote.rs:77:32
|
77 | .and_then(|bytes| to_fail(serde_json::from_slice::<TickResult>(&bytes))),
| ^^^^^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `[u8]`
= note: all function arguments must have a statically known size
error[E0277]: the size for values of type `[u8]` cannot be known at compilation time
--> src/runtime/action/builtin/remote.rs:76:34
|
76 | Ok(r) => to_fail(body::to_bytes(r.into_body()).await)
| ------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
| |
| required by a bound introduced by this call
|
= help: the trait `Sized` is not implemented for `[u8]`
note: required by an implicit `Sized` bound in `to_fail`
--> src/runtime.rs:124:16
|
124 | pub fn to_fail<V, E: Debug>(r: Result<V, E>) -> RtResult<V> {
| ^ required by the implicit `Sized` requirement on this type parameter in `to_fail`
help: consider relaxing the implicit `Sized` restriction
--> src/runtime.rs:124:17
|
124 | pub fn to_fail<V: ?Sized, E: Debug>(r: Result<V, E>) -> RtResult<V> {
| ++++++++
error[E0277]: the trait bound `fn(axum::extract::State<serv::HttpServ>, axum::Json<CustomEvent>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::trace}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:136:39
|
136 | .route("/tracer/custom", post(trace))
| ---- ^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(State<HttpServ>, Json<CustomEvent>) -> impl Future<Output = Response<UnsyncBoxBody<Bytes, Error>>> {trace}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `post`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:407:1
|
407 | top_level_handler_fn!(post, POST);
| ^^^^^^^^^^^^^^^^^^^^^^----^^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `post`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `fn(axum::extract::State<serv::HttpServ>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::print_trace}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:137:37
|
137 | .route("/tracer/print", get(print_trace))
| --- ^^^^^^^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(State<HttpServ>) -> impl Future<Output = Response<UnsyncBoxBody<Bytes, Error>>> {print_trace}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `axum::routing::get`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:403:1
|
403 | top_level_handler_fn!(get, GET);
| ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `get`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `fn(axum::extract::Path<std::string::String>, axum::extract::State<serv::HttpServ>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::bb_lock}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:138:37
|
138 | .route("/bb/:key/lock", get(bb_lock))
| --- ^^^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(Path<String>, State<HttpServ>) -> impl Future<Output = Response<UnsyncBoxBody<Bytes, Error>>> {bb_lock}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `axum::routing::get`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:403:1
|
403 | top_level_handler_fn!(get, GET);
| ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `get`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `fn(axum::extract::Path<std::string::String>, axum::extract::State<serv::HttpServ>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::bb_unlock}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:139:39
|
139 | .route("/bb/:key/unlock", get(bb_unlock))
| --- ^^^^^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(Path<String>, State<HttpServ>) -> impl Future<Output = Response<UnsyncBoxBody<Bytes, Error>>> {bb_unlock}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `axum::routing::get`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:403:1
|
403 | top_level_handler_fn!(get, GET);
| ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `get`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `fn(axum::extract::Path<std::string::String>, axum::extract::State<serv::HttpServ>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::bb_is_locked}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:140:39
|
140 | .route("/bb/:key/locked", get(bb_is_locked))
| --- ^^^^^^^^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(Path<String>, State<HttpServ>) -> impl Future<Output = Response<UnsyncBoxBody<Bytes, ...>>> {bb_is_locked}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `axum::routing::get`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:403:1
|
403 | top_level_handler_fn!(get, GET);
| ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `get`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `fn(axum::extract::Path<std::string::String>, axum::extract::State<serv::HttpServ>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::bb_contains}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:141:41
|
141 | .route("/bb/:key/contains", get(bb_contains))
| --- ^^^^^^^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(Path<String>, State<HttpServ>) -> impl Future<Output = Response<UnsyncBoxBody<Bytes, Error>>> {bb_contains}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `axum::routing::get`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:403:1
|
403 | top_level_handler_fn!(get, GET);
| ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `get`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `fn(axum::extract::Path<std::string::String>, axum::extract::State<serv::HttpServ>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::bb_take}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:142:37
|
142 | .route("/bb/:key/take", get(bb_take))
| --- ^^^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(Path<String>, State<HttpServ>) -> impl Future<Output = Response<UnsyncBoxBody<Bytes, Error>>> {bb_take}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `axum::routing::get`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:403:1
|
403 | top_level_handler_fn!(get, GET);
| ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `get`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `fn(axum::extract::Path<std::string::String>, axum::extract::State<serv::HttpServ>, axum::Json<RtValue>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::bb_put}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:143:33
|
143 | .route("/bb/:key", post(bb_put))
| ---- ^^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(Path<String>, State<HttpServ>, Json<RtValue>) -> impl Future<Output = Response<...>> {bb_put}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `post`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:407:1
|
407 | top_level_handler_fn!(post, POST);
| ^^^^^^^^^^^^^^^^^^^^^^----^^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `post`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `fn(axum::extract::Path<std::string::String>, axum::extract::State<serv::HttpServ>) -> impl Future<Output = hyper::Response<http_body::combinators::box_body::UnsyncBoxBody<hyper::body::Bytes, axum::Error>>> {routes::bb_get}: Handler<_, _, _>` is not satisfied
--> src/runtime/forester/serv.rs:144:32
|
144 | .route("/bb/:key", get(bb_get))
| --- ^^^^^^ the trait `Handler<_, _, _>` is not implemented for fn item `fn(Path<String>, State<HttpServ>) -> impl Future<Output = Response<UnsyncBoxBody<Bytes, Error>>> {bb_get}`
| |
| required by a bound introduced by this call
|
= help: the following other types implement trait `Handler<T, S, B>`:
<Layered<L, H, T, S, B, B2> as Handler<T, S, B2>>
<MethodRouter<S, B> as Handler<(), S, B>>
note: required by a bound in `axum::routing::get`
--> /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/axum-0.6.20/src/routing/method_routing.rs:403:1
|
403 | top_level_handler_fn!(get, GET);
| ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^
| | |
| | required by a bound in this function
| required by this bound in `get`
= note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info)
warning: unused import: `Impl`
--> src/runtime/action/builtin/remote.rs:1:30
|
1 | use crate::runtime::action::{Impl, ImplRemote, Tick};
| ^^^^
warning: unused import: `Write`
--> src/tree/parser/ast/arg.rs:8:36
|
8 | use std::fmt::{Display, Formatter, Write};
| ^^^^^
warning: unused import: `DaemonFn`
--> src/runtime/env.rs:16:35
|
16 | use crate::runtime::env::daemon::{DaemonFn, DaemonName, Daemon};
| ^^^^^^^^
warning: unused variable: `id`
--> src/runtime/rtree/analyzer.rs:46:21
|
46 | .find(|(id, node)| filter(node))
| ^^ help: if this is intentional, prefix it with an underscore: `_id`
|
= note: `#[warn(unused_variables)]` on by default
warning: unused variable: `parent_args`
--> src/runtime/rtree.rs:140:32
|
140 | let (p_id, parent_args, parent_params) =
| ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_args`
warning: unused variable: `parent_params`
--> src/runtime/rtree.rs:140:45
|
140 | let (p_id, parent_args, parent_params) =
| ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parent_params`
warning: irrefutable `if let` pattern
--> src/simulator/builder.rs:115:12
|
115 | if let TracerSimConfig { file, dt_fmt } = profile.config.tracer {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this pattern will always match, so the `if let` is useless
= help: consider replacing the `if let` with a `let`
= note: `#[warn(irrefutable_let_patterns)]` on by default
Some errors have detailed explanations: E0277, E0432, E0433.
For more information about an error, try `rustc --explain E0277`.
warning: `forester-rs` (lib) generated 11 warnings
error: could not compile `forester-rs` (lib) due to 18 previous errors; 11 warnings emitted
In case it helps, the version of rustc used for the above cargo build was rustc 1.79.0 (129f3b996 2024-06-10). The dockerfile used to build the container the above output from taken from was:
FROM ubuntu:22.04
ARG USERNAME=user
# Install sudo
RUN apt-get update && apt install -y sudo
# Create a non-root user
RUN useradd -m --groups sudo --shell /bin/bash ${USERNAME}
# Users can add their own password later if desired
RUN passwd -d ${USERNAME}
USER ${USERNAME}
RUN mkdir -p /home/${USERNAME}/workspace && echo "Did you forget to mount the repository into the Docker container?" > ~/workspace/HELLO.txt
WORKDIR /home/${USERNAME}/workspace
# Unminimise the OS since we'll be developing within it ("yes" command makes "unminimize" uninteractive)
# RUN yes | sudo unminimize
# Update the package repository and install foundational packages
RUN sudo apt-get install -y \
man \
nano \
git \
tig \
tree \
build-essential \
htop \
bash-completion \
pkg-config \
libssl-dev
# Install Rust and the cargo-ament-build plugin
RUN sudo apt-get install -y \
curl \
libclang-dev
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain stable -y
ENV PATH=/home/${USERNAME}/.cargo/bin:$PATH
The main branch does not build in Ubuntu Linux, and fails with the following Cargo output:
In case it helps, the version of rustc used for the above cargo build was
rustc 1.79.0 (129f3b996 2024-06-10)
. The dockerfile used to build the container the above output from taken from was: