@@ -218,6 +218,30 @@ jobs:
218218 export MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
219219 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
220220 CC=clang LDK_TARGET=aarch64-apple-darwin LDK_TARGET_CPU=apple-a14 ./genbindings.sh ./ldk-c-bindings/ c_sharp false false
221+ - name : Install android NDK compilers
222+ run : |
223+ git config --global safe.directory '*'
224+ curl https://dl.google.com/android/repository/android-ndk-r27c-linux.zip > android-ndk-r27c-linux.zip
225+ if [ "$(sha256sum android-ndk-r27c-linux.zip | awk '{ print $1 }')" != "59c2f6dc96743b5daf5d1626684640b20a6bd2b1d85b13156b90333741bad5cc" ]; then
226+ echo "Bad hash"
227+ exit 1
228+ fi
229+ unzip android-ndk-r27c-linux.zip
230+ - name : Build Android C# Bindings
231+ run : |
232+ # Clean up existing C bindings artifacts first
233+ cd ldk-c-bindings
234+ git clean -f -x -d
235+ git reset --hard
236+ cd ..
237+ export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
238+ export ANDROID_TOOLCHAIN="$(pwd)/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64"
239+ export PATH="$PATH:$ANDROID_TOOLCHAIN/bin"
240+ ./android-build.sh ./rust-lightning ./ldk-c-bindings/ c_sharp
241+ mkdir -p c_sharp/packaging_artifacts/runtimes/{android-arm64,android-arm,android-x64}/native/
242+ cp libldkcsharp_release_aarch64-linux-android.so c_sharp/packaging_artifacts/runtimes/android-arm64/native/libldkcsharp.so
243+ cp libldkcsharp_release_armv7-linux-androideabi.so c_sharp/packaging_artifacts/runtimes/android-arm/native/libldkcsharp.so
244+ cp libldkcsharp_release_x86_64-linux-android.so c_sharp/packaging_artifacts/runtimes/android-x64/native/libldkcsharp.so
221245 - name : Build Release NUPKG
222246 run : |
223247 cd c_sharp
@@ -226,6 +250,15 @@ jobs:
226250 with :
227251 name : org.ldk.nupkg
228252 path : c_sharp/org.ldk.nupkg
253+ - name : Run test against C# release library
254+ shell : bash
255+ run : |
256+ cd c_sharp
257+ sed 's/net.\.0/net9.0/' -i tests.csproj
258+ ln -s ./packaging_artifacts/runtimes/linux-x64/native/libldkcsharp.so ./
259+ LD_LIBRARY_PATH=. dotnet run --project tests.csproj
260+ LD_LIBRARY_PATH=. dotnet run --project tests.csproj --configuration Release
261+ git checkout tests.csproj
229262 - name : Check latest auto-generated code is in git
230263 run : |
231264 # Checkout files that get updated with version information
@@ -251,16 +284,9 @@ jobs:
251284 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
252285 if ! diff ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"org.ldk.nupkg c_sharp/org.ldk.nupkg; then
253286 dnf -y install diffoscope mono-devel
254- diffoscope ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"org.ldk.nupkg c_sharp/org.ldk.nupkg || echo
287+ diffoscope --max-diff-input-lines 0 ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"org.ldk.nupkg c_sharp/org.ldk.nupkg || echo
255288 exit 1
256289 fi
257- - name : Run test against C# release library
258- shell : bash
259- run : |
260- cd c_sharp
261- ln -s ./packaging_artifacts/runtimes/linux-x64/native/libldkcsharp.so ./
262- LD_LIBRARY_PATH=. dotnet run --project tests.csproj
263- LD_LIBRARY_PATH=. dotnet run --project tests.csproj --configuration Release
264290
265291 osx_c_sharp :
266292 strategy :
@@ -351,15 +377,15 @@ jobs:
351377 cd ldk-c-bindings
352378 ./genbindings.sh ../rust-lightning true
353379 - name : Build Java Debug Bindings
354- run : ./genbindings.sh ./ldk-c-bindings/ "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/" true false
380+ run : ./genbindings.sh ./ldk-c-bindings/ java true false "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/"
355381 - name : Run Java Tests against Debug Bindings
356382 run : |
357383 mv liblightningjni_debug_Linux-amd64.so liblightningjni.so
358384 export ASAN_OPTIONS=detect_leaks=0
359385 LD_PRELOAD=/usr/lib/llvm-14/lib/clang/14.0.6/lib/linux/libclang_rt.asan-x86_64.so LD_LIBRARY_PATH=. mvn test
360386 - name : Build Java Release Bindings
361387 run : |
362- ./genbindings.sh ./ldk-c-bindings/ "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/" false false
388+ ./genbindings.sh ./ldk-c-bindings/ java false false "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/"
363389 - name : Check latest headers are in git
364390 run : |
365391 git checkout pom.xml
@@ -434,7 +460,7 @@ jobs:
434460 - name : Build Leaktracking Java Release Bindings
435461 run : |
436462 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
437- ./genbindings.sh ./ldk-c-bindings/ "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/" leaks false
463+ ./genbindings.sh ./ldk-c-bindings/ java leaks false "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/"
438464 - name : Build deterministic release jar
439465 run : |
440466 ./build-release-jar.sh
@@ -447,13 +473,13 @@ jobs:
447473 - name : Build Java leaktracking Bindings
448474 run : |
449475 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
450- ./genbindings.sh ./ldk-c-bindings/ "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/" leaks false
476+ ./genbindings.sh ./ldk-c-bindings/ java leaks false "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/"
451477 mkdir ldk-java-bins/new/
452478 cp src/main/resources/liblightningjni_Linux-amd64.nativelib ldk-java-bins/new/liblightningjni_Linux-amd64-leaktracking.nativelib
453479 - name : Build Java Release Bindings
454480 run : |
455481 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
456- ./genbindings.sh ./ldk-c-bindings/ "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/" false false
482+ ./genbindings.sh ./ldk-c-bindings/ java false false "-I/usr/lib/jvm/java-17-openjdk-amd64/include/ -I/usr/lib/jvm/java-17-openjdk-amd64/include/linux/"
457483 - name : Build deterministic release jar
458484 run : ./build-release-jar.sh
459485 - uses : actions/upload-artifact@v4
@@ -566,27 +592,27 @@ jobs:
566592 MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
567593 JAVA_HOME=jdk-aarch64/jdk-18.0.1.1.jdk/Contents/Home
568594 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
569- CC=clang LDK_TARGET=aarch64-apple-darwin LDK_TARGET_CPU=apple-a14 ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK" leaks false
595+ CC=clang LDK_TARGET=aarch64-apple-darwin LDK_TARGET_CPU=apple-a14 ./genbindings.sh ./ldk-c-bindings/ java leaks false "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK"
570596 mv src/main/resources/liblightningjni_MacOSX-aarch64.nativelib src/main/resources/liblightningjni_MacOSX-aarch64-leaktracking.nativelib
571597 - name : Build MacOS x86_64 Java leaktracking Release Bindings
572598 run : |
573599 MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
574600 JAVA_HOME=jdk-x86_64/jdk-18.0.1.1.jdk/Contents/Home
575601 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
576- CC=clang LDK_TARGET=x86_64-apple-darwin LDK_TARGET_CPU=sandybridge ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK" leaks false
602+ CC=clang LDK_TARGET=x86_64-apple-darwin LDK_TARGET_CPU=sandybridge ./genbindings.sh ./ldk-c-bindings/ java leaks false "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK"
577603 mv src/main/resources/liblightningjni_MacOSX-x86_64.nativelib src/main/resources/liblightningjni_MacOSX-x86_64-leaktracking.nativelib
578604 - name : Build MacOS aarch64 Java Release Bindings
579605 run : |
580606 MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
581607 JAVA_HOME=jdk-aarch64/jdk-18.0.1.1.jdk/Contents/Home
582608 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
583- CC=clang LDK_TARGET=aarch64-apple-darwin LDK_TARGET_CPU=apple-a14 ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK" false false
609+ CC=clang LDK_TARGET=aarch64-apple-darwin LDK_TARGET_CPU=apple-a14 ./genbindings.sh ./ldk-c-bindings/ java false false "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK"
584610 - name : Build MacOS x86_64 Java Release Bindings
585611 run : |
586612 MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
587613 JAVA_HOME=jdk-x86_64/jdk-18.0.1.1.jdk/Contents/Home
588614 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
589- CC=clang LDK_TARGET=x86_64-apple-darwin LDK_TARGET_CPU=sandybridge ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK" false false
615+ CC=clang LDK_TARGET=x86_64-apple-darwin LDK_TARGET_CPU=sandybridge ./genbindings.sh ./ldk-c-bindings/ java false false "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK"
590616 - name : Checkout latest binaries
591617 run : |
592618 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
@@ -604,15 +630,18 @@ jobs:
604630 shell : bash
605631 run : |
606632 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
633+ SOME_DIFF=0
607634 for F in liblightningjni_MacOSX-{x86_64,aarch64}{,-leaktracking}.nativelib; do
608635 if ! diff "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/$F" "src/main/resources/$F"; then
609636 apt-get -y install diffoscope
610637 # Sadly these binaries are still non-deterministic, but only due
611638 # to a few-byte tag, thus we use diffoscope to ensure there
612- # aren't any "real" differences and move on .
639+ # aren't any "real" differences but still fail the job .
613640 diffoscope "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/$F" "src/main/resources/$F" || echo
641+ SOME_DIFF=1
614642 fi
615643 done
644+ exit $SOME_DIFF
616645
617646 android :
618647 runs-on : ubuntu-latest
@@ -625,34 +654,22 @@ jobs:
625654 run : |
626655 apt-get update
627656 apt-get -y dist-upgrade
628- apt-get -y install git g++ clang faketime zip unzip curl openjdk-17-jdk
629- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh
630- chmod +x ./rustup.sh
631- ./rustup.sh -y
632- . $HOME/.cargo/env
633- # Temporarily use 1.67.1 to fix https://github.com/rust-lang/rust/issues/108943
634- rustup install 1.67.1
635- rustup default 1.67.1
636- rustup target add armv7-linux-androideabi
637- rustup target add aarch64-linux-android
638- rustup target add i686-linux-android
639- rustup target add x86_64-linux-android
657+ apt-get -y install cargo valgrind lld git g++ clang openjdk-17-jdk maven faketime zip unzip llvm curl rust-src
640658 - name : Checkout source code
641659 uses : actions/checkout@v2
642660 with :
643661 fetch-depth : 0
644662 - name : Install android NDK compilers
645663 run : |
646664 git config --global safe.directory '*'
647- curl https://dl.google.com/android/repository/android-ndk-r22b -linux-x86_64 .zip > android-ndk-r22b -linux-x86_64 .zip
648- if [ "$(sha256sum android-ndk-r22b -linux-x86_64 .zip | awk '{ print $1 }')" != "ac3a0421e76f71dd330d0cd55f9d99b9ac864c4c034fc67e0d671d022d4e806b " ]; then
665+ curl https://dl.google.com/android/repository/android-ndk-r27c -linux.zip > android-ndk-r27c -linux.zip
666+ if [ "$(sha256sum android-ndk-r27c -linux.zip | awk '{ print $1 }')" != "59c2f6dc96743b5daf5d1626684640b20a6bd2b1d85b13156b90333741bad5cc " ]; then
649667 echo "Bad hash"
650668 exit 1
651669 fi
652- unzip android-ndk-r22b -linux-x86_64 .zip
670+ unzip android-ndk-r27c -linux.zip
653671 - name : Install cbindgen
654672 run : |
655- . $HOME/.cargo/env
656673 git clone https://github.com/eqrion/cbindgen
657674 cd cbindgen/
658675 git checkout v0.20.0
@@ -696,12 +713,14 @@ jobs:
696713 rm -r ldk-java-bins-*
697714 - name : Build Android aar
698715 run : |
699- . $HOME/.cargo/env
716+ # rust-src doesn't distribute the rustlib Cargo.lock, but an empty
717+ # file seems to suffice to make `-Zbuild-std` happy.
718+ touch /usr/lib/rustlib/src/rust/Cargo.lock
700719 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
701720 cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-classes.jar" ./
702- export ANDROID_TOOLCHAIN="$(pwd)/android-ndk-r22b /toolchains/llvm/prebuilt/linux-x86_64"
721+ export ANDROID_TOOLCHAIN="$(pwd)/android-ndk-r27c /toolchains/llvm/prebuilt/linux-x86_64"
703722 export PATH="$PATH:$ANDROID_TOOLCHAIN/bin"
704- ./android-build.sh ./rust-lightning ./ldk-c-bindings/ ./ldk-java-bins/android-artifacts
723+ ./android-build.sh ./rust-lightning ./ldk-c-bindings/ java ./ldk-java-bins/android-artifacts
705724 - uses : actions/upload-artifact@v4
706725 with :
707726 name : LDK-release.aar
0 commit comments