Hi. I’m Bernardo.
I’m a developer with a background in Embedded Systems programming, C/C++ and Rust.
I’m curious to learn more about Jörmungandr , which is the Rust Cardano node implementation, with the initial aim to support the Ouroboros type of consensus protocol.
So I took on the challenge to cross-compile it for RISC-V , which is an open standard Instruction Set Architecture (Open Source Silicon ).
I’m orchestrating the cross-compilation it via Yocto Project / OpenEmbedded .
I feel that’s a nice carrot in a stick with good potential for meaningful contributions to the community.
I recorded a casual screencast documenting my work, which is available on YouTube (sorry for the low resolution).
I’ll keep sharing updates on my progress here.
Work is available at https://github.com/bernardoaraujor/meta-cardano
1 Like
Too Long Didn’t Watch (TLDW):
ring v0.16.20
(which is a dependency for rustls
) doesn’t support RISC-V cross-compilation.
However, there’s planned support, as stated here:
opened 09:41PM - 27 Jan 21 UTC
Hi.
Looks like there is no support for RISC-V arch.
I was trying to build … https://github.com/pravega/pravega-client-rust .
CC @Tristan1900 @zwx14700 @shrids .
Here is what I tried:
> $ export RUST_BACKTRACE=1
> $ cargo test
> Compiling ring v0.16.19
> Compiling openssl-sys v0.9.60
> Compiling http-body v0.3.1
> Compiling http-body v0.4.0
> error: failed to run custom build command for `ring v0.16.19`
>
> Caused by:
> process didn't exit successfully: `/home/ivan/pravega-client-rust/target/debug/build/ring-870234217d8e35d8/build-script-build` (exit code: 101)
> --- stderr
> thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.19/build.rs:375:10
> stack backtrace:
> 0: rust_begin_unwind
> at /rustc/e1884a8e3c3e813aada8254edfa120e85bf5ffca/library/std/src/panicking.rs:495:5
> 1: core::panicking::panic_fmt
> at /rustc/e1884a8e3c3e813aada8254edfa120e85bf5ffca/library/core/src/panicking.rs:92:14
> 2: core::panicking::panic
> at /rustc/e1884a8e3c3e813aada8254edfa120e85bf5ffca/library/core/src/panicking.rs:50:5
> 3: core::option::Option<T>::unwrap
> at /rustc/e1884a8e3c3e813aada8254edfa120e85bf5ffca/library/core/src/option.rs:386:21
> 4: build_script_build::build_c_code
> at ./build.rs:369:34
> 5: build_script_build::ring_build_rs_main
> at ./build.rs:296:5
> 6: build_script_build::main
> at ./build.rs:257:13
> 7: core::ops::function::FnOnce::call_once
> at /rustc/e1884a8e3c3e813aada8254edfa120e85bf5ffca/library/core/src/ops/function.rs:227:5
> note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
> warning: build failed, waiting for other jobs to finish...
> error: build failed
>
I also found this fairly recent commit:
committed 10:58PM - 25 Feb 21 UTC
Change-Id: I85f0364b83440469c0d15c32dd96607be31fc1b7
Reviewed-on: https://boring… ssl-review.googlesource.com/c/boringssl/+/45904
Commit-Queue: Adam Langley <agl@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
However it looks like ring v0.17.0-alpha.10
doesn’t support it yet.
I’m waiting to hear from briansmith
to see how to proceed from here. Looks like we’re close…