feat(scripts): GCC_PATH из .gitea-creds для gcc в build-publish-ui.ps1
- проверка gcc перенесена после чтения creds (шаг 1a) - GCC_PATH дописывается в PATH (абсолютный или относительно scripts/); без него — gcc из текущего PATH - комментарии в шапку: GCC_PATH и уточнённый PROJECT_PATH
This commit is contained in:
@@ -9,15 +9,21 @@ CI собирает ТОЛЬКО headless-linux (см. .gitea/workflows/ci.yaml)
|
|||||||
|
|
||||||
Требования:
|
Требования:
|
||||||
- Go с доступным C-компилятором (CGO_ENABLED=1). WinLibs gcc: см. память
|
- Go с доступным C-компилятором (CGO_ENABLED=1). WinLibs gcc: см. память
|
||||||
`mem:toolchain/cgo-winlibs-gcc` — bin нужно добавить в PATH перед запуском.
|
`mem:binator/cgo-winlibs-gcc`. Каталог с gcc.exe можно задать через
|
||||||
|
GCC_PATH (ниже); если не задан — gcc должен быть уже в PATH.
|
||||||
- Файл scripts/.gitea-creds (git-ignored, см. ниже) с токенами.
|
- Файл scripts/.gitea-creds (git-ignored, см. ниже) с токенами.
|
||||||
Формат (по одной `ключ=значение` на строку):
|
Формат (по одной `ключ=значение` на строку):
|
||||||
GITEA_TOKEN=write:packages-токен
|
GITEA_TOKEN=write:packages-токен
|
||||||
UPDATE_TOKEN=read:package-токен
|
UPDATE_TOKEN=read:package-токен
|
||||||
GIT_MAIN_URL=http://gitea.hal9000.home
|
GIT_MAIN_URL=http://gitea.hal9000.home
|
||||||
PROJECT_PATH=..\..\foo (опционально) корень собираемого проекта
|
PROJECT_PATH=..\..\foo (опционально) корень проекта (где лежат cmd/
|
||||||
относительно папки scripts/; без него —
|
и go.mod); относительно папки scripts/ или
|
||||||
папка рядом со скриптом
|
абсолютный; без него — папка рядом с
|
||||||
|
скриптом
|
||||||
|
GCC_PATH=D:\MinGW\bin (опционально) каталог, где лежит gcc.exe;
|
||||||
|
дописывается в PATH перед проверкой и
|
||||||
|
сборкой; абсолютный или относительно
|
||||||
|
scripts/; без него — gcc из текущего PATH
|
||||||
- Ветка уже запушена в `main` (VERSION = commit-<sha7> от текущего HEAD).
|
- Ветка уже запушена в `main` (VERSION = commit-<sha7> от текущего HEAD).
|
||||||
|
|
||||||
Пример:
|
Пример:
|
||||||
@@ -32,14 +38,8 @@ $Package = "ratatoskr"
|
|||||||
$Owner = "kamelion"
|
$Owner = "kamelion"
|
||||||
$Filename = "ratatoskr-windows-amd64.exe"
|
$Filename = "ratatoskr-windows-amd64.exe"
|
||||||
|
|
||||||
# --- 0. Проверка C-тулчейна ---
|
# --- 0. Проверка флага CGO_ENABLED (не зависит от creds) ---
|
||||||
if ($env:CGO_ENABLED -eq "0") { Write-Error "CGO_ENABLED=0 — нужен C-компилятор (MinGW). Уберите его из env." }
|
if ($env:CGO_ENABLED -eq "0") { Write-Error "CGO_ENABLED=0 — нужен C-компилятор (MinGW). Уберите его из env." }
|
||||||
if (-not (Get-Command gcc -ErrorAction SilentlyContinue)) {
|
|
||||||
Write-Host "gcc не найден в PATH. Пример (WinLibs):"
|
|
||||||
Write-Host ' $p = "<...>\mingw64\bin"; $env:Path = "$p;$env:Path"'
|
|
||||||
Write-Error "C-компилятор gcc не найден."
|
|
||||||
}
|
|
||||||
Write-Host "[ok] gcc: $((gcc --version | Select-Object -First 1))"
|
|
||||||
|
|
||||||
# --- 1. Чтение секретов ---
|
# --- 1. Чтение секретов ---
|
||||||
if (-not (Test-Path $CredsFile)) {
|
if (-not (Test-Path $CredsFile)) {
|
||||||
@@ -59,7 +59,30 @@ $giteaUrl = $creds["GIT_MAIN_URL"]
|
|||||||
if (-not $giteaToken) { Write-Error "В $CredsFile нет GITEA_TOKEN (нужен write:packages)." }
|
if (-not $giteaToken) { Write-Error "В $CredsFile нет GITEA_TOKEN (нужен write:packages)." }
|
||||||
if (-not $giteaUrl) { Write-Error "В $CredsFile нет GIT_MAIN_URL." }
|
if (-not $giteaUrl) { Write-Error "В $CredsFile нет GIT_MAIN_URL." }
|
||||||
|
|
||||||
# --- 1a. Корень целевого проекта ---
|
# --- 1a. C-тулчейн (gcc): GCC_PATH из creds дописывается в PATH ---
|
||||||
|
# Путь абсолютный либо относительно папки scripts/; без GCC_PATH — gcc
|
||||||
|
# берётся из уже установленного PATH.
|
||||||
|
$gccPath = $creds["GCC_PATH"]
|
||||||
|
if ($gccPath -ne "" -and $gccPath) {
|
||||||
|
$gccAbs = Join-Path $ScriptDir $gccPath
|
||||||
|
$gccBin = (Resolve-Path -LiteralPath $gccAbs -ErrorAction SilentlyContinue).Path
|
||||||
|
if (-not $gccBin) {
|
||||||
|
$gccAbs = $gccPath # не нашлось относительно scripts/ — пробуем как абсолютный
|
||||||
|
$gccBin = (Resolve-Path -LiteralPath $gccAbs -ErrorAction SilentlyContinue).Path
|
||||||
|
}
|
||||||
|
if (-not $gccBin) { Write-Error "GCC_PATH не найден: $gccPath (или относительно $ScriptDir)" }
|
||||||
|
$env:Path = "$gccBin;$env:Path"
|
||||||
|
Write-Host "[gcc] PATH += $gccBin"
|
||||||
|
}
|
||||||
|
if (-not (Get-Command gcc -ErrorAction SilentlyContinue)) {
|
||||||
|
Write-Host "gcc не найден в PATH. Пример (WinLibs):"
|
||||||
|
Write-Host ' D:\MinGW\bin, затем:
|
||||||
|
GCC_PATH=D:\MinGW\bin — в scripts/.gitea-creds'
|
||||||
|
Write-Error "C-компилятор gcc не найден."
|
||||||
|
}
|
||||||
|
Write-Host "[ok] gcc: $((gcc --version | Select-Object -First 1))"
|
||||||
|
|
||||||
|
# --- 1b. Корень целевого проекта ---
|
||||||
# PROJECT_PATH из .gitea-creds (относительно папки scripts/) либо, если не задан,
|
# PROJECT_PATH из .gitea-creds (относительно папки scripts/) либо, если не задан,
|
||||||
# папка рядом со скриптом (прежнее поведение).
|
# папка рядом со скриптом (прежнее поведение).
|
||||||
$projPath = $creds["PROJECT_PATH"]
|
$projPath = $creds["PROJECT_PATH"]
|
||||||
|
|||||||
Reference in New Issue
Block a user