lightningdevkit / ldk-c-bindings

Main LDK C Bindings on which other bindings are built
Other
13 stars 14 forks source link

thread 'main' panicked at 'assertion failed: self.write_c_type_intern #79

Closed takaya-imai closed 2 years ago

takaya-imai commented 2 years ago

I got the following error on building. Older rustc version is better?

Environment

$ rustup show
Default host: x86_64-apple-darwin
rustup home:  /Users/xxx/.rustup

installed toolchains
--------------------

stable-aarch64-apple-darwin
stable-x86_64-apple-darwin (default)
1.60.0-x86_64-apple-darwin
1.61.0-x86_64-apple-darwin

installed targets for active toolchain
--------------------------------------

aarch64-apple-darwin
wasm32-wasi
x86_64-apple-darwin

active toolchain
----------------

1.61.0-x86_64-apple-darwin (overridden by '/Users/xxx/tmp/ldk-c-bindings/c-bindings-gen/rust-toolchain')
rustc 1.61.0 (fe5b13d68 2022-05-18)

Error message

$ bash genbindings.sh /Users/xxx/tmp/rust-lightning true
+ '[' '!' -d /Users/xxx/tmp/rust-lightning/lightning -o true '!=' true -a true '!=' false ']'
+ export LC_ALL=C
+ LC_ALL=C
...
+ CARGO_BUILD_ARGS=--features=std
+ cat /tmp/crate-source.txt
+ RUST_BACKTRACE=1
+ /Users/xxx/tmp/ldk-c-bindings/c-bindings-gen/target/release/c-bindings-gen /Users/xxx/tmp/ldk-c-bindings/lightning-c-bindings/src/ /Users/xxx/tmp/ldk-c-bindings/lightning-c-bindings/src/c_types/derived.rs /Users/xxx/tmp/ldk-c-bindings/lightning-c-bindings/include/ldk_rust_types.h /Users/xxx/tmp/ldk-c-bindings/lightning-c-bindings/include/lightningpp.hpp
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for std::prelude::rust_2018:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring leading-colon use!
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring pub(use) tree!
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning_invoice::prelude:: - this may result in resolution failures
Ignoring leading-colon use!
Ignoring * use for lightning_invoice::prelude:: - this may result in resolution failures
Ignoring * use for lightning_invoice::prelude:: - this may result in resolution failures
Ignoring * use for lightning_invoice::prelude:: - this may result in resolution failures
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning::ln::msgs::fuzzy_internal_msgs:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring * use for lightning_invoice::prelude:: - this may result in resolution failures
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring leading-colon use!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring pub(use) tree!
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring pub(use) tree!
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Ignoring pub(use) tree!
Ignoring * use for lightning::prelude:: - this may result in resolution failures
Converting lightning::ln::chan_utils entries...
Ignoring * use for lightning::prelude:: - this may result in resolution failures
thread 'main' panicked at 'assertion failed: self.write_c_type_intern(w, t, generics, false, false, ptr_for_ref, false,\n    true)', src/types.rs:2860:9
stack backtrace:
   0: rust_begin_unwind
             at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/panicking.rs:143:14
   2: core::panicking::panic
             at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/panicking.rs:48:5
   3: c_bindings_gen::types::TypeResolver::write_c_type
             at ldk-c-bindings/c-bindings-gen/src/types.rs:2860:3
   4: c_bindings_gen::blocks::write_method_params
             at ldk-c-bindings/c-bindings-gen/src/blocks.rs:558:5
   5: c_bindings_gen::writeln_impl
             at ldk-c-bindings/c-bindings-gen/src/main.rs:1334:10
   6: c_bindings_gen::convert_file
             at ldk-c-bindings/c-bindings-gen/src/main.rs:1882:6
   7: c_bindings_gen::main
             at ldk-c-bindings/c-bindings-gen/src/main.rs:2147:2
   8: core::ops::function::FnOnce::call_once
             at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/ops/function.rs:227:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Other environment

I got the same error on Ubuntu 22.04 and 16.04.7.

TheBlueMatt commented 2 years ago

rust-lightning: 0.0.108

RL 108 is not yet supported in the C bindings, should be soon, though. Note that for 106 you can't use straight upstream RL but need the 0.0.106-bindings branch from the regular RL repo.

takaya-imai commented 2 years ago

Thanks. It works well for dylib file using 0.0.106-bindings.

It also works well for so file on Ubuntu 22.04 but not on MacOS. It seems to need llvm14 for so file as a warning message below but latest version of llvm on homebrew is 13 for now, https://formulae.brew.sh/formula/llvm.

WARNING: Building with cross-language LTO is not avilable without clang-14
TheBlueMatt commented 2 years ago

That is just a warning, it should build fine in spite of that?

takaya-imai commented 2 years ago

The following is a build procedure and result on MacOS. dylib file is generated but so file is not. What is wrong with the procedure?

$ git clone https://github.com/lightningdevkit/rust-lightning.git
$ cd rust-lightning
$ git checkout 0.0.106-bindings
$ cd ..
$ git clone https://github.com/lightningdevkit/ldk-c-bindings.git
$ cd ldk-c-bindings/c-bindings-gen/
$ echo "1.61.0" > rust-toolchain
$ rustup show
Default host: x86_64-apple-darwin
rustup home:  /Users/xxx/.rustup

installed toolchains
--------------------

stable-aarch64-apple-darwin
stable-x86_64-apple-darwin (default)
1.60.0-x86_64-apple-darwin
1.61.0-x86_64-apple-darwin

installed targets for active toolchain
--------------------------------------

aarch64-apple-darwin
aarch64-linux-android
arm-linux-androideabi
armv7-linux-androideabi
i686-linux-android
wasm32-wasi
x86_64-apple-darwin
x86_64-linux-android

active toolchain
----------------

1.61.0-x86_64-apple-darwin (overridden by '/Users/xxx/tmp/ldk-c-bindings/c-bindings-gen/rust-toolchain')
rustc 1.61.0 (fe5b13d68 2022-05-18)

$ cd ..
$ bash genbindings.sh /Users/xxx/tmp/rust-lightning true
$ ls lightning-c-bindings/target/release/
build/          examples/       libldk.a        libldk.dylib*
deps/           incremental/    libldk.d
TheBlueMatt commented 2 years ago

There is no such thing as a ".so" on MacOS - .so is a Linux thing, .dylib is the equivalent on MacOS.