@@ -218,6 +218,30 @@ jobs:
218
218
export MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
219
219
export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
220
220
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
221
245
- name : Build Release NUPKG
222
246
run : |
223
247
cd c_sharp
@@ -226,6 +250,15 @@ jobs:
226
250
with :
227
251
name : org.ldk.nupkg
228
252
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
229
262
- name : Check latest auto-generated code is in git
230
263
run : |
231
264
# Checkout files that get updated with version information
@@ -251,16 +284,9 @@ jobs:
251
284
export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
252
285
if ! diff ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"org.ldk.nupkg c_sharp/org.ldk.nupkg; then
253
286
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
255
288
exit 1
256
289
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
264
290
265
291
osx_c_sharp :
266
292
strategy :
@@ -351,15 +377,15 @@ jobs:
351
377
cd ldk-c-bindings
352
378
./genbindings.sh ../rust-lightning true
353
379
- 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/"
355
381
- name : Run Java Tests against Debug Bindings
356
382
run : |
357
383
mv liblightningjni_debug_Linux-amd64.so liblightningjni.so
358
384
export ASAN_OPTIONS=detect_leaks=0
359
385
LD_PRELOAD=/usr/lib/llvm-14/lib/clang/14.0.6/lib/linux/libclang_rt.asan-x86_64.so LD_LIBRARY_PATH=. mvn test
360
386
- name : Build Java Release Bindings
361
387
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/"
363
389
- name : Check latest headers are in git
364
390
run : |
365
391
git checkout pom.xml
@@ -434,7 +460,7 @@ jobs:
434
460
- name : Build Leaktracking Java Release Bindings
435
461
run : |
436
462
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/"
438
464
- name : Build deterministic release jar
439
465
run : |
440
466
./build-release-jar.sh
@@ -447,13 +473,13 @@ jobs:
447
473
- name : Build Java leaktracking Bindings
448
474
run : |
449
475
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/"
451
477
mkdir ldk-java-bins/new/
452
478
cp src/main/resources/liblightningjni_Linux-amd64.nativelib ldk-java-bins/new/liblightningjni_Linux-amd64-leaktracking.nativelib
453
479
- name : Build Java Release Bindings
454
480
run : |
455
481
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/"
457
483
- name : Build deterministic release jar
458
484
run : ./build-release-jar.sh
459
485
- uses : actions/upload-artifact@v4
@@ -566,27 +592,27 @@ jobs:
566
592
MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
567
593
JAVA_HOME=jdk-aarch64/jdk-18.0.1.1.jdk/Contents/Home
568
594
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"
570
596
mv src/main/resources/liblightningjni_MacOSX-aarch64.nativelib src/main/resources/liblightningjni_MacOSX-aarch64-leaktracking.nativelib
571
597
- name : Build MacOS x86_64 Java leaktracking Release Bindings
572
598
run : |
573
599
MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
574
600
JAVA_HOME=jdk-x86_64/jdk-18.0.1.1.jdk/Contents/Home
575
601
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"
577
603
mv src/main/resources/liblightningjni_MacOSX-x86_64.nativelib src/main/resources/liblightningjni_MacOSX-x86_64-leaktracking.nativelib
578
604
- name : Build MacOS aarch64 Java Release Bindings
579
605
run : |
580
606
MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
581
607
JAVA_HOME=jdk-aarch64/jdk-18.0.1.1.jdk/Contents/Home
582
608
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"
584
610
- name : Build MacOS x86_64 Java Release Bindings
585
611
run : |
586
612
MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
587
613
JAVA_HOME=jdk-x86_64/jdk-18.0.1.1.jdk/Contents/Home
588
614
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"
590
616
- name : Checkout latest binaries
591
617
run : |
592
618
export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
@@ -604,15 +630,18 @@ jobs:
604
630
shell : bash
605
631
run : |
606
632
export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
633
+ SOME_DIFF=0
607
634
for F in liblightningjni_MacOSX-{x86_64,aarch64}{,-leaktracking}.nativelib; do
608
635
if ! diff "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/$F" "src/main/resources/$F"; then
609
636
apt-get -y install diffoscope
610
637
# Sadly these binaries are still non-deterministic, but only due
611
638
# 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 .
613
640
diffoscope "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/$F" "src/main/resources/$F" || echo
641
+ SOME_DIFF=1
614
642
fi
615
643
done
644
+ exit $SOME_DIFF
616
645
617
646
android :
618
647
runs-on : ubuntu-latest
@@ -625,34 +654,22 @@ jobs:
625
654
run : |
626
655
apt-get update
627
656
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
640
658
- name : Checkout source code
641
659
uses : actions/checkout@v2
642
660
with :
643
661
fetch-depth : 0
644
662
- name : Install android NDK compilers
645
663
run : |
646
664
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
649
667
echo "Bad hash"
650
668
exit 1
651
669
fi
652
- unzip android-ndk-r22b -linux-x86_64 .zip
670
+ unzip android-ndk-r27c -linux.zip
653
671
- name : Install cbindgen
654
672
run : |
655
- . $HOME/.cargo/env
656
673
git clone https://github.com/eqrion/cbindgen
657
674
cd cbindgen/
658
675
git checkout v0.20.0
@@ -696,12 +713,14 @@ jobs:
696
713
rm -r ldk-java-bins-*
697
714
- name : Build Android aar
698
715
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
700
719
export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
701
720
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"
703
722
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
705
724
- uses : actions/upload-artifact@v4
706
725
with :
707
726
name : LDK-release.aar
0 commit comments