diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml new file mode 100644 index 000000000..c315efc55 --- /dev/null +++ b/.github/workflows/publish-android.yml @@ -0,0 +1,52 @@ +name: Android Publish + +on: + release: + types: [published] + workflow_dispatch: + inputs: + version: + description: "Version to publish (e.g., v0.1.0)" + required: true + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + server-id: github + settings-path: ${{ github.workspace }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Extract version from input or tag + id: version + shell: bash + run: | + VERSION="${{ inputs.version }}" + if [[ -z "$VERSION" ]]; then + VERSION="$GITHUB_REF_NAME" + fi + echo "version=${VERSION#v}" >> $GITHUB_OUTPUT + + - name: Build with Gradle + working-directory: bindings/kotlin/ldk-node-android + run: ./gradlew build -Pversion=${{ steps.version.outputs.version }} + + - name: Publish to GitHub Packages + working-directory: bindings/kotlin/ldk-node-android + env: + GITHUB_ACTOR: ${{ github.actor }} + GITHUB_TOKEN: ${{ secrets.ORG_PACKAGES_TOKEN }} + GITHUB_REPO: ${{ github.repository }} + run: ./gradlew publish -Pversion=${{ steps.version.outputs.version }} diff --git a/.github/workflows/publish-jvm.yml b/.github/workflows/publish-jvm.yml new file mode 100644 index 000000000..34624e5b4 --- /dev/null +++ b/.github/workflows/publish-jvm.yml @@ -0,0 +1,52 @@ +name: JVM Publish + +on: + release: + types: [published] + workflow_dispatch: + inputs: + version: + description: "Version to publish (e.g., v0.1.0)" + required: true + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + server-id: github + settings-path: ${{ github.workspace }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Extract version from input or tag + id: version + shell: bash + run: | + VERSION="${{ inputs.version }}" + if [[ -z "$VERSION" ]]; then + VERSION="$GITHUB_REF_NAME" + fi + echo "version=${VERSION#v}" >> $GITHUB_OUTPUT + + - name: Build with Gradle + working-directory: bindings/kotlin/ldk-node-jvm + run: ./gradlew build -x test -Pversion=${{ steps.version.outputs.version }} + + - name: Publish to GitHub Packages + working-directory: bindings/kotlin/ldk-node-jvm + env: + GITHUB_ACTOR: ${{ github.actor }} + GITHUB_TOKEN: ${{ secrets.ORG_PACKAGES_TOKEN }} + GITHUB_REPO: ${{ github.repository }} + run: ./gradlew publish -Pversion=${{ steps.version.outputs.version }} diff --git a/.gitignore b/.gitignore index dfe51a623..eafe12832 100644 --- a/.gitignore +++ b/.gitignore @@ -23,16 +23,6 @@ swift.swiftdoc # Ignore LDKNodeFFI.xcframework files /bindings/swift/LDKNodeFFI.xcframework -/bindings/kotlin/ldk-node-android/lib/src/main/jniLibs -/bindings/kotlin/ldk-node-android/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.kt -/bindings/kotlin/ldk-node-jvm/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.kt -/bindings/kotlin/ldk-node-jvm/lib/src/main/resources/ - -# fork -!/bindings/kotlin/ldk-node-android/lib/src/main/jniLibs -!/bindings/kotlin/ldk-node-android/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.kt -!/bindings/kotlin/ldk-node-jvm/lib/src/main/kotlin/org/lightningdevkit/ldknode/ldk_node.kt -!/bindings/kotlin/ldk-node-jvm/lib/src/main/resources/ # IDE and local files .idea diff --git a/AGENTS.md b/AGENTS.md index c74bd951e..11bba3294 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -205,8 +205,8 @@ RUSTFLAGS="--cfg no_download" cargo build && ./scripts/uniffi_bindgen_generate.s ## Version Bumping Checklist When bumping the version, ALWAYS update ALL of these files: 1. `Cargo.toml` - main crate version -2. `bindings/kotlin/ldk-node-android/gradle.properties` - Android libraryVersion -3. `bindings/kotlin/ldk-node-jvm/gradle.properties` - JVM libraryVersion +2. `bindings/kotlin/ldk-node-android/gradle.properties` - Android version +3. `bindings/kotlin/ldk-node-jvm/gradle.properties` - JVM version 4. `bindings/python/pyproject.toml` - Python version 5. `Package.swift` - Swift tag (and checksum after building) 6. `CHANGELOG.md` - Add release notes section at top diff --git a/bindings/README.md b/bindings/README.md index 28d580bf2..a0d18a036 100644 --- a/bindings/README.md +++ b/bindings/README.md @@ -11,7 +11,7 @@ RUSTFLAGS="--cfg no_download" cargo build && ./scripts/uniffi_bindgen_generate.s Detailed instructions for publishing a new version of the bindings. 1. Update `Cargo.toml` -2. Update `libraryVersion` in: +2. Update `version` in: - `bindings/kotlin/ldk-node-android/gradle.properties` - `bindings/kotlin/ldk-node-jvm/gradle.properties` 3. Run the above command to build all bindings diff --git a/bindings/kotlin/ldk-node-android/README.md b/bindings/kotlin/ldk-node-android/README.md index 1787da017..68f1b2955 100644 --- a/bindings/kotlin/ldk-node-android/README.md +++ b/bindings/kotlin/ldk-node-android/README.md @@ -4,36 +4,32 @@ Publishing new version guide. 1. Run in root dir `sh scripts/uniffi_bindgen_generate_kotlin_android.sh` -1. Update `libraryVersion` in `bindings/kotlin/ldk-node-android/gradle.properties`. +1. Update `version` in `bindings/kotlin/ldk-node-android/gradle.properties`. 1. Commit 1. Push new branch (or new tag) -1. Go to [Jitpack repo url](https://jitpack.io/#synonymdev/ldk-node), - choose the build type by tab (ie. releases, branch, etc.), and tap 'Get it' - for the required version. - - - If a build already exists, tap the file icon under 'Log' to check the status. - 1. In the android project: - - in `settings.gradle.kts` add jitpack repository using `maven("https://jitpack.io")`: + - in `settings.gradle.kts` add GitHub Packages repository: ```kt dependencyResolutionManagement { repositories { google() mavenCentral() - maven("https://jitpack.io") + maven { + url = uri("https://maven.pkg.github.com/synonymdev/ldk-node") + credentials { + username = providers.gradleProperty("gpr.user").orNull ?: System.getenv("GITHUB_ACTOR") + password = providers.gradleProperty("gpr.key").orNull ?: System.getenv("GITHUB_TOKEN") + } + } } ``` - add dependency in `libs.versions.toml`: ```toml - # by tag - ldk-node-android = { module = "com.github.synonymdev:ldk-node", version = "v0.6.0-rc.4" - - # or by branch - ldk-node-android = { module = "com.github.synonymdev:ldk-node", version = "main-SNAPSHOT" + ldk-node-android = { module = "com.synonym:ldk-node-android", version = "0.7.0-rc.26" } ``` - Run `Sync project with gradle files` action in android studio diff --git a/bindings/kotlin/ldk-node-android/build.gradle.kts b/bindings/kotlin/ldk-node-android/build.gradle.kts index 5520553e3..76bf5e6d3 100644 --- a/bindings/kotlin/ldk-node-android/build.gradle.kts +++ b/bindings/kotlin/ldk-node-android/build.gradle.kts @@ -13,8 +13,4 @@ plugins { kotlin("plugin.serialization") version "2.2.0" apply false } -// library version is defined in gradle.properties -val libraryVersion: String by project - -group = "org.lightningdevkit" -version = libraryVersion +// group and version are defined in gradle.properties diff --git a/bindings/kotlin/ldk-node-android/gradle.properties b/bindings/kotlin/ldk-node-android/gradle.properties index 36b21240f..9b8ce687b 100644 --- a/bindings/kotlin/ldk-node-android/gradle.properties +++ b/bindings/kotlin/ldk-node-android/gradle.properties @@ -2,4 +2,5 @@ org.gradle.jvmargs=-Xmx1536m android.useAndroidX=true android.enableJetifier=true kotlin.code.style=official -libraryVersion=0.7.0-rc.26 +group=com.synonym +version=0.7.0-rc.26 diff --git a/bindings/kotlin/ldk-node-android/lib/build.gradle.kts b/bindings/kotlin/ldk-node-android/lib/build.gradle.kts index d55a4aa4d..71fe96176 100644 --- a/bindings/kotlin/ldk-node-android/lib/build.gradle.kts +++ b/bindings/kotlin/ldk-node-android/lib/build.gradle.kts @@ -1,6 +1,3 @@ -// library version is defined in gradle.properties -val libraryVersion: String by project - plugins { id("com.android.library") kotlin("android") @@ -65,39 +62,42 @@ afterEvaluate { publishing { publications { create("maven") { - groupId = "org.lightningdevkit" - artifactId = "ldk-node-android" - version = libraryVersion + val mavenArtifactId = "ldk-node-android" + groupId = providers.gradleProperty("group").orNull ?: "com.synonym" + artifactId = mavenArtifactId + version = providers.gradleProperty("version").orNull ?: "0.0.0" from(components["release"]) pom { - name.set("ldk-node-android") - description.set( - "LDK Node, a ready-to-go Lightning node library built using LDK and BDK." - ) - url.set("https://lightningdevkit.org") + name.set(mavenArtifactId) + description.set("LDK Node Android bindings (Synonym fork).") + url.set("https://github.com/synonymdev/ldk-node") licenses { - license { - name.set("APACHE 2.0") - url.set("https://github.com/lightningdevkit/ldk-node/blob/main/LICENSE-APACHE") - } license { name.set("MIT") - url.set("https://github.com/lightningdevkit/ldk-node/blob/main/LICENSE-MIT") + url.set("https://github.com/synonymdev/ldk-node/blob/main/LICENSE-MIT") } } developers { developer { - id.set("tnull") - name.set("Elias Rohrer") - email.set("dev@tnull.de") + id.set("synonymdev") + name.set("Synonym") + email.set("noreply@synonym.to") } } - scm { - connection.set("scm:git:github.com/lightningdevkit/ldk-node.git") - developerConnection.set("scm:git:ssh://github.com/lightningdevkit/ldk-node.git") - url.set("https://github.com/lightningdevkit/ldk-node/tree/main") - } + } + } + } + repositories { + maven { + val repo = System.getenv("GITHUB_REPO") + ?: providers.gradleProperty("gpr.repo").orNull + ?: "synonymdev/ldk-node" + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/$repo") + credentials { + username = System.getenv("GITHUB_ACTOR") ?: providers.gradleProperty("gpr.user").orNull + password = System.getenv("GITHUB_TOKEN") ?: providers.gradleProperty("gpr.key").orNull } } } diff --git a/bindings/kotlin/ldk-node-jvm/build.gradle.kts b/bindings/kotlin/ldk-node-jvm/build.gradle.kts index faf316ef0..aa82ba6fb 100644 --- a/bindings/kotlin/ldk-node-jvm/build.gradle.kts +++ b/bindings/kotlin/ldk-node-jvm/build.gradle.kts @@ -10,8 +10,4 @@ buildscript { plugins { } -// library version is defined in gradle.properties -val libraryVersion: String by project - -group = "org.lightningdevkit" -version = libraryVersion +// group and version are defined in gradle.properties diff --git a/bindings/kotlin/ldk-node-jvm/gradle.properties b/bindings/kotlin/ldk-node-jvm/gradle.properties index 217f1c465..7d29678ac 100644 --- a/bindings/kotlin/ldk-node-jvm/gradle.properties +++ b/bindings/kotlin/ldk-node-jvm/gradle.properties @@ -1,3 +1,4 @@ org.gradle.jvmargs=-Xmx1536m kotlin.code.style=official -libraryVersion=0.7.0-rc.26 +group=com.synonym +version=0.7.0-rc.26 diff --git a/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts b/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts index 2ad609c3d..79f13475e 100644 --- a/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts +++ b/bindings/kotlin/ldk-node-jvm/lib/build.gradle.kts @@ -17,11 +17,7 @@ plugins { id("org.jlleitschuh.gradle.ktlint") version "11.6.1" } -// library version is defined in gradle.properties -val libraryVersion: String by project - -group = "org.lightningdevkit" -version = libraryVersion +// group and version are read from gradle.properties automatically repositories { // Use Maven Central for resolving dependencies. @@ -92,41 +88,41 @@ afterEvaluate { publishing { publications { create("maven") { - groupId = "org.lightningdevkit" + groupId = providers.gradleProperty("group").orNull ?: "com.synonym" artifactId = "ldk-node-jvm" - version = libraryVersion + version = providers.gradleProperty("version").orNull ?: "0.0.0" from(components["java"]) pom { name.set("ldk-node-jvm") - description.set( - "LDK Node, a ready-to-go Lightning node library built using LDK and BDK." - ) - url.set("https://lightningdevkit.org") + description.set("LDK Node JVM bindings (Synonym fork).") + url.set("https://github.com/synonymdev/ldk-node") licenses { - license { - name.set("APACHE 2.0") - url.set("https://github.com/lightningdevkit/ldk-node/blob/main/LICENSE-APACHE") - } license { name.set("MIT") - url.set("https://github.com/lightningdevkit/ldk-node/blob/main/LICENSE-MIT") + url.set("https://github.com/synonymdev/ldk-node/blob/main/LICENSE-MIT") } } developers { - developers { - developer { - id.set("tnull") - name.set("Elias Rohrer") - email.set("dev@tnull.de") - } + developer { + id.set("synonymdev") + name.set("Synonym") + email.set("noreply@synonym.to") } } - scm { - connection.set("scm:git:github.com/lightningdevkit/ldk-node.git") - developerConnection.set("scm:git:ssh://github.com/lightningdevkit/ldk-node.git") - url.set("https://github.com/lightningdevkit/ldk-node/tree/main") - } + } + } + } + repositories { + maven { + val repo = System.getenv("GITHUB_REPO") + ?: providers.gradleProperty("gpr.repo").orNull + ?: "synonymdev/ldk-node" + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/$repo") + credentials { + username = System.getenv("GITHUB_ACTOR") ?: providers.gradleProperty("gpr.user").orNull + password = System.getenv("GITHUB_TOKEN") ?: providers.gradleProperty("gpr.key").orNull } } } diff --git a/jitpack.yml b/jitpack.yml deleted file mode 100644 index be1c0b44e..000000000 --- a/jitpack.yml +++ /dev/null @@ -1,4 +0,0 @@ -jdk: openjdk17 -install: - - bindings/kotlin/ldk-node-android/gradlew -p bindings/kotlin/ldk-node-android publishToMavenLocal - - bindings/kotlin/ldk-node-jvm/gradlew -p bindings/kotlin/ldk-node-jvm publishToMavenLocal diff --git a/scripts/uniffi_bindgen_generate_kotlin.sh b/scripts/uniffi_bindgen_generate_kotlin.sh index 2777a74f6..6ac4f1b04 100755 --- a/scripts/uniffi_bindgen_generate_kotlin.sh +++ b/scripts/uniffi_bindgen_generate_kotlin.sh @@ -54,7 +54,7 @@ fi # Sync version from Cargo.toml echo "Syncing version from Cargo.toml..." CARGO_VERSION=$(grep '^version = ' Cargo.toml | sed 's/version = "\(.*\)"/\1/' | head -1) -sed -i.bak "s/^libraryVersion=.*/libraryVersion=$CARGO_VERSION/" "$JVM_LIB_DIR/gradle.properties" +sed -i.bak "s/^version=.*/version=$CARGO_VERSION/" "$JVM_LIB_DIR/gradle.properties" rm -f "$JVM_LIB_DIR/gradle.properties.bak" echo "JVM version synced: $CARGO_VERSION" @@ -62,4 +62,8 @@ echo "JVM version synced: $CARGO_VERSION" echo "Testing JVM library build..." $JVM_LIB_DIR/gradlew --project-dir "$JVM_LIB_DIR" clean build -x test || exit 1 +# Verify JVM library publish task graph +echo "Verifying JVM library publish task graph..." +$JVM_LIB_DIR/gradlew --project-dir "$JVM_LIB_DIR" clean publish --dry-run || exit 1 + echo "JVM build process completed successfully!" diff --git a/scripts/uniffi_bindgen_generate_kotlin_android.sh b/scripts/uniffi_bindgen_generate_kotlin_android.sh index 3c153efe6..c6a68e9bb 100755 --- a/scripts/uniffi_bindgen_generate_kotlin_android.sh +++ b/scripts/uniffi_bindgen_generate_kotlin_android.sh @@ -74,12 +74,12 @@ rm -f "$KOTLIN_BINDINGS_FILE.bak" # Sync version from Cargo.toml echo "Syncing version from Cargo.toml..." CARGO_VERSION=$(grep '^version = ' Cargo.toml | sed 's/version = "\(.*\)"/\1/' | head -1) -sed -i.bak "s/^libraryVersion=.*/libraryVersion=$CARGO_VERSION/" "$ANDROID_LIB_DIR/gradle.properties" +sed -i.bak "s/^version=.*/version=$CARGO_VERSION/" "$ANDROID_LIB_DIR/gradle.properties" rm -f "$ANDROID_LIB_DIR/gradle.properties.bak" echo "Version synced: $CARGO_VERSION" -# Verify android library publish -echo "Testing android library publish to Maven Local..." -$ANDROID_LIB_DIR/gradlew --project-dir "$ANDROID_LIB_DIR" clean publishToMavenLocal +# Verify android library publish task graph +echo "Verifying android library publish task graph..." +$ANDROID_LIB_DIR/gradlew --project-dir "$ANDROID_LIB_DIR" clean publish --dry-run echo "Android build process completed successfully!" diff --git a/src/peer_store.rs b/src/peer_store.rs index fc0ea090b..13090f955 100644 --- a/src/peer_store.rs +++ b/src/peer_store.rs @@ -205,7 +205,7 @@ mod tests { } #[test] - fn peer_address_updated_on_readd() { + fn peer_address_updated_on_re_add() { let store: Arc = Arc::new(InMemoryStore::new()); let logger = Arc::new(TestLogger::new()); let peer_store = PeerStore::new(Arc::clone(&store), Arc::clone(&logger));