Skip to content

Commit 61378e1

Browse files
committed
Add a utility script to make release jars deterministic
1 parent 342ef4a commit 61378e1

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

build-release-jar.sh

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#/bin/sh
2+
set -e
3+
set -x
4+
5+
# zips are not generally deterministic without some tweaking, which we do here.
6+
7+
echo "Checking that required release native libraries are present..."
8+
ls src/main/resources/liblightningjni_Linux-amd64.nativelib
9+
ls src/main/resources/liblightningjni_MacOSX-x86_64.nativelib
10+
ls src/main/resources/liblightningjni_MacOSX-aarch64.nativelib
11+
12+
export LANG=C
13+
14+
mvn clean
15+
faketime 2021-01-01 mvn -DskipTests=true package
16+
17+
mkdir ziptmp
18+
cd ziptmp
19+
unzip ../target/ldk-java-1.0-SNAPSHOT-sources.jar | grep inflating | awk '{ print $2 }' | sort > ../sources-zip-files.txt
20+
sed -i 's/#Fri Jan 01 00:.* UTC 2021/#Fri Jan 01 00:00:00 UTC 2021/' META-INF/maven/org.ldk/ldk-java/pom.properties
21+
touch -d "2021-01-01 00:00 UTC" $(cat ../sources-zip-files.txt)
22+
cat ../sources-zip-files.txt | zip -X@ ../ldk-java-1.0-SNAPSHOT-sources-deterministic.jar
23+
cd ..
24+
rm -r ziptmp
25+
mv ldk-java-1.0-SNAPSHOT-sources-deterministic.jar target/ldk-java-1.0-SNAPSHOT-sources.jar
26+
27+
mkdir ziptmp
28+
cd ziptmp
29+
unzip ../target/ldk-java-1.0-SNAPSHOT.jar | grep inflating | awk '{ print $2 }' | sort > ../classes-zip-files.txt
30+
sed -i 's/#Fri Jan 01 00:.* UTC 2021/#Fri Jan 01 00:00:00 UTC 2021/' META-INF/maven/org.ldk/ldk-java/pom.properties
31+
sed -i 's/Built-By: .*/Built-By: ldk-deterministic-builds/' META-INF/MANIFEST.MF
32+
touch -d "2021-01-01 00:00 UTC" $(cat ../classes-zip-files.txt)
33+
cat ../classes-zip-files.txt | zip -X@ ../ldk-java-1.0-SNAPSHOT-deterministic.jar
34+
cd ..
35+
rm -r ziptmp
36+
mv ldk-java-1.0-SNAPSHOT-deterministic.jar target/ldk-java-1.0-SNAPSHOT.jar

0 commit comments

Comments
 (0)