7171 - name : Checkout latest MacOS binaries
7272 run : |
7373 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(cat .git_ver)"
74- git clone https://git.bitcoin.ninja/ldk-java-bins
74+ git clone --depth 1 https://git.bitcoin.ninja/ldk-java-bins
7575 mkdir -p src/main/resources/
7676 cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/liblightningjni_MacOSX-"* src/main/resources/
7777 - name : Build Java/TS Release Bindings
8282 run : ./build-release-jar.sh
8383 - name : Run Java Tests against built release jar
8484 run : |
85- mvn install:install-file -Dfile=target/ ldk-java-1.0-SNAPSHOT .jar -DgroupId=org.ldk -DartifactId=ldk-java -Dversion=1.0-SNAPSHOT -Dpackaging=jar
85+ mvn install:install-file -Dfile=ldk-java.jar -DgroupId=org.ldk -DartifactId=ldk-java -Dversion=1.0-SNAPSHOT -Dpackaging=jar
8686 cd javatester
8787 mvn package
8888 java -ea -jar target/ldk-java-tests-1.0-SNAPSHOT-jar-with-dependencies.jar
9393 - name : Check latest library and jars are in bins repo
9494 run : |
9595 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(cat .git_ver)"
96+ rm "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"*.jar
97+ rm "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_Linux*.nativelib
9698 cp src/main/resources/liblightningjni_Linux-amd64.nativelib "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
97- cp target/ldk-java-1.0-SNAPSHOT.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
98- cp target/ldk-java-1.0-SNAPSHOT-sources.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
99+ cp ldk-java-sources.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
100+ cp ldk-java.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
101+ cp ldk-java-classes.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
102+ cd ldk-java-bins
103+ git diff --exit-code
104+
105+ android :
106+ runs-on : ubuntu-latest
107+ # Frankly, I'm not really sure why debian and ubuntu differ in the results here, they really shouldn't
108+ container : debian:bullseye
109+ env :
110+ TOOLCHAIN : stable
111+ steps :
112+ - name : Install rust targets
113+ run : |
114+ apt-get update
115+ apt-get -y dist-upgrade
116+ apt-get -y install git g++ clang faketime zip unzip curl openjdk-11-jdk
117+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh
118+ chmod +x ./rustup.sh
119+ ./rustup.sh -y
120+ . $HOME/.cargo/env
121+ rustup target add armv7-linux-androideabi
122+ rustup target add aarch64-linux-android
123+ rustup target add i686-linux-android
124+ rustup target add x86_64-linux-android
125+ - name : Checkout source code
126+ uses : actions/checkout@v2
127+ with :
128+ fetch-depth : 0
129+ - name : Install android NDK compilers
130+ run : |
131+ curl https://dl.google.com/android/repository/android-ndk-r22b-linux-x86_64.zip > android-ndk-r22b-linux-x86_64.zip
132+ if [ "$(sha256sum android-ndk-r22b-linux-x86_64.zip | awk '{ print $1 }')" != "ac3a0421e76f71dd330d0cd55f9d99b9ac864c4c034fc67e0d671d022d4e806b" ]; then
133+ echo "Bad hash"
134+ exit 1
135+ fi
136+ unzip android-ndk-r22b-linux-x86_64.zip
137+ - name : Install cbindgen
138+ run : |
139+ . $HOME/.cargo/env
140+ cargo install --force cbindgen
141+ - name : Checkout Rust-Lightning and LDK-C-Bindings git
142+ run : |
143+ git config --global user.email "ldk-ci@example.com"
144+ git config --global user.name "LDK CI"
145+ # Note this is a different endpoint, as we need one non-upstream commit!
146+ git clone https://git.bitcoin.ninja/rust-lightning
147+ cd rust-lightning
148+ git checkout origin/2021-03-java-bindings-base
149+ cd ..
150+ git clone https://github.com/lightningdevkit/ldk-c-bindings
151+ - name : Detect current git version
152+ run : |
153+ # We assume the top commit is just a bindings update commit, so we
154+ # check out the previous commit to use as the commit we git describe.
155+ # If the top commit is a merge commit, we need to get the last merge
156+ # head and assume the latest bindings are built against its parent.
157+ COMMIT_PARENTS=$(git show -s --pretty=format:%P HEAD)
158+ if [ "${#COMMIT_PARENTS}" = 40 ]; then
159+ export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD^1)"
160+ else
161+ MERGE_HEAD=$(git show --pretty=format:%P HEAD | ( for last in $(cat /dev/stdin); do true; done; echo $last ))
162+ export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag $MERGE_HEAD^1)"
163+ fi
164+ echo "Using $LDK_GARBAGECOLLECTED_GIT_OVERRIDE as git version"
165+ echo "$LDK_GARBAGECOLLECTED_GIT_OVERRIDE" > .git_ver
166+ - name : Checkout Android AAR binaries and artifacts
167+ run : git clone --depth 1 https://git.bitcoin.ninja/ldk-java-bins
168+ - name : Build Android aar
169+ run : |
170+ . $HOME/.cargo/env
171+ export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(cat .git_ver)"
172+ cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-classes.jar" ./
173+ export ANDROID_TOOLCHAIN="$(pwd)/android-ndk-r22b/toolchains/llvm/prebuilt/linux-x86_64"
174+ export PATH="$PATH:$ANDROID_TOOLCHAIN/bin"
175+ ./android-build.sh ./rust-lightning ./ldk-c-bindings/ ./ldk-java-bins/android-artifacts
176+ - name : Check latest library and jars are in bins repo
177+ run : |
178+ export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(cat .git_ver)"
179+ rm "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/LDK-release.aar"
180+ cp LDK-release.aar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
99181 cd ldk-java-bins
100182 git diff --exit-code
101183
@@ -104,8 +186,7 @@ jobs:
104186 matrix :
105187 include :
106188 - platform : macos-10.15
107- # MacOS 11 is currently in private preview, we've applied for access
108- # - platform: macos-11
189+ - platform : macos-11
109190 runs-on : ${{ matrix.platform }}
110191 env :
111192 TOOLCHAIN : stable
@@ -173,7 +254,7 @@ jobs:
173254 - name : Checkout latest Linux binaries
174255 run : |
175256 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(cat .git_ver)"
176- git clone https://git.bitcoin.ninja/ldk-java-bins
257+ git clone --depth 1 https://git.bitcoin.ninja/ldk-java-bins
177258 mkdir -p src/main/resources/
178259 cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/liblightningjni_Linux-"* src/main/resources/
179260 - name : Build Java/TS Release Bindings
@@ -182,8 +263,16 @@ jobs:
182263 # genbindings.sh always fails as there is no wasm32-wasi library
183264 # available, so instead we check that the expected JNI library
184265 # is created.
266+ export PATH=`pwd`/clang+llvm-12.0.0-x86_64-apple-darwin/bin:$PATH
185267 ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$(xcrun --show-sdk-path)" false false || echo
186268 cat src/main/resources/liblightningjni_MacOSX-x86_64.nativelib > /dev/null
269+ if [ "${{ matrix.platform }}" = "macos-11" ]; then
270+ export CC="clang --target=aarch64-apple-darwin"
271+ export LDK_TARGET=aarch64-apple-darwin
272+ export LDK_TARGET_CPU=apple-a14
273+ ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$(xcrun --show-sdk-path)" false false || echo
274+ cat src/main/resources/liblightningjni_MacOSX-aarch64.nativelib > /dev/null
275+ fi
187276 - name : Fetch Maven 3.8.1
188277 run : |
189278 wget -O apache-maven-3.8.1-bin.tar.gz https://apache.osuosl.org/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz
@@ -205,7 +294,22 @@ jobs:
205294 run : |
206295 if [ "${{ matrix.platform }}" = "macos-11" ]; then
207296 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(cat .git_ver)"
208- cp src/main/resources/liblightningjni_MacOS-amd64.nativelib "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
297+ rm "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-{x86_64,aarch64}.nativelib
298+ cp src/main/resources/liblightningjni_MacOSX-*.nativelib "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
209299 cd ldk-java-bins
210- git diff --exit-code
300+ # Sadly, OSX binaries are not currently deterministic, more debugging is needed.
301+ #git diff --exit-code
302+ fi
303+ - name : Run Java Tests against release bins
304+ run : |
305+ if [ "${{ matrix.platform }}" != "macos-11" ]; then
306+ export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(cat .git_ver)"
307+ cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-{x86_64,aarch64}.nativelib src/main/resources/
308+ mvn clean
309+ mvn -DskipTests=true package
310+ mvn install:install-file -Dfile=target/ldk-java-1.0-SNAPSHOT.jar -DgroupId=org.ldk -DartifactId=ldk-java -Dversion=1.0-SNAPSHOT -Dpackaging=jar
311+ cd javatester
312+ mvn package
313+ java -ea -jar target/ldk-java-tests-1.0-SNAPSHOT-jar-with-dependencies.jar
314+ cd ..
211315 fi
0 commit comments