1717 run : |
1818 apt-get update
1919 apt-get -y dist-upgrade
20- apt-get -y install cargo libstd-rust-dev-wasm32 valgrind lld git g++ clang openjdk-11-jdk maven faketime zip unzip llvm
20+ apt-get -y install cargo libstd-rust-dev-wasm32 valgrind lld git g++ clang openjdk-11-jdk maven faketime zip unzip llvm curl
2121 - name : Checkout source code
2222 uses : actions/checkout@v2
2323 with :
3535 cd ..
3636 git clone https://github.com/lightningdevkit/ldk-c-bindings
3737 cd ldk-c-bindings
38- git checkout 0.0.102
38+ git checkout 0.0.103
3939 - name : Rebuild C bindings without STD for WASM
4040 run : |
4141 cd ldk-c-bindings
6060 - name : Checkout latest MacOS binaries
6161 run : |
6262 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
63- git clone --depth 1 https://git.bitcoin.ninja/ldk-java-bins
63+ echo "Fetching deterministic binaries for LDK-GC ${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
64+ # Gitweb only allows snapshots of folders by providing the object hash, which we have to extract:
65+ SNAPSHOT_LINK="$(curl "https://git.bitcoin.ninja/index.cgi?p=ldk-java-bins;a=tree;f=${LDK_GARBAGECOLLECTED_GIT_OVERRIDE};hb=refs/heads/main" | grep snapshot | grep -o 'href="[a-zA-Z0-9/?\.=;\-]*"' | sed 's/href="//' | tr -d '"' | grep snapshot)"
66+ curl -o bins-snapshot.tgz "https://git.bitcoin.ninja${SNAPSHOT_LINK}"
67+ mkdir -p ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
68+ cd ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
69+ tar xvvf ../../bins-snapshot.tgz
70+ mv ldk-java-bins-*/* ./
71+ rm -r ldk-java-bins-*
72+ cd ../..
6473 mkdir -p src/main/resources/
6574 cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/liblightningjni_MacOSX-"* src/main/resources/
6675 - name : Build Java/TS Release Bindings
@@ -76,24 +85,23 @@ jobs:
7685 - name : Check latest library and jars are in bins repo
7786 run : |
7887 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
79- rm "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"*.jar
80- rm "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_Linux*.nativelib
81- cp src/main/resources/liblightningjni_Linux-amd64.nativelib "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
82- cp ldk-java-sources.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
83- cp ldk-java.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
84- cp ldk-java-classes.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
85- cp ldk-java-javadoc.jar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
86- cd ldk-java-bins
88+ mkdir ldk-java-bins/new/
89+ cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_Mac*.nativelib ldk-java-bins/new/
90+ cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"LDK-release.aar ldk-java-bins/new/
8791 # ldk-java-leaktracking is only for debug purposes and we don't bother with determinism
88- git checkout "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-leaktracking.jar"
89- if ! git diff --exit-code; then
90- mv "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"* ./
91- git checkout "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
92+ cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"ldk-java-leaktracking.jar ldk-java-bins/new/
93+ cp src/main/resources/liblightningjni_Linux-amd64.nativelib ldk-java-bins/new/
94+ cp ldk-java-sources.jar ldk-java-bins/new/
95+ cp ldk-java.jar ldk-java-bins/new/
96+ cp ldk-java-classes.jar ldk-java-bins/new/
97+ cp ldk-java-javadoc.jar ldk-java-bins/new/
98+ cd ldk-java-bins
99+ if ! diff -r "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/" new/; then
92100 apt-get -y install diffoscope
93- diffoscope ldk-java-sources.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-sources.jar" || echo
94- diffoscope ldk-java-javadoc.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-javadoc.jar" || echo
95- diffoscope ldk-java-classes.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-classes.jar" || echo
96- diffoscope ldk-java.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java.jar" || echo
101+ diffoscope new/ ldk-java-sources.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-sources.jar" || echo
102+ diffoscope new/ ldk-java-javadoc.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-javadoc.jar" || echo
103+ diffoscope new/ ldk-java-classes.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-classes.jar" || echo
104+ diffoscope new/ ldk-java.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java.jar" || echo
97105 exit 1
98106 fi
99107 - name : Run Java Tests against built release jar
@@ -153,9 +161,31 @@ jobs:
153161 cd ..
154162 git clone https://github.com/lightningdevkit/ldk-c-bindings
155163 cd ldk-c-bindings
156- git checkout 0.0.102
164+ git checkout 0.0.103
157165 - name : Checkout Android AAR binaries and artifacts
158- run : git clone --depth 1 https://git.bitcoin.ninja/ldk-java-bins
166+ run : |
167+ # Gitweb only allows snapshots of folders by providing the object hash, which we have to extract:
168+ export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
169+ echo "Fetching deterministic binaries for LDK-GC ${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
170+ RELEASE_PAGE="https://git.bitcoin.ninja/index.cgi?p=ldk-java-bins;a=tree;f=${LDK_GARBAGECOLLECTED_GIT_OVERRIDE};hb=refs/heads/main"
171+ SNAPSHOT_LINK="$(curl "$RELEASE_PAGE" | grep snapshot | grep -o 'href="[a-zA-Z0-9/?\.=;\-]*"' | sed 's/href="//' | tr -d '"' | grep snapshot)"
172+ curl -o bins-snapshot.tgz "https://git.bitcoin.ninja${SNAPSHOT_LINK}"
173+
174+ ANDROID_PAGE="https://git.bitcoin.ninja/index.cgi?p=ldk-java-bins;a=tree;f=android-artifacts;hb=refs/heads/main"
175+ SNAPSHOT_LINK="$(curl "$ANDROID_PAGE" | grep snapshot | grep -o 'href="[a-zA-Z0-9/?\.=;\-]*"' | sed 's/href="//' | tr -d '"' | grep snapshot)"
176+ curl -o android-snapshot.tgz "https://git.bitcoin.ninja${SNAPSHOT_LINK}"
177+
178+ mkdir -p ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
179+ cd ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
180+ tar xvvf ../../bins-snapshot.tgz
181+ mv ldk-java-bins-*/* ./
182+ rm -r ldk-java-bins-*
183+
184+ mkdir -p ../android-artifacts
185+ cd ../android-artifacts
186+ tar xvvf ../../android-snapshot.tgz
187+ mv ldk-java-bins-*/* ./
188+ rm -r ldk-java-bins-*
159189 - name : Build Android aar
160190 run : |
161191 . $HOME/.cargo/env
@@ -167,14 +197,9 @@ jobs:
167197 - name : Check latest library and jars are in bins repo
168198 run : |
169199 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
170- rm "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/LDK-release.aar"
171- cp LDK-release.aar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
172- cd ldk-java-bins
173- if ! git diff --exit-code; then
174- mv "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/LDK-release.aar" ./
175- git checkout "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/LDK-release.aar"
200+ if ! diff LDK-release.aar "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"LDK-release.aar; then
176201 apt-get -y install diffoscope
177- diffoscope LDK-release.aar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/LDK-release.aar"
202+ diffoscope LDK-release.aar "ldk-java-bins/ ${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/LDK-release.aar"
178203 exit 1
179204 fi
180205
@@ -218,7 +243,7 @@ jobs:
218243 cd ..
219244 git clone https://github.com/lightningdevkit/ldk-c-bindings
220245 cd ldk-c-bindings
221- git checkout 0.0.102
246+ git checkout 0.0.103
222247 - name : Rebuild C bindings with upstream clang, and check the sample app builds + links
223248 run : |
224249 cd ldk-c-bindings
@@ -238,7 +263,15 @@ jobs:
238263 - name : Checkout latest Linux binaries
239264 run : |
240265 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
241- git clone --depth 1 https://git.bitcoin.ninja/ldk-java-bins
266+ echo "Fetching deterministic binaries for LDK-GC ${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
267+ # Gitweb only allows snapshots of folders by providing the object hash, which we have to extract:
268+ SNAPSHOT_LINK="$(wget -O /dev/stdout "https://git.bitcoin.ninja/index.cgi?p=ldk-java-bins;a=tree;f=${LDK_GARBAGECOLLECTED_GIT_OVERRIDE};hb=refs/heads/main" | grep snapshot | grep -o 'href="[a-zA-Z0-9/?\.=;\-]*"' | sed 's/href="//' | tr -d '"' | grep snapshot)"
269+ wget -O bins-snapshot.tgz "https://git.bitcoin.ninja${SNAPSHOT_LINK}"
270+ mkdir -p ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
271+ cd ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
272+ tar xvvf ../../bins-snapshot.tgz
273+ mv ldk-java-bins-*/* ./
274+ cd ../..
242275 mkdir -p src/main/resources/
243276 cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/liblightningjni_Linux-"* src/main/resources/
244277 - name : Build Java/TS Release Bindings
@@ -280,11 +313,9 @@ jobs:
280313 run : |
281314 if [ "${{ matrix.platform }}" = "macos-11" ]; then
282315 export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
283- rm "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-{x86_64,aarch64}.nativelib
284- cp src/main/resources/liblightningjni_MacOSX-*.nativelib "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"
285- cd ldk-java-bins
286316 # Sadly, OSX binaries are not currently deterministic, more debugging is needed.
287- #git diff --exit-code
317+ diff "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-x86_64.nativelib src/main/resources/liblightningjni_MacOSX-x86_64.nativelib || echo
318+ diff "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-aarch64.nativelib src/main/resources/liblightningjni_MacOSX-aarch64.nativelib || echo
288319 fi
289320 - name : Run Java Tests against release bins
290321 run : |
0 commit comments