Update auto-generated bindings to include ln-transaction-sync
[ldk-c-bindings] / genbindings.sh
index ca336caa8f674cefec966ff7f305b47851c4053a..db3e07a69374aecf9375eb704ea0dbdb7729df38 100755 (executable)
@@ -180,11 +180,13 @@ pub mod $2 {
        echo "}" >> /tmp/$1-crate-source.txt
        cat /tmp/$1-crate-source.txt >> /tmp/crate-source.txt
        rm /tmp/$1-crate-source.txt
+       FEATURES="$(echo "$3\"" | sed 's/--features=/"/' | sed 's/,/", "/g')"
+       [ "$FEATURES" = '"' ] && FEATURES=""
        if is_gnu_sed; then
-               sed -E -i 's|#*'$1' = \{ .*|'$1' = \{ path = "'"$LIGHTNING_PATH"'/'$1'", default-features = false }|' lightning-c-bindings/Cargo.toml
+               sed -E -i 's|#*'$1' = \{ .*|'$1' = \{ path = "'"$LIGHTNING_PATH"'/'$1'", default-features = false, features = ['"$FEATURES"'] }|' lightning-c-bindings/Cargo.toml
        else
                # OSX sed is for some reason not compatible with GNU sed
-               sed -E -i '' 's|#*'$1' = \{ .*|'$1' = \{ path = "'"$LIGHTNING_PATH"'/'$1'", default-features = false }|' lightning-c-bindings/Cargo.toml
+               sed -E -i '' 's|#*'$1' = \{ .*|'$1' = \{ path = "'"$LIGHTNING_PATH"'/'$1'", default-features = false, features = ['"$FEATURES"'] }|' lightning-c-bindings/Cargo.toml
        fi
 }
 
@@ -204,13 +206,14 @@ if [ "$2" = "true" ]; then
        add_crate "lightning-background-processor" "lightning_background_processor" --features=std
        add_crate "lightning-invoice" "lightning_invoice" --features=std
        add_crate "lightning-rapid-gossip-sync" "lightning_rapid_gossip_sync" --features=std
-       CARGO_BUILD_ARGS="--features=std"
+       add_crate "lightning-transaction-sync" "lightning_transaction_sync" --features=esplora-blocking,electrum
 else
        add_crate lightning lightning --features=no-std
        drop_crate "lightning-persister"
        add_crate "lightning-background-processor" "lightning_background_processor" --features=no-std
-       add_crate "lightning-rapid-gossip-sync" "lightning_rapid_gossip_sync" --features=no-std
        add_crate "lightning-invoice" "lightning_invoice" --features=no-std
+       add_crate "lightning-rapid-gossip-sync" "lightning_rapid_gossip_sync" --features=no-std
+       drop_crate "lightning-transaction-sync"
        CARGO_BUILD_ARGS="--features=no-std"
 fi
 
@@ -376,19 +379,27 @@ function REALLY_PIN_CC {
        cargo update -p cc --precise "1.0.79" --verbose
        ( RUSTC_BOOTSTRAP=1 cargo build --features=std -v --release --target x86_64-apple-darwin -Zbuild-std=std,panic_abort > /dev/null 2>&1 ) || echo -n
        ( RUSTC_BOOTSTRAP=1 cargo build --features=std -v --release --target aarch64-apple-darwin -Zbuild-std=std,panic_abort > /dev/null 2>&1 ) || echo -n
+       pushd ../deterministic-build-wrappers/compiler-builtins-dummy
+       cargo build > /dev/null 2>&1 || echo -n
+       popd
        # Sadly, std also depends on cc, and we can't pin it in that tree
        # directly. Instead, we have to delete the file out of the cargo
        # registry and build --offline to avoid it using the latest version.
        NEW_CC_DEP="$CARGO_HOME"
        [ "$NEW_CC_DEP" = "" ] && NEW_CC_DEP="$HOME"
-       [ -d "$NEW_CC_DEP/.cargo/registry/cache/"github.com-* ] && CARGO_REGISTRY_CACHE="$NEW_CC_DEP/.cargo/registry/cache/"github.com-*
-       [ -d "$NEW_CC_DEP/.cargo/registry/cache/"index.crates.io-* ] && CARGO_REGISTRY_CACHE="$NEW_CC_DEP/.cargo/registry/cache/"index.crates.io-*
+       [ -d "$NEW_CC_DEP/.cargo/registry/cache/"github.com-* ] && CARGO_REGISTRY_CACHE="$(echo "$NEW_CC_DEP/.cargo/registry/cache/"github.com-*)"
+       [ -d "$NEW_CC_DEP/.cargo/registry/cache/"index.crates.io-* ] && CARGO_REGISTRY_CACHE="$(echo "$NEW_CC_DEP/.cargo/registry/cache/"index.crates.io-*)"
        if [ -d "$CARGO_REGISTRY_CACHE" ]; then
+               if [ -f "$CARGO_REGISTRY_CACHE/compiler_builtins-0.1.109.crate" ]; then
+                       mv "$CARGO_REGISTRY_CACHE/compiler_builtins-0.1.109.crate" ./
+               fi
                if [ -f "$CARGO_REGISTRY_CACHE/cc-1.0.79.crate" ]; then
                        mv "$CARGO_REGISTRY_CACHE/cc-1.0.79.crate" ./
                fi
-               rm -f "$CARGO_REGISTRY_CACHE/"*/cc-*.crate
+               rm -f "$CARGO_REGISTRY_CACHE/"cc-*.crate
                [ -f ./cc-1.0.79.crate ] && mv ./cc-1.0.79.crate "$CARGO_REGISTRY_CACHE/"
+               rm -f "$CARGO_REGISTRY_CACHE/"compiler_builtins-0.1.11*.crate
+               [ -f ./compiler_builtins-0.1.109.crate ] && mv ./compiler_builtins-0.1.109.crate "$CARGO_REGISTRY_CACHE/"
        else
                echo "Couldn't find cargo cache, build-std builds are likely to fail!"
        fi
@@ -514,20 +525,23 @@ if [ "$HOST_PLATFORM" = "x86_64-unknown-linux-gnu" ]; then
                RUSTFLAGS="$RUSTFLAGS --cfg=test_mod_pointers" RUSTC_BOOTSTRAP=1 cargo rustc $CARGO_BUILD_ARGS -v -- -Zsanitizer=address -Cforce-frame-pointers=yes || ( mv Cargo.toml.bk Cargo.toml; exit 1)
                mv Cargo.toml.bk Cargo.toml
 
-               # First the C demo app...
-               $CLANG $LOCAL_CFLAGS -fsanitize=address -g demo.c target/debug/libldk.a -ldl
-               ASAN_OPTIONS='detect_leaks=1 detect_invalid_pointer_pairs=1 detect_stack_use_after_return=1' ./a.out
+               # Sadly, address sanitizer appears to have had some regression on Debian and now fails to
+               # get past its init stage, so we disable it for now.
 
-               if [ "$2" = "true" ]; then
-                       # ...then the C++ demo app
-                       $CLANGPP $LOCAL_CFLAGS -std=c++11 -fsanitize=address -g demo.cpp target/debug/libldk.a -ldl
-                       ASAN_OPTIONS='detect_leaks=1 detect_invalid_pointer_pairs=1 detect_stack_use_after_return=1' ./a.out >/dev/null
-
-                       # ...then the C++ demo app with the ldk_net network implementation
-                       $CLANG $LOCAL_CFLAGS -fPIC -fsanitize=address -g -I../ldk-net ../ldk-net/ldk_net.c -c -o ldk_net.o
-                       $CLANGPP $LOCAL_CFLAGS -std=c++11 -fsanitize=address -g -DREAL_NET -I../ldk-net ldk_net.o demo.cpp target/debug/libldk.a -ldl
-                       ASAN_OPTIONS='detect_leaks=1 detect_invalid_pointer_pairs=1 detect_stack_use_after_return=1' ./a.out >/dev/null
-               fi
+               # First the C demo app...
+               #$CLANG $LOCAL_CFLAGS -fsanitize=address -g demo.c target/debug/libldk.a -ldl
+               #ASAN_OPTIONS='detect_leaks=1 detect_invalid_pointer_pairs=1 detect_stack_use_after_return=1' ./a.out
+
+               #if [ "$2" = "true" ]; then
+               #       # ...then the C++ demo app
+               #       $CLANGPP $LOCAL_CFLAGS -std=c++11 -fsanitize=address -g demo.cpp target/debug/libldk.a -ldl
+               #       ASAN_OPTIONS='detect_leaks=1 detect_invalid_pointer_pairs=1 detect_stack_use_after_return=1' ./a.out >/dev/null
+
+               #       # ...then the C++ demo app with the ldk_net network implementation
+               #       $CLANG $LOCAL_CFLAGS -fPIC -fsanitize=address -g -I../ldk-net ../ldk-net/ldk_net.c -c -o ldk_net.o
+               #       $CLANGPP $LOCAL_CFLAGS -std=c++11 -fsanitize=address -g -DREAL_NET -I../ldk-net ldk_net.o demo.cpp target/debug/libldk.a -ldl
+               #       ASAN_OPTIONS='detect_leaks=1 detect_invalid_pointer_pairs=1 detect_stack_use_after_return=1' ./a.out >/dev/null
+               #fi
        else
                echo "WARNING: Please install clang-$RUSTC_LLVM_V and clang++-$RUSTC_LLVM_V to build with address sanitizer"
        fi