Skip to content

Commit 92188e7

Browse files
authored
Merge pull request #172 from TheBlueMatt/main
Update to LDK 0.1.2
2 parents 22d8b9b + 1d3ea75 commit 92188e7

File tree

1,640 files changed

+292590
-131567
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,640 files changed

+292590
-131567
lines changed

.github/workflows/build.yml

Lines changed: 56 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

android-build.sh

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,13 @@ if [ "$2" = "" -o ! -d "$2/lightning-c-bindings" ]; then
1414
exit 1
1515
fi
1616

17-
if [ ! -d "$3" -o ! -f "$3/AndroidManifest.xml" ]; then
18-
echo "Please set third argument to the path to ldk-java-bins/android-artifacts" > /dev/stderr
17+
if [ "$3" != "java" -a "$3" != "c_sharp" ]; then
18+
echo "Please set third argument to java or c_sharp" > /dev/stderr
19+
exit 1
20+
fi
21+
22+
if [ "$3" = "java" -a [ ! -d "$4" -o ! -f "$4/AndroidManifest.xml" ] ]; then
23+
echo "Please set fourth argument to the path to ldk-java-bins/android-artifacts" > /dev/stderr
1924
exit 1
2025
fi
2126

@@ -39,24 +44,28 @@ rm -fr src/main/resources
3944
EXTRA_TARGETS=( $LDK_C_BINDINGS_EXTRA_TARGETS )
4045
EXTRA_TARGET_CCS=( $LDK_C_BINDINGS_EXTRA_TARGET_CCS )
4146
TARGET_CPUS=( "sandybridge" "generic" "generic" )
42-
STRIPS=( "x86_64-linux-android-strip" "arm-linux-androideabi-strip" "aarch64-linux-android-strip" )
4347
for IDX in ${!EXTRA_TARGETS[@]}; do
4448
export CC="${EXTRA_TARGET_CCS[$IDX]}"
4549
export LDK_TARGET="${EXTRA_TARGETS[$IDX]}"
4650
export LDK_TARGET_CPU="${TARGET_CPUS[$IDX]}"
47-
# Note that we expect to often fail here if we don't have wasm32 bins in the C bindings dir
48-
./genbindings.sh "$LDK_C_BINDINGS" "-lm -llog -I$SYSROOT/usr/include/" false true || echo
49-
${STRIPS[$IDX]} liblightningjni_release_${LDK_TARGET}.so
51+
./genbindings.sh "$LDK_C_BINDINGS" "$3" false true "-lm -llog -I$SYSROOT/usr/include/"
52+
if [ "$3" = "java" ]; then
53+
llvm-strip liblightningjni_release_${LDK_TARGET}.so
54+
else
55+
llvm-strip libldkcsharp_release_${LDK_TARGET}.so
56+
fi
5057
done
5158

59+
[ "$3" != "java" ] && exit 0
60+
5261
export LC_ALL=C
5362

5463
echo "Need local deterministic ldk-java-classes.jar"
5564
ls ldk-java-classes.jar
5665

5766
rm -rf aar
5867
mkdir aar
59-
cp -r "$3/"* ./aar/
68+
cp -r "$4/"* ./aar/
6069
mkdir -p ./aar/jni/{armeabi-v7a,arm64-v8a,x86_64}
6170

6271
cp liblightningjni_release_aarch64-linux-android.so ./aar/jni/arm64-v8a/liblightningjni.so

bindingstypes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ def get_full_rust_ty(self):
3333
return (ret, "")
3434
assert self.c_ty.endswith("Array")
3535
if self.is_const:
36-
return ("const u" + self.c_ty[:-5] + " (*", ")[" + self.arr_len + "]")
36+
return ("const " + self.c_ty[:-5] + " (*", ")[" + self.arr_len + "]")
3737
else:
38-
return ("u" + self.c_ty[:-5] + " (*", ")[" + self.arr_len + "]")
38+
return (self.c_ty[:-5] + " (*", ")[" + self.arr_len + "]")
3939
if self.rust_obj is None:
4040
if self.c_ty.startswith("int"):
4141
# Ironically the entire API uses no signed integers. We really should handle this better, but for now just always add a u

0 commit comments

Comments
 (0)