MemoDokümantasyon
TR

Kaynaktan Derleme

Memo'yu depodan derleyin. Bu rehber Go arka uç derlemesini, Flutter ön uç derlemesini, CGO gereksinimlerini ve dağıtım için paketlemeyi kapsar.

Ön Gereksinimler

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

Klonlama

git clone https://github.com/BugraAkdemir/memo.git
cd memo

Arka Uç Derlemesi

CGO Bayrakları

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 Bağımlılıklarını Yükleme

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ü

Derleme

CGO_ENABLED=1 go build -o memo .

Çıktı, arka ucun tamamını içeren tek bir memo ikili dosyasıdır (~40 MB).

Testleri Çalıştırma

go test ./... -race -count=1 -timeout 60s

Ön Uç Derlemesi

cd frontend
flutter pub get
flutter build linux --release

Flutter derlemesi frontend/build/linux/x64/release/bundle/ dizinine çıkar.

Platforma Özel Derlemeler

# 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

Ön Uç Kontrolleri

cd frontend
flutter analyze lib/
flutter test

sqlite-vec Derlemesi

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-vec kütüphanesi, nicemleme kullanarak yaklaşık en yakın komşu (ANN) vektör araması için sanal tablo eklentisi olan vec0'ı hedefler. Ayrı bir ikili dosya olarak paketlenmez; CGO aracılığıyla Go ikili dosyasına gömülür.

Paketleme Betiği

Depo, dağıtılabilir paketler oluşturmak için build_releases.sh betiğini içerir:

./build_releases.sh

Bu betik:

  1. Tüm hedef platformlar için Go arka ucunu derler
  2. Masaüstü platformları için Flutter ön ucunu derler
  3. llama-server ve vec0 motor ikili dosyalarını paketler
  4. Platforma özel kurulum dosyaları oluşturur

Çıktı Formatları

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 Paketleme Detayları

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 Paketleme Detayları

Windows paketlemesi şunları gerektirir:

  • NSIS kurulum çerçevesi
  • CGO çapraz derlemesi için MSYS2/MinGW (Linux'tan derleniyorsa)
  • GTK, SQLite ve OpenGL bağımlılıkları için DLL paketleme
# 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

Dağıtım Kontrol Listesi

Bir sürüm yayınlamadan önce:

  • go test ./... -race tüm hedef platformlarda geçiyor
  • flutter analyze lib/ geçiyor
  • flutter test geçiyor
  • llama-server ve vec0 ikili dosyaları paketlenmiş ve sürüm eşleşmeli
  • Kurulum dosyaları her platform için temiz VM'lerde test edildi
  • Sürüm notları (versionNoteEN.md, versionNoteTR.md) güncellendi
  • GitHub sürümü tüm yapılarla oluşturuldu
  • memo.bugradev.com indirme portalı güncellendi

Sürekli Entegrasyon

GitHub Actions iş akışları (ci.yml) main dalına her gönderimde çalışır:

  • Yarış dedektörlü Go testleri
  • Flutter analiz ve test
  • Çapraz platform derleme matrisi (Linux, Windows, macOS)
  • Doğrulanmış derlemeler için yapı yükleme

CI yapılandırması için depodaki .github/workflows/ dizinine bakın.