Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions .github/actions/android/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ inputs:
runs:
using: "composite"
steps:
- uses: actions/setup-java@v4
- uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: "17"
java-version: "25"

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v4
Expand All @@ -39,7 +39,7 @@ runs:
if: ${{ inputs.sign-publication == '1' }}
run: |
cd android
./gradlew build zipPublication -PgpgKey=${{ inputs.gpg-key }} -PgpgPassword=${{ inputs.gpg-password }}
./gradlew build zipPublication -PgpgKey=${{ inputs.gpg-key }} -PgpgPassword=${{ inputs.gpg-password }}
ls -lh build/outputs/aar
find build/repository

Expand All @@ -60,3 +60,19 @@ runs:
compression-level: 0 # We're uploading a zip, no need to compress again
path: android/build/distributions/powersync_android.zip
if-no-files-found: error

- name: Copy static libraries
shell: bash
run: |
cp target/aarch64-linux-android/release/libpowersync.a libpowersync_aarch64.android.a
cp target/armv7-linux-androideabi/release/libpowersync.a libpowersync_armv7.android.a
cp target/i686-linux-android/release/libpowersync.a libpowersync_x86.android.a
cp target/x86_64-linux-android/release/libpowersync.a libpowersync_x64.android.a

- name: Upload static libraries
uses: actions/upload-artifact@v4
with:
name: android-static
retention-days: 14
path: |
*.a
7 changes: 2 additions & 5 deletions .github/actions/linux/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,5 @@ runs:
name: linux-library
retention-days: 14
path: |
libpowersync_x64.so
libpowersync_x86.so
libpowersync_aarch64.so
libpowersync_armv7.so
libpowersync_riscv64gc.so
*.so
*.linux.a
4 changes: 2 additions & 2 deletions .github/actions/macos/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ runs:
name: macos-library
retention-days: 14
path: |
libpowersync_x64.dylib
libpowersync_aarch64.dylib
*.dylib
*.macos.a
5 changes: 2 additions & 3 deletions .github/actions/windows/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,5 @@ runs:
name: windows-library
retention-days: 14
path: |
powersync_x64.dll
powersync_aarch64.dll
powersync_x86.dll
*.dll
*.lib
16 changes: 13 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,18 +179,26 @@ jobs:
with:
submodules: true

- name: Download libs
- name: Download Linux libraries
uses: actions/download-artifact@v5
with:
name: linux-library
- name: Download libs
- name: Download macOS libraries
uses: actions/download-artifact@v5
with:
name: macos-library
- name: Download libs
- name: Download Windows libraries
uses: actions/download-artifact@v5
with:
name: windows-library
- name: Download Windows libraries
uses: actions/download-artifact@v5
with:
name: windows-library
- name: Download static Android libraries
uses: actions/download-artifact@v5
with:
name: android-static

- name: List libraries
run: ls -al
Expand All @@ -201,8 +209,10 @@ jobs:
GH_REPO: ${{ github.repository }}
run: |
gh release upload "${{ needs.draft_release.outputs.tag }}" *.dll
gh release upload "${{ needs.draft_release.outputs.tag }}" *.lib
gh release upload "${{ needs.draft_release.outputs.tag }}" *.dylib
gh release upload "${{ needs.draft_release.outputs.tag }}" *.so
gh release upload "${{ needs.draft_release.outputs.tag }}" *.a

publish_wasm:
name: Publish WASM builds
Expand Down
61 changes: 39 additions & 22 deletions android/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import org.gradle.tooling.BuildException
import java.util.Base64
import java.util.Properties
import kotlin.io.path.Path
Expand Down Expand Up @@ -54,30 +53,48 @@ fun ndkPath(): String {
error("Expected an NDK 28 or later installation in $ndks")
}

val buildRust = tasks.register<Exec>("buildRust") {
fun Exec.rustCompilation(project: String, output: String? = null) {
group = "build"
environment("ANDROID_NDK_HOME", ndkPath())

workingDir("..")
commandLine(
"cargo",
"ndk",
"-t",
"armeabi-v7a",
"-t",
"arm64-v8a",
"-t",
"x86",
"-t",
"x86_64",
"-o",
"./android/build/intermediates/jniLibs",
"build",
"--release",
"-Zbuild-std",
"-p",
"powersync_loadable"
)
val args = buildList<String> {
this += listOf(
"cargo",
"ndk",
"-t",
"armeabi-v7a",
"-t",
"arm64-v8a",
"-t",
"x86",
"-t",
"x86_64",
)

output?.let {
this += "-o"
this += it
}

this += listOf(
"build",
"--release",
"-Zbuild-std",
"-p",
project,
)
}

commandLine(args)
}

val buildRust = tasks.register<Exec>("buildRust") {
rustCompilation("powersync_loadable", "./android/build/intermediates/jniLibs")
}

val buildRustStatic = tasks.register<Exec>("buildRustStatic") {
rustCompilation("powersync_static")
}

val prefabAar = tasks.register<Zip>("prefabAar") {
Expand Down Expand Up @@ -199,5 +216,5 @@ val zipPublication by tasks.registering(Zip::class) {
}

tasks.named("build") {
dependsOn(prefabAar)
dependsOn(prefabAar, buildRustStatic)
}
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
28 changes: 17 additions & 11 deletions tool/build_linux.sh
Original file line number Diff line number Diff line change
@@ -1,26 +1,32 @@
#!/bin/sh
#!/bin/bash
set -e

function compile() {
local triple=$1
local suffix=$2

cargo build -p powersync_loadable -Z build-std=panic_abort,core,alloc --release --target $triple
cargo build -p powersync_static -Z build-std=panic_abort,core,alloc --release --target $triple

mv "target/$triple/release/libpowersync.so" "libpowersync_$suffix.so"
mv "target/$triple/release/libpowersync.a" "libpowersync_$suffix.linux.a"
}

case "$1" in
x64)
cargo build -p powersync_loadable -Z build-std=panic_abort,core,alloc --release --target x86_64-unknown-linux-gnu
mv "target/x86_64-unknown-linux-gnu/release/libpowersync.so" "libpowersync_x64.so"
compile x86_64-unknown-linux-gnu x64
;;
x86)
cargo build -p powersync_loadable -Z build-std=panic_abort,core,alloc --release --target i686-unknown-linux-gnu
mv "target/i686-unknown-linux-gnu/release/libpowersync.so" "libpowersync_x86.so"
compile i686-unknown-linux-gnu x86
;;
aarch64)
cargo build -p powersync_loadable -Z build-std=panic_abort,core,alloc --release --target aarch64-unknown-linux-gnu
mv "target/aarch64-unknown-linux-gnu/release/libpowersync.so" "libpowersync_aarch64.so"
compile aarch64-unknown-linux-gnu aarch64
;;
armv7)
cargo build -p powersync_loadable -Z build-std=panic_abort,core,alloc --release --target armv7-unknown-linux-gnueabihf
mv "target/armv7-unknown-linux-gnueabihf/release/libpowersync.so" "libpowersync_armv7.so"
compile armv7-unknown-linux-gnueabihf armv7
;;
riscv64gc)
cargo build -p powersync_loadable -Z build-std=panic_abort,core,alloc --release --target riscv64gc-unknown-linux-gnu
mv "target/riscv64gc-unknown-linux-gnu/release/libpowersync.so" "libpowersync_riscv64gc.so"
compile riscv64gc-unknown-linux-gnu riscv64gc
;;
*)
echo "Unknown architecture"
Expand Down
17 changes: 13 additions & 4 deletions tool/build_macos.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
#!/bin/sh
set -e

function compile() {
local triple=$1
local suffix=$2

cargo build -p powersync_loadable -Z build-std=panic_abort,core,alloc --release --target $triple
cargo build -p powersync_static -Z build-std=panic_abort,core,alloc --release --target $triple

mv "target/$triple/release/libpowersync.dylib" "libpowersync_$suffix.dylib"
mv "target/$triple/release/libpowersync.a" "libpowersync_$suffix.macos.a"
}

if [ "$1" = "x64" ]; then
cargo build -Z build-std=panic_abort,core,alloc -p powersync_loadable --release --target x86_64-apple-darwin
mv "target/x86_64-apple-darwin/release/libpowersync.dylib" "libpowersync_x64.dylib"
compile x86_64-apple-darwin x64
else
cargo build -Z build-std=panic_abort,core,alloc -p powersync_loadable --release --target aarch64-apple-darwin
mv "target/aarch64-apple-darwin/release/libpowersync.dylib" "libpowersync_aarch64.dylib"
compile aarch64-apple-darwin aarch64
fi
20 changes: 14 additions & 6 deletions tool/build_windows.sh
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
#!/bin/sh
set -e

function compile() {
local triple=$1
local suffix=$2

cargo build -p powersync_loadable -Z build-std=panic_abort,core,alloc --release --target $triple
cargo build -p powersync_static -Z build-std=panic_abort,core,alloc --release --target $triple

mv "target/$triple/release/powersync.dll" "powersync_$suffix.dll"
mv "target/$triple/release/powersync.lib" "powersync_$suffix.lib"
}

case "$1" in
x64)
cargo build -Z build-std=panic_abort,core,alloc -p powersync_loadable --release --target x86_64-pc-windows-msvc
mv "target/x86_64-pc-windows-msvc/release/powersync.dll" "powersync_x64.dll"
compile x86_64-pc-windows-msvc x64
;;
x86)
cargo build -Z build-std=panic_abort,core,alloc -p powersync_loadable --release --target i686-pc-windows-msvc
mv "target/i686-pc-windows-msvc/release/powersync.dll" "powersync_x86.dll"
compile i686-pc-windows-msvc x86
;;
aarch64)
cargo build -Z build-std=panic_abort,core,alloc -p powersync_loadable --release --target aarch64-pc-windows-msvc
mv "target/aarch64-pc-windows-msvc/release/powersync.dll" "powersync_aarch64.dll"
compile aarch64-pc-windows-msvc aarch64
;;
*)
echo "Unknown architecture"
Expand Down