Open
Description
Describe the bug:
cargo install fortanix-sgx-tools sgxs-tools
fails with errors:
error[E0658]: the `!` type is experimental
--> /home/javier/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/enclave-runner-0.7.0/src/usercalls/abi.rs:311:1
|
311 | invoke_with_usercalls!(define_usercalls);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #35121 <https://github.com/rust-lang/rust/issues/35121> for more information
= help: add `#![feature(never_type)]` to the crate attributes to enable
= note: this compiler was built on 2025-03-23; consider upgrading it if it is out of date
= note: this error originates in the macro `invoke_with_usercalls` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `!: RegisterArgument` is not satisfied
--> /home/javier/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/enclave-runner-0.7.0/src/usercalls/abi.rs:64:59
|
64 | (handler, ReturnValue::into_registers(ret))
| --------------------------- ^^^ the trait `RegisterArgument` is not implemented for `!`
| |
| required by a bound introduced by this call
...
311 | invoke_with_usercalls!(define_usercalls);
| ---------------------------------------- in this macro invocation
|
= help: the following other types implement trait `RegisterArgument`:
()
*const T
*mut T
Option<NonNull<T>>
bool
i16
i32
i64
and 7 others
note: required for `std::result::Result<!, usercalls::EnclaveAbort<bool>>` to implement `ReturnValue`
--> /home/javier/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/enclave-runner-0.7.0/src/usercalls/abi.rs:162:27
|
162 | impl<T: RegisterArgument> ReturnValue for UsercallResult<T> {
| ---------------- ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
| |
| unsatisfied trait bound introduced here
= note: this error originates in the macro `define_usercalls` which comes from the expansion of the macro `invoke_with_usercalls` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0053]: method `exit` has an incompatible type for trait
--> /home/javier/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/enclave-runner-0.7.0/src/usercalls/interface.rs:189:10
|
189 | ) -> std::pin::Pin<Box<dyn Future<Output = (Self, EnclaveAbort<bool>)> + 'future>> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Result<!, EnclaveAbort<bool>>`, found `usercalls::EnclaveAbort<bool>`
|
note: type in trait
--> /home/javier/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/enclave-runner-0.7.0/src/usercalls/abi.rs:177:17
|
177 | std::pin::Pin<Box<dyn Future<Output = (Self, UsercallResult<$r>)> + $l>>
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
311 | invoke_with_usercalls!(define_usercalls);
| ---------------------------------------- in this macro invocation
= note: expected signature `fn(interface::Handler<'_, '_>, _) -> Pin<Box<(dyn futures::Future<Output = (interface::Handler<'ioinput, 'tcs>, std::result::Result<!, usercalls::EnclaveAbort<bool>>)> + 'future)>>`
found signature `fn(interface::Handler<'_, '_>, _) -> Pin<Box<(dyn futures::Future<Output = (interface::Handler<'ioinput, 'tcs>, usercalls::EnclaveAbort<bool>)> + 'future)>>`
= note: this error originates in the macro `dispatch_return_type` which comes from the expansion of the macro `invoke_with_usercalls` (in Nightly builds, run with -Z macro-backtrace for more info)
help: change the output type to match the trait
|
189 - ) -> std::pin::Pin<Box<dyn Future<Output = (Self, EnclaveAbort<bool>)> + 'future>> {
189 + ) -> Pin<Box<(dyn futures::Future<Output = (interface::Handler<'ioinput, 'tcs>, std::result::Result<!, usercalls::EnclaveAbort<bool>>)> + 'future)>> {
|
error[E0283]: type annotations needed
--> /home/javier/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/enclave-runner-0.7.0/src/usercalls/mod.rs:1593:56
|
1593 | assert!((EV_ALL | EV_ABORT) <= u8::max_value().into());
| -- ^^^^
| |
| type must be known at this point
|
= note: multiple `impl`s satisfying `u64: PartialOrd<_>` found in the following crates: `core`, `deranged`:
- impl PartialOrd for u64;
- impl<MIN, MAX> PartialOrd<deranged::RangedU64<MIN, MAX>> for u64
where the constant `MIN` has type `u64`, the constant `MAX` has type `u64`;
help: try using a fully qualified path to specify the expected types
|
1593 - assert!((EV_ALL | EV_ABORT) <= u8::max_value().into());
1593 + assert!((EV_ALL | EV_ABORT) <= <u8 as Into<T>>::into(u8::max_value()));
|
Some errors have detailed explanations: E0053, E0277, E0283, E0658.
For more information about an error, try `rustc --explain E0053`.
error: could not compile `enclave-runner` (lib) due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
error: failed to compile `fortanix-sgx-tools v0.5.1`, intermediate artifacts can be found at `/tmp/cargo-install4nMEAd`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
error: failed to compile `sgxs-tools v0.9.0`, intermediate artifacts can be found at `/tmp/cargo-installPopRZF`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
Summary Failed to install fortanix-sgx-tools, sgxs-tools (see error(s) above).
error: some crates failed to install
To Reproduce:
Steps to reproduce the behavior:
- run
cargo install fortanix-sgx-tools sgxs-tools
Expected behavior:
fortanix-sgx-tools and sgxs-tools are installed successfully
Reproducibility:
- [x ] Always
- Sometimes
- Rarely
Environment:
- OS: Ubuntu
- Version: 24.04
Severity:
- Critical
- Major
- Normal
- Minor
Metadata
Metadata
Assignees
Labels
No labels