Merge pull request #119 from arik-so/arik/2024/01/skip-tests-option v0.0.121.2
authorMatt Corallo <649246+TheBlueMatt@users.noreply.github.com>
Fri, 9 Feb 2024 01:30:03 +0000 (01:30 +0000)
committerGitHub <noreply@github.com>
Fri, 9 Feb 2024 01:30:03 +0000 (01:30 +0000)
Create an option to skip tests

1  2 
genbindings.sh

diff --combined genbindings.sh
index 6007f721f2954e98682d9cc990e85c46d280ed4a,1c5fd52576b4efb5f0a29c80012e83fa349bd5da..b7ae3717c1008dcab9e2118f041c3b572b4f2dc4
@@@ -9,6 -9,18 +9,18 @@@ if [ ! -d "$1/lightning" -o "$2" != "tr
        exit 1
  fi
  
+ SKIP_TESTS_ARGUMENT=$3
+ RUN_CPP_TESTS=true
+ if [ ! -z "$SKIP_TESTS_ARGUMENT" ]; then
+   if [ "$SKIP_TESTS_ARGUMENT" != "skip-tests" ]; then
+     echo "To skip tests, usage must be: $0 path-to-rust-lightning allow-std skip-tests"
+     exit 1
+   else
+     RUN_CPP_TESTS=false
+   fi
+ fi
  export LC_ALL=C
  
  # On reasonable systems, we can use realpath here, but OSX is a diva with 20-year-old software.
@@@ -317,40 -329,45 +329,45 @@@ export IFS="$OLD_IFS
  set -x
  mv include/lightningpp_new.hpp include/lightningpp.hpp
  
- # Finally, sanity-check the generated C and C++ bindings with demo apps:
- # Naively run the C demo app:
- gcc $LOCAL_CFLAGS -Wall -g -pthread demo.c target/debug/libldk.a -ldl -lm
- ./a.out
+ if $RUN_CPP_TESTS; then
+   # Finally, sanity-check the generated C and C++ bindings with demo apps:
+   # Naively run the C demo app:
+   gcc $LOCAL_CFLAGS -Wall -g -pthread demo.c target/debug/libldk.a -ldl -lm
+   ./a.out
+   # And run the C++ demo app
+   if [ "$2" = "true" ]; then
+     g++ $LOCAL_CFLAGS -std=c++11 -Wall -g -pthread demo.cpp -Ltarget/debug/ -lldk -ldl
+     LD_LIBRARY_PATH=target/debug/ ./a.out > /dev/null
+   fi
+   # Finally, run the C++ demo app with our native networking library
+   # in valgrind to test memory model correctness and lack of leaks.
+   gcc $LOCAL_CFLAGS -fPIC -std=c99 -Wall -g -pthread -I../ldk-net ../ldk-net/ldk_net.c -c -o ldk_net.o
+   if [ "$2" = "true" ]; then
+     g++ $LOCAL_CFLAGS -std=c++11 -Wall -g -pthread -DREAL_NET -I../ldk-net ldk_net.o demo.cpp target/debug/libldk.a -ldl -lm
+     if [ -x "`which valgrind`" -a "$(uname -m)" != "ppc64le" ]; then
+       valgrind --error-exitcode=4 --memcheck:leak-check=full --show-leak-kinds=all ./a.out
+       echo
+     else
+       echo "WARNING: Please install valgrind for more testing"
+       ./a.out
+     fi
+   fi
+   # Test a statically-linked C++ version, tracking the resulting binary size and runtime
+   # across debug, LTO, and cross-language LTO builds (using the same compiler each time).
+   if [ "$2" = "true" ]; then
+     clang++ $LOCAL_CFLAGS -std=c++11 demo.cpp target/debug/libldk.a -ldl
+     strip ./a.out
+     time ./a.out
+     echo " C++ Bin size and runtime w/o optimization:"
+     ls -lha a.out
+   fi
  
- # And run the C++ demo app
- if [ "$2" = "true" ]; then
-       g++ $LOCAL_CFLAGS -std=c++11 -Wall -g -pthread demo.cpp -Ltarget/debug/ -lldk -ldl
-       LD_LIBRARY_PATH=target/debug/ ./a.out > /dev/null
- fi
- # Finally, run the C++ demo app with our native networking library
- # in valgrind to test memory model correctness and lack of leaks.
- gcc $LOCAL_CFLAGS -fPIC -std=c99 -Wall -g -pthread -I../ldk-net ../ldk-net/ldk_net.c -c -o ldk_net.o
- if [ "$2" = "true" ]; then
-       g++ $LOCAL_CFLAGS -std=c++11 -Wall -g -pthread -DREAL_NET -I../ldk-net ldk_net.o demo.cpp target/debug/libldk.a -ldl -lm
-       if [ -x "`which valgrind`" -a "$(uname -m)" != "ppc64le" ]; then
-               valgrind --error-exitcode=4 --memcheck:leak-check=full --show-leak-kinds=all ./a.out
-               echo
-       else
-               echo "WARNING: Please install valgrind for more testing"
-               ./a.out
-       fi
- fi
- # Test a statically-linked C++ version, tracking the resulting binary size and runtime
- # across debug, LTO, and cross-language LTO builds (using the same compiler each time).
- if [ "$2" = "true" ]; then
-       clang++ $LOCAL_CFLAGS -std=c++11 demo.cpp target/debug/libldk.a -ldl
-       strip ./a.out
-       time ./a.out
-       echo " C++ Bin size and runtime w/o optimization:"
-       ls -lha a.out
+ else
+   echo "Skipping tests!"
  fi
  
  function REALLY_PIN_CC {
@@@ -552,7 -569,6 +569,7 @@@ f
  
  EXTRA_TARGETS=( $LDK_C_BINDINGS_EXTRA_TARGETS )
  EXTRA_CCS=( $LDK_C_BINDINGS_EXTRA_TARGET_CCS )
 +EXTRA_LINK_LTO=( $LDK_C_BINDINGS_EXTRA_TARGET_LINK_LTO )
  
  if [ ${#EXTRA_TARGETS[@]} != ${#EXTRA_CCS[@]} ]; then
        echo "LDK_C_BINDINGS_EXTRA_TARGETS and LDK_C_BINDINGS_EXTRA_TARGET_CCS didn't have the same number of elements!"
@@@ -563,15 -579,7 +580,15 @@@ for IDX in ${!EXTRA_TARGETS[@]}; d
        EXTRA_ENV_TARGET=$(echo "${EXTRA_TARGETS[$IDX]}" | sed 's/-/_/g')
        export CFLAGS_$EXTRA_ENV_TARGET="$BASE_CFLAGS"
        export CC_$EXTRA_ENV_TARGET=${EXTRA_CCS[$IDX]}
 -      RUSTFLAGS="$BASE_RUSTFLAGS -C embed-bitcode=yes -C lto -C linker=${EXTRA_CCS[$IDX]}" CARGO_PROFILE_RELEASE_LTO=true cargo build $CARGO_BUILD_ARGS -v --release --target "${EXTRA_TARGETS[$IDX]}"
 +      EXTRA_RUSTFLAGS=""
 +      case "$EXTRA_ENV_TARGET" in
 +              "x86_64"*)
 +                      export CFLAGS_$EXTRA_ENV_TARGET="$BASE_CFLAGS -march=sandybridge -mtune=sandybridge"
 +                      EXTRA_RUSTFLAGS="-C target-cpu=sandybridge"
 +                      ;;
 +      esac
 +      [ "${EXTRA_LINK_LTO[$IDX]}" != "" ] && EXTRA_RUSTFLAGS="-C linker-plugin-lto"
 +      RUSTFLAGS="$BASE_RUSTFLAGS -C embed-bitcode=yes -C lto -C linker=${EXTRA_CCS[$IDX]} $EXTRA_RUSTFLAGS" CARGO_PROFILE_RELEASE_LTO=true cargo build $CARGO_BUILD_ARGS -v --release --target "${EXTRA_TARGETS[$IDX]}"
  done
  
  if [ "$CLANGPP" != "" -a "$LLD" != "" ]; then