From 2bc5667061f31ecbea02e9110d570118dcd4995d Mon Sep 17 00:00:00 2001 From: rtcall Date: Mon, 24 Mar 2025 09:19:21 +0100 Subject: [PATCH 1/2] add nativeLibJar task and publication --- .../core/build.gradle.kts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/crates/core/liveview-native-core-jetpack/core/build.gradle.kts b/crates/core/liveview-native-core-jetpack/core/build.gradle.kts index 2bd57127..474e73fb 100644 --- a/crates/core/liveview-native-core-jetpack/core/build.gradle.kts +++ b/crates/core/liveview-native-core-jetpack/core/build.gradle.kts @@ -167,6 +167,14 @@ tasks.whenObjectAdded { } } +tasks.register("nativeLibJar") { + archiveBaseName.set("liveview-native-core-host") + destinationDirectory.set(layout.buildDirectory.dir("libs")) + + from(fileTree("build/rustJniLibs/desktop/darwin-aarch64").include("*.dylib")) + from(fileTree("build/rustJniLibs/desktop/linux-x86-64").include("*.so")) +} + publishing { publications { register("release") { @@ -177,6 +185,15 @@ publishing { afterEvaluate { from(components["release"]) } } } + publications { + register("nativeLib") { + groupId = "org.phoenixframework" + artifactId = "liveview-native-core-host" + version = lvn_version + + artifact(tasks.named("nativeLibJar")) + } + } /* publications { register("releaseDesktop") { From c3ba1978bacd34b093e4fbad3658ae8edfd1a3cd Mon Sep 17 00:00:00 2001 From: rtcall Date: Sun, 30 Mar 2025 20:18:37 +0200 Subject: [PATCH 2/2] add release ci --- .github/workflows/release.yml | 64 +++++++++++++++++++ .../core/build.gradle.kts | 35 ++++++---- 2 files changed, 87 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be6f324f..78997348 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -96,6 +96,66 @@ jobs: name: liveview_native_core.xcframework.zip path: ./target/uniffi/swift/liveview_native_core.xcframework.zip + build-macos-jar: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Rust Nightly + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.TOOLCHAIN }} + targets: aarch64-apple-darwin + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + architecture: 'x64' + + - uses: gradle/actions/setup-gradle@v4 + + - name: Build macOS libraries + working-directory: ./crates/core/liveview-native-core-jetpack + run: ./gradlew nativeLibJar + + - uses: actions/upload-artifact@v4 + with: + retention-days: 5 + name: macos-libs + path: ./crates/core/liveview-native-core-jetpack/core/build/libs/*.jar + + build-linux-jar: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Rust Nightly + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.TOOLCHAIN }} + targets: x86_64-unknown-linux-gnu + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + architecture: 'x64' + + - uses: gradle/actions/setup-gradle@v4 + + - name: Build Linux libraries + working-directory: ./crates/core/liveview-native-core-jetpack + run: ./gradlew nativeLibJar + + - uses: actions/upload-artifact@v4 + with: + retention-days: 5 + name: linux-libs + path: ./crates/core/liveview-native-core-jetpack/core/build/libs/*.jar + release-documentation: runs-on: macos-15 continue-on-error: true @@ -153,6 +213,8 @@ jobs: needs: - build-xcframework - build-wasm + - build-macos-jar + - build-linux-jar steps: - uses: actions/checkout@v4 - name: Install Rust Nightly @@ -213,6 +275,8 @@ jobs: ./target/uniffi/swift/liveview_native_core.xcframework.zip ./crates/wasm/liveview-native-core-wasm-web.tgz ./crates/wasm/liveview-native-core-wasm-nodejs.tgz + ./crates/core/liveview-native-core-jetpack/core/build/libs/liveview-native-core-darwin-aarch64.jar + ./crates/core/liveview-native-core-jetpack/core/build/libs/liveview-native-core-linux-x86-64.jar draft: false prerelease: true tag_name: ${{ github.event.release.tag_name }} diff --git a/crates/core/liveview-native-core-jetpack/core/build.gradle.kts b/crates/core/liveview-native-core-jetpack/core/build.gradle.kts index 474e73fb..a8ae6d8c 100644 --- a/crates/core/liveview-native-core-jetpack/core/build.gradle.kts +++ b/crates/core/liveview-native-core-jetpack/core/build.gradle.kts @@ -168,11 +168,31 @@ tasks.whenObjectAdded { } tasks.register("nativeLibJar") { - archiveBaseName.set("liveview-native-core-host") + val osName = System.getProperty("os.name") + val osArch = System.getProperty("os.arch") + + val targetOs = when { + osName == "Mac OS X" -> "darwin" + osName.startsWith("Win") -> "windows" + osName.startsWith("Linux") -> "linux" + else -> error("unsupported os: $osName") + } + + val targetArch = when (osArch) { + "x86_64", "amd64" -> "x86-64" + "aarch64" -> "aarch64" + else -> error("unsupported architecture: $osArch") + } + + val ext = when (targetOs) { + "darwin" -> "*.dylib" + else -> "*.so" + } + + archiveBaseName.set("liveview-native-core-$targetOs-$targetArch") destinationDirectory.set(layout.buildDirectory.dir("libs")) - from(fileTree("build/rustJniLibs/desktop/darwin-aarch64").include("*.dylib")) - from(fileTree("build/rustJniLibs/desktop/linux-x86-64").include("*.so")) + from(fileTree("build/rustJniLibs/desktop/$targetOs-$targetArch").include(ext)) } publishing { @@ -185,15 +205,6 @@ publishing { afterEvaluate { from(components["release"]) } } } - publications { - register("nativeLib") { - groupId = "org.phoenixframework" - artifactId = "liveview-native-core-host" - version = lvn_version - - artifact(tasks.named("nativeLibJar")) - } - } /* publications { register("releaseDesktop") {