CI (.gitea/workflows/ci.yaml): - go 1.23 -> 1.25 (modernc.org/sqlite v1.56.0 требует go 1.25; старый CI падал на сборке ещё до тестов). - CGO_ENABLED=0 на уровне workflow: CI собирает/тестирует только headless (ui_noui), не тянет Fyne/glfw и C-компилятор. - timeout 120s -> 300s (worker один ~30-60s на быстрой машине). - build-and-package: только linux/amd64 (headless). Windows-бинарь с UI — локально. Локальная сборка UI + публикация: - scripts/build-publish-ui.ps1: собирает ratatoskr-windows-amd64.exe (CGO_ENABLED=1, WinLibs gcc), вшивает commit-<sha7> + updateToken, пишет .version/.sha256 и публикует в Gitea Packages в ту же версию, что и CI; самопроверка (U4). - scripts/.gitea-creds.example + .gitignore (scripts/.gitea-creds) — секреты не попадают в репозиторий. README: CI=headless + публикация Windows-UI локальным скриптом; обновлён intro (бинарь по умолчанию headless, окно — опционально с cgo).
23 lines
1.5 KiB
Markdown
23 lines
1.5 KiB
Markdown
# C-тулчейн для cgo-сборки (Fyne/GLFW) на этой машине
|
||
|
||
WinLibs (BrechtSanders.WinLibs.POSIX.UCRT) установлен через winget как
|
||
portable (zip) в:
|
||
`C:\Users\darkg\AppData\Local\Microsoft\WinGet\Packages\BrechtSanders.WinLibs.POSIX.UCRT_Microsoft.Winget.Source_8wekyb3d8bbwe\mingw64\bin`
|
||
|
||
- gcc 16.1.0, target `x86_64-w64-mingw32`, рантайм `x86_64-ucrt-posix-seh`.
|
||
- Установлен портативно — НЕ регистрируется в PATH автоматически.
|
||
- PATH добавлен в `HKCU\Environment` (WinLibs bin первым), но в новых
|
||
PowerShell-процессах opencode окружение НЕ перечитывается, поэтому в каждой
|
||
команде, где нужен cgo, добавлять вручную:
|
||
$p = "...\mingw64\bin"; $env:Path = "$p;$env:Path"; $env:CGO_ENABLED = "1"
|
||
|
||
Важно: на машине есть clang-msvc/i686 (D:\Program Files\LLVM, D:\Program
|
||
Files (x86)\LLVM) — он НЕ подходит для cgo (msvc-таргет + 32bit). Поэтому
|
||
gcc должен идти первым в PATH.
|
||
|
||
Для сборки окна: `CGO_ENABLED=1 go build ./...` (компилирует ui_cgo.go и
|
||
internal/ui/desktop). Без cgo окно не собирается — приложение headless
|
||
(ui_noui.go), флаг `--noui` в cmd/ratatoskr/main.go.
|
||
|
||
Для запуска GUI нужен реальный TG-конфиг (telegram.token/chat_id), иначе app
|
||
падает на init. |