Document how to add custom JNI bindings (#50)
This is how we add Linux Arm64 JNI bindings.
This commit is contained in:
parent
4df49dd8f6
commit
7af7b7760e
@ -7,6 +7,7 @@ To publish snapshot, you must add your sonatype credentials for the `ossrh` serv
|
||||
|
||||
- Download `snapshot.zip` generated by the `Publish snapshot` github action
|
||||
- unzip `snapshot.zip` in the `publishing` directory
|
||||
- add additional JNI bindings (optional, see below)
|
||||
- edit `secp256k1-kmp-snapshot-deploy.sh` and update the `VERSION` environment variable if needed
|
||||
- run `secp256k1-kmp-snapshot-deploy.sh`
|
||||
|
||||
@ -17,7 +18,25 @@ You must edit `secp256k1-kmp-staging-upload.sh` and add your sonatype credential
|
||||
|
||||
- Download `release.zip` generated by the `Publish release` github action (which is triggered every time you publish a github release)
|
||||
- unzip `release.zip` in the `publishing` directory
|
||||
- add additional JNI bindings (optional, see below)
|
||||
- edit `secp256k1-kmp-staging-upload.sh` and update the `VERSION` environment variable if needed
|
||||
- sign all artifacts with a valid gpg key: `find release -type f -print -exec gpg -ab {} \;`
|
||||
- run `secp256k1-kmp-staging-upload.sh`
|
||||
- log into sonatype, close and publish your staging repository. Artifacts will be available on Maven Central within a few hours.
|
||||
|
||||
## Adding custom JNI bindings
|
||||
|
||||
Github CI currently generates JNI bindings for Windows x64, Linux x64 and iOS x64. But it is possible to add custom bindings to JNI packages before
|
||||
they are published to maven central. This is how we add linux arm64 bindings:
|
||||
- compile JNI bindings for Linux Arm64 (on a Linux Arm64 machine, cross-compilation is not supported)
|
||||
- git clone --recursive https://github.com/ACINQ/secp256k1-kmp.git
|
||||
- cd secp256k1-kmp
|
||||
- TARGET=linux ./native/build.sh
|
||||
- mkdir -p jni/jvm/build/linux
|
||||
- TARGET=linux ./jni/jvm/build.sh
|
||||
- JNI library is: jni/jvm/build/linux/libsecp256k1-jni.so
|
||||
- copy libsecp256k1-jni.so to fr/acinq/secp256k1/jni/native/linux-aarch64/libsecp256k1-jni.so
|
||||
- run `secp256k1-kmp-add-linuxarm64.sh` and specify either `release` or `snapshot` and the `VERSION` environment variable, for example:
|
||||
- VERSION=0.6.4-SNAPSHOT ./secp256k1-kmp-add-linuxarm64.sh snapshot
|
||||
- VERSION=0.6.3 ./secp256k1-kmp-add-linuxarm64.sh release
|
||||
|
||||
|
17
publishing/secp256k1-kmp-add-linuxarm64.sh
Executable file
17
publishing/secp256k1-kmp-add-linuxarm64.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
echo "specify either snapshot or release"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# add aarch64 (ARM64) library to the linux jar
|
||||
if [ -e fr/acinq/secp256k1/jni/native/linux-aarch64/libsecp256k1-jni.so ]
|
||||
then
|
||||
jar -uf $1/fr/acinq/secp256k1/secp256k1-kmp-jni-jvm-linux/$VERSION/secp256k1-kmp-jni-jvm-linux-$VERSION.jar fr || exit
|
||||
else
|
||||
libsecp256k1-jni.so for arch64 is missing
|
||||
exit 1
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user