
Memo'yu depodan derleyin. Bu rehber Go arka uç derlemesini, Flutter ön uç derlemesini, CGO gereksinimlerini ve dağıtım için paketlemeyi kapsar.
| Araç | Sürüm | Amaç |
|---|---|---|
| Go | 1.26+ | Arka uç derleyicisi |
| Flutter | 3.10+ | Ön uç çerçevesi |
| GCC / Clang | Güncel | CGO derlemesi (sqlite-vec) |
| CMake | 3.20+ | sqlite-vec derlemesi |
| Git | Güncel | Depoyu klonlama |
git clone https://github.com/BugraAkdemir/memo.git
cd memo
SQLite ve sqlite-vec, CGO'nun etkin olmasını gerektirir:
export CGO_ENABLED=1
Çapraz derleme veya özel araç zincirleri için C derleyicisini yapılandırın:
export CC=gcc # Linux
export CC=x86_64-w64-mingw32-gcc # Linux'tan Windows için çapraz derleme
go mod download
Ana bağımlılıklar:
| Paket | Amaç |
|---|---|
modernc.org/sqlite |
Pure-Go SQLite (CGO gerekmediğinde) |
github.com/ncruces/go-sqlite3 |
vec0 eklentili CGO SQLite |
golang.org/x/net |
HTTP, HTML ayrıştırma (web arama aracı) |
google.golang.org/api |
Google Drive OAuth2 |
go.mau.fi/whatsmeow |
WhatsApp Web köprüsü |
CGO_ENABLED=1 go build -o memo .
Çıktı, arka ucun tamamını içeren tek bir memo ikili dosyasıdır (~40 MB).
go test ./... -race -count=1 -timeout 60s
cd frontend
flutter pub get
flutter build linux --release
Flutter derlemesi frontend/build/linux/x64/release/bundle/ dizinine çıkar.
# Windows (Windows'tan veya çapraz derleme)
flutter build windows --release
# macOS
flutter build macos --release
# Android (yardımcı uygulama)
flutter build apk --release
# iOS (macOS gerektirir)
flutter build ios --release
cd frontend
flutter analyze lib/
flutter test
sqlite-vec (vec0) eklentisi, Go derlemesi sırasında C kaynağından derlenir. Derleme hatalarıyla karşılaşırsanız:
# sqlite3 geliştirme başlıklarının mevcut olduğundan emin olun
# Debian/Ubuntu
sudo apt install libsqlite3-dev
# Fedora
sudo dnf install sqlite-devel
# macOS
brew install sqlite
# Temizleyip yeniden derleyin
go clean -cache
CGO_ENABLED=1 go build -o memo .
sqlite-veckütüphanesi, nicemleme kullanarak yaklaşık en yakın komşu (ANN) vektör araması için sanal tablo eklentisi olanvec0'ı hedefler. Ayrı bir ikili dosya olarak paketlenmez; CGO aracılığıyla Go ikili dosyasına gömülür.
Depo, dağıtılabilir paketler oluşturmak için build_releases.sh betiğini içerir:
./build_releases.sh
Bu betik:
llama-server ve vec0 motor ikili dosyalarını paketler| Format | Platform | İçerik |
|---|---|---|
.exe |
Windows | Bağımlılıklarla paketlenmiş NSIS kurulumcusu |
.AppImage |
Linux (evrensel) | Kendi kendine yeten AppImage |
.deb |
Debian/Ubuntu | dpkg paketi |
.tar.gz |
Linux taşınabilir | Bağımsız dizin |
.zip |
macOS | Evrensel .app paketi |
.apk |
Android | Flutter yardımcı uygulaması |
Linux için paketleme betiği şunları kullanır:
# AppImage - AppImage eklentili linuxdeploy kullanır
linuxdeploy --appdir AppDir --plugin gtk --output appimage
# .deb - standart dpkg-deb
dpkg-deb --build memo-deb
# .tar.gz - basit arşiv
tar -czf Memo-linux-x64-v3.3.3.tar.gz memo/
Windows paketlemesi şunları gerektirir:
# MinGW çapraz derleyicisi ile Linux'tan
CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows go build -o memo.exe .
# Flutter
flutter build windows --release
# NSIS ile paketleme
makensis memo-installer.nsi
Bir sürüm yayınlamadan önce:
go test ./... -race tüm hedef platformlarda geçiyorflutter analyze lib/ geçiyorflutter test geçiyorllama-server ve vec0 ikili dosyaları paketlenmiş ve sürüm eşleşmeliversionNoteEN.md, versionNoteTR.md) güncellendimemo.bugradev.com indirme portalı güncellendiGitHub Actions iş akışları (ci.yml) main dalına her gönderimde çalışır:
CI yapılandırması için depodaki .github/workflows/ dizinine bakın.