Skip to content

Commit ae9e9c1

Browse files
authored
add platforms automatic build and test (#2)
* feat: add platform builds and packages * feat: update Makefile for relative build paths and add adam.swift * feat: enhance Makefile for platform-specific Objective-C compilation and testing * feat: add additional compiler flags for sqlite-memory module * fix: update Android ARCH error messages to remove armeabi-v7a option * feat: update Makefile for Android to use C++ driver and static libc++ linking * feat: update Makefile for SQLite extension to use C++ driver and add feature-test macros * feat: update CFLAGS in Makefiles to use gnu11 standard for compatibility * feat: implement portable strndup function for compatibility across platforms * feat: add portable memmem implementation for MinGW compatibility * feat: update Vulkan installation process and improve Makefile for static library prefix * feat: enhance Vulkan installation in CI and improve Makefile for dynamic library handling * feat: update Vulkan installation in CI and enhance Makefile for static library linking * feat: update Makefile for platform-specific linking and library order * feat: enhance Makefile to support GPU backends with Vulkan and OpenCL libraries * feat: update Makefile to use correct Vulkan library flag for Windows platform * feat: add zlib-dev dependency for linux-musl and docker builds * feat: update Makefile to correctly link -lz for Linux and Android platforms * feat: add git dependency to Alpine Docker setup in CI workflow * feat: configure git safe.directory in Alpine Docker setup for proper permissions * feat: update linux-musl arm64 test command to skip unit tests in Alpine Docker * feat: update Vulkan installation steps in CI workflow for compatibility * feat: update installation command for Vulkan to use glslc package * feat: update CI build configuration to disable sanitizers and refine unit test handling * feat: refine build job naming and update macOS test conditions for better clarity * feat: add macOS x86_64 build step for sqlite3 shell to support architecture compatibility * feat: replace mkdir with platform-specific adam_mkdir for cross-platform compatibility * feat: enhance LLAMA_LIBS to support MinGW Ninja by resolving ggml library variants * feat: enhance Makefile for platform-specific library linking and support for Vulkan/OpenCL * feat: improve Windows compatibility by adding _access check and ensuring /tmp directory exists for tests * feat: create necessary POSIX-style directories for MinGW compatibility in tests * feat: ensure existence of POSIX-style directories before running tests on all platforms * feat: remount Android filesystem as read-write and create /tmp and /var for POSIX compatibility * fix: update file paths for Android compatibility in tests and define platform-specific temporary directories * fix: update shell command for Android compatibility and ensure existence of TEST_VAR directory in tests * feat: add size-reduction and dead-code elimination flags for SQLite extension and main build * fix: clean code and optimize extension flags * fix: move platform-specific shared-extension filename logic in Makefile * fix: update Package.swift checksum handling and add artifact existence check
1 parent 34cee28 commit ae9e9c1

29 files changed

Lines changed: 2423 additions & 121 deletions
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
name: publish flutter package
2+
on:
3+
push:
4+
tags:
5+
- '*.*.*'
6+
7+
permissions:
8+
contents: read
9+
id-token: write
10+
11+
jobs:
12+
publish:
13+
runs-on: ubuntu-22.04
14+
name: publish to pub.dev
15+
16+
steps:
17+
18+
- uses: actions/checkout@v4.2.2
19+
20+
- name: download release assets
21+
run: |
22+
VERSION=${GITHUB_REF#refs/tags/}
23+
echo "VERSION=$VERSION" >> $GITHUB_ENV
24+
25+
mkdir -p artifacts
26+
cd artifacts
27+
28+
# Download all platform binaries from the GitHub release
29+
gh release download "$VERSION" --pattern "adam-*.tar.gz"
30+
31+
# Extract all archives
32+
for archive in adam-*.tar.gz; do
33+
name=$(basename "$archive" "-$VERSION.tar.gz")
34+
mkdir -p "$name"
35+
tar -xzf "$archive" -C "$name"
36+
rm "$archive"
37+
done
38+
39+
ls -la
40+
env:
41+
GH_TOKEN: ${{ github.token }}
42+
43+
- uses: dart-lang/setup-dart@v1.7.1
44+
45+
- name: assemble and publish flutter package
46+
run: |
47+
FLUTTER_DIR=packages/flutter
48+
49+
# Android (only arm64 and x64, no arm)
50+
mkdir -p $FLUTTER_DIR/native_libraries/android
51+
cp artifacts/adam-android-arm64-v8a/adam.so $FLUTTER_DIR/native_libraries/android/adam_android_arm64.so
52+
cp artifacts/adam-android-x86_64/adam.so $FLUTTER_DIR/native_libraries/android/adam_android_x64.so
53+
54+
# iOS device
55+
mkdir -p $FLUTTER_DIR/native_libraries/ios
56+
cp artifacts/adam-ios/adam.dylib $FLUTTER_DIR/native_libraries/ios/adam_ios_arm64.dylib
57+
58+
# iOS simulator (keep universal/fat binary as-is)
59+
mkdir -p $FLUTTER_DIR/native_libraries/ios-sim
60+
cp artifacts/adam-ios-sim/adam.dylib $FLUTTER_DIR/native_libraries/ios-sim/adam_ios-sim.dylib
61+
62+
# macOS (separate arch-specific dylibs)
63+
mkdir -p $FLUTTER_DIR/native_libraries/mac
64+
cp artifacts/adam-macos-arm64/adam.dylib $FLUTTER_DIR/native_libraries/mac/adam_mac_arm64.dylib
65+
cp artifacts/adam-macos-x86_64/adam.dylib $FLUTTER_DIR/native_libraries/mac/adam_mac_x64.dylib
66+
67+
# Linux
68+
mkdir -p $FLUTTER_DIR/native_libraries/linux
69+
cp artifacts/adam-linux-cpu-x86_64/adam.so $FLUTTER_DIR/native_libraries/linux/adam_linux_x64.so
70+
cp artifacts/adam-linux-cpu-arm64/adam.so $FLUTTER_DIR/native_libraries/linux/adam_linux_arm64.so
71+
72+
# Windows
73+
mkdir -p $FLUTTER_DIR/native_libraries/windows
74+
cp artifacts/adam-windows-cpu-x86_64/adam.dll $FLUTTER_DIR/native_libraries/windows/adam_windows_x64.dll
75+
76+
# Update version
77+
sed -i "s/^version: .*/version: $VERSION/" $FLUTTER_DIR/pubspec.yaml
78+
79+
# Publish to pub.dev
80+
cd $FLUTTER_DIR
81+
dart pub get
82+
dart pub publish --force

0 commit comments

Comments
 (0)