X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=.github%2Fworkflows%2Fbuild.yml;h=4dea1a4934ec6bc78c563a54beb8d58d6436f40a;hb=HEAD;hp=b57cbad22ff3e17e702818f5cc6367d577890376;hpb=3c08a92cc527cbd241625b91776e105b7a2a6a2b;p=ldk-java diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b57cbad2..962bcbeb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,11 +40,11 @@ jobs: # Note this is a different endpoint, as we need one non-upstream commit! git clone https://github.com/lightningdevkit/rust-lightning cd rust-lightning - git checkout origin/0.0.118-bindings + git checkout origin/0.0.123-bindings cd .. git clone https://github.com/lightningdevkit/ldk-c-bindings cd ldk-c-bindings - git checkout 0.0.118 + git checkout 0.0.123 cd lightning-c-bindings cargo update -p memchr --precise "2.5.0" --verbose - name: Rebuild C bindings without STD @@ -138,11 +138,11 @@ jobs: # Note this is a different endpoint, as we need one non-upstream commit! git clone https://github.com/lightningdevkit/rust-lightning cd rust-lightning - git checkout origin/0.0.118-bindings + git checkout origin/0.0.123-bindings cd .. git clone https://github.com/lightningdevkit/ldk-c-bindings cd ldk-c-bindings - git checkout 0.0.118 + git checkout 0.0.123 cd lightning-c-bindings cargo update -p memchr --precise "2.5.0" --verbose - name: Rebuild C bindings with STD @@ -162,28 +162,21 @@ jobs: runs-on: ubuntu-latest # Ubuntu's version of clang doesn't support....anything that should work. # Ubuntu is an utter trash OS and should generally never be used for anything. - # We also require at least rustc 1.51 (ie https://github.com/rust-lang/rust/pull/79998), - # so we use debian testing - container: debian:bookworm + # We also require dotnet so we use fedora + container: fedora:39 strategy: fail-fast: false steps: - name: Install required dependencies run: | - apt-get update - apt-get -y dist-upgrade - apt-get -y install cargo libstd-rust-dev-windows lld llvm git g++ clang curl gcc-mingw-w64-x86-64-win32 python3 mono-devel zip faketime + dnf install -y mingw64-gcc git cargo dotnet clang llvm lld faketime rust-std-static-x86_64-pc-windows-gnu which diffutils rust-src - name: Checkout source code uses: actions/checkout@v2 with: fetch-depth: 0 - name: Install cbindgen run: | - git clone https://github.com/eqrion/cbindgen - cd cbindgen/ - git checkout v0.20.0 - cargo update -p indexmap --precise "1.6.2" --verbose - cargo install --locked --path . + cargo install cbindgen - name: Checkout Rust-Lightning and LDK-C-Bindings git run: | git config --global safe.directory '*' @@ -192,31 +185,51 @@ jobs: # Note this is a different endpoint, as we need one non-upstream commit! git clone https://github.com/lightningdevkit/rust-lightning cd rust-lightning - git checkout origin/0.0.118-bindings + git checkout origin/0.0.123-bindings cd .. git clone https://github.com/lightningdevkit/ldk-c-bindings cd ldk-c-bindings - git checkout 0.0.118 + git checkout 0.0.123 + - name: Fetch MacOS SDK + run: | + curl -o Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz https://bitcoincore.org/depends-sources/sdks/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz + tar xvvf Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz - name: Rebuild C bindings with STD run: | + export MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers" cd ldk-c-bindings export LDK_C_BINDINGS_EXTRA_TARGETS=x86_64-pc-windows-gnu export LDK_C_BINDINGS_EXTRA_TARGET_CCS=`pwd`/deterministic-build-wrappers/clang-x86_64-windows + export LDK_C_BINDINGS_EXTRA_TARGET_LINK_LTO=true ./genbindings.sh ../rust-lightning true - name: Remove checked-in source to ensure its correctly checked-in run: rm c_sharp/src/org/ldk/enums/*.cs c_sharp/src/org/ldk/impl/*.cs c_sharp/src/org/ldk/structs/*.cs - name: Build Windows C# Bindings run: | export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)" - LDK_TARGET=x86_64-pc-windows-gnu faketime -f "2021-01-01 00:00:00" ./genbindings.sh ./ldk-c-bindings/ c_sharp false false + LDK_TARGET=x86_64-pc-windows-gnu LDK_TARGET_CPU=sandybridge ./genbindings.sh ./ldk-c-bindings/ c_sharp false false - name: Build Linux C# Bindings run: | export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)" ./genbindings.sh ./ldk-c-bindings/ c_sharp false false + - name: Build macOS x86-64 C# Bindings + run: | + export MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers" + export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)" + CC=clang LDK_TARGET=x86_64-apple-darwin LDK_TARGET_CPU=sandybridge ./genbindings.sh ./ldk-c-bindings/ c_sharp false false + - name: Build macOS aarch64 C# Bindings + run: | + export MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers" + export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)" + CC=clang LDK_TARGET=aarch64-apple-darwin LDK_TARGET_CPU=apple-a14 ./genbindings.sh ./ldk-c-bindings/ c_sharp false false - name: Build Release NUPKG run: | cd c_sharp ./build-release-nupkg.sh + - uses: actions/upload-artifact@v3 + with: + name: org.ldk.nupkg + path: c_sharp/org.ldk.nupkg - name: Check latest auto-generated code is in git run: | # Checkout files that get updated with version information @@ -241,10 +254,17 @@ jobs: run: | export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)" if ! diff ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"org.ldk.nupkg c_sharp/org.ldk.nupkg; then - apt-get -y install diffoscope + dnf -y install diffoscope mono-devel diffoscope ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"org.ldk.nupkg c_sharp/org.ldk.nupkg || echo exit 1 fi + - name: Run test against C# release library + shell: bash + run: | + cd c_sharp + ln -s ./packaging_artifacts/runtimes/linux-x64/native/libldkcsharp.so ./ + LD_LIBRARY_PATH=. dotnet run --project tests.csproj + LD_LIBRARY_PATH=. dotnet run --project tests.csproj --configuration Release java_bindings: runs-on: ubuntu-latest @@ -278,11 +298,11 @@ jobs: # Note this is a different endpoint, as we need one non-upstream commit! git clone https://github.com/lightningdevkit/rust-lightning cd rust-lightning - git checkout origin/0.0.118-bindings + git checkout origin/0.0.123-bindings cd .. git clone https://github.com/lightningdevkit/ldk-c-bindings cd ldk-c-bindings - git checkout 0.0.118 + git checkout 0.0.123 cd lightning-c-bindings cargo update -p memchr --precise "2.5.0" --verbose - name: Pin proc-macro and quote to meet MSRV @@ -341,11 +361,11 @@ jobs: # Note this is a different endpoint, as we need one non-upstream commit! git clone https://github.com/lightningdevkit/rust-lightning cd rust-lightning - git checkout origin/0.0.118-bindings + git checkout origin/0.0.123-bindings cd .. git clone https://github.com/lightningdevkit/ldk-c-bindings cd ldk-c-bindings - git checkout 0.0.118 + git checkout 0.0.123 cd lightning-c-bindings cargo update -p memchr --precise "2.5.0" --verbose - name: Pin proc-macro and quote to meet MSRV @@ -402,11 +422,20 @@ jobs: ./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 - name: Build deterministic release jar run: ./build-release-jar.sh + - uses: actions/upload-artifact@v3 + with: + name: ldk-java.jar + path: ldk-java.jar + - uses: actions/upload-artifact@v3 + with: + name: ldk-java-leaktracking.jar + path: ldk-java-leaktracking.jar - name: Check latest library and jars are in bins repo run: | export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)" cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_Mac*.nativelib ldk-java-bins/new/ cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"LDK-release.aar ldk-java-bins/new/ + cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"org.ldk.nupkg ldk-java-bins/new/ cp src/main/resources/liblightningjni_Linux-amd64.nativelib ldk-java-bins/new/ cp ldk-java-sources.jar ldk-java-bins/new/ cp ldk-java.jar ldk-java-bins/new/ @@ -461,11 +490,11 @@ jobs: # Note this is a different endpoint, as we need one non-upstream commit! git clone https://github.com/lightningdevkit/rust-lightning cd rust-lightning - git checkout origin/0.0.118-bindings + git checkout origin/0.0.123-bindings cd .. git clone https://github.com/lightningdevkit/ldk-c-bindings cd ldk-c-bindings - git checkout 0.0.118 + git checkout 0.0.123 - name: Fetch MacOS SDK run: | curl -o Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz https://bitcoincore.org/depends-sources/sdks/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz @@ -598,11 +627,11 @@ jobs: # Note this is a different endpoint, as we need one non-upstream commit! git clone https://github.com/lightningdevkit/rust-lightning cd rust-lightning - git checkout origin/0.0.118-bindings + git checkout origin/0.0.123-bindings cd .. git clone https://github.com/lightningdevkit/ldk-c-bindings cd ldk-c-bindings - git checkout 0.0.118 + git checkout 0.0.123 cd lightning-c-bindings . $HOME/.cargo/env cargo update -p memchr --precise "2.5.0" --verbose @@ -638,6 +667,10 @@ jobs: export ANDROID_TOOLCHAIN="$(pwd)/android-ndk-r22b/toolchains/llvm/prebuilt/linux-x86_64" export PATH="$PATH:$ANDROID_TOOLCHAIN/bin" ./android-build.sh ./rust-lightning ./ldk-c-bindings/ ./ldk-java-bins/android-artifacts + - uses: actions/upload-artifact@v3 + with: + name: LDK-release.aar + path: LDK-release.aar - name: Check latest library and jars are in bins repo run: | export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)" @@ -672,13 +705,13 @@ jobs: git config --global user.email "ldk-ci@example.com" git config --global user.name "LDK CI" # Note this is a different endpoint, as we need one non-upstream commit! - git clone https://github.com/rghtningdevkit/ust-lightning + git clone https://github.com/lightningdevkit/rust-lightning cd rust-lightning - git checkout origin/0.0.118-bindings + git checkout origin/0.0.123-bindings cd .. git clone https://github.com/lightningdevkit/ldk-c-bindings cd ldk-c-bindings - git checkout 0.0.118 + git checkout 0.0.123 cd lightning-c-bindings cargo update -p memchr --precise "2.5.0" --verbose - name: Rebuild C bindings and check the sample app builds + links