58 lines
3.2 KiB
Markdown
58 lines
3.2 KiB
Markdown
# Publishing secp256k1-kmp artifacts
|
|
|
|
## snapshots
|
|
|
|
Snapshots are published to the Sonatype snapshot repository (https://oss.sonatype.org/content/repositories/snapshots/).
|
|
To publish snapshot, you must add your sonatype credentials for the `ossrh` server to your local maven settings (typically in $HOME/.m2/settings.xml)
|
|
|
|
- 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`
|
|
|
|
## releases
|
|
|
|
Releases are published to the Sonatype staging repository. If all items are valid they will be published to `maven central` repository.
|
|
You must edit `secp256k1-kmp-staging-upload.sh` and add your sonatype credentials. You must also have a valid GPG key.
|
|
|
|
- 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.9.0-SNAPSHOT ./secp256k1-kmp-add-linuxarm64.sh snapshot
|
|
- VERSION=0.9.0 ./secp256k1-kmp-add-linuxarm64.sh release
|
|
|
|
This is how we add macos arm64 (M1/M2) bindings:
|
|
- compile JNI bindings for macos Arm64 (on a macos Arm64 machine, cross-compilation is not supported)
|
|
- git clone --recursive https://github.com/ACINQ/secp256k1-kmp.git
|
|
- cd secp256k1-kmp
|
|
- TARGET=darwin ./native/build.sh
|
|
- mkdir -p jni/jvm/build/darwin
|
|
- TARGET=darwin ./jni/jvm/build.sh
|
|
- JNI library is: jni/jvm/build/darwin/libsecp256k1-jni.dylib
|
|
- copy libsecp256k1-jni.dylib to fr/acinq/secp256k1/jni/native/darwin-aarch64/libsecp256k1-jni.dylib
|
|
- run `secp256k1-kmp-add-darwinaarch64.sh` and specify either `release` or `snapshot` and the `VERSION` environment variable, for example:
|
|
- VERSION=0.9.0-SNAPSHOT ./secp256k1-kmp-add-darwinaarch64.sh snapshot
|
|
- VERSION=0.9.0 ./secp256k1-kmp-add-darwinaarch64.sh release
|
|
|