ci: 03-gftest и 04-cross-build на runs-on: armhf (cross-builder)
- 03-gftest: runs-on host → armhf; текст ошибки инструментов обобщён (build-essential вместо apk build-base) - 04-cross-build: runs-on host → armhf; приёмка тулчейна остаётся реальной ARM-компиляцией + разбором e_machine 01-smoke/02-guardrails остаются на host (Alpine act_runner_tools) — не тронуты.
This commit is contained in:
@@ -2,10 +2,11 @@
|
||||
# Нативная (не кросс-) сборка group_fec.c с -DGF_SELFTEST через хостовый cc
|
||||
# (makefile: цель gftest) и прогон самопроверки GF(256): 774 400 кейсов
|
||||
# восстановления группового FEC 16+2. Модуль тянет только <string.h>/
|
||||
# <stdint.h>/<stdio.h>/<stdlib.h> — компилируется и на musl.
|
||||
# <stdint.h>/<stdio.h>/<stdlib.h> — компилируется любым gcc.
|
||||
#
|
||||
# Требует в образе runner: build-base (cc) + make. Пока их нет — job падает
|
||||
# на шаге "Проверить инструменты" с понятным сообщением, а не посреди сборки.
|
||||
# Идёт на runs-on: armhf — cross-builder несёт нативный x86 gcc (build-essential).
|
||||
# Требует в образе: cc + make. Пока их нет — job падает на шаге "Проверить
|
||||
# инструменты" с понятным сообщением, а не посреди сборки.
|
||||
|
||||
name: 03-gftest
|
||||
|
||||
@@ -23,18 +24,18 @@ defaults:
|
||||
|
||||
jobs:
|
||||
gftest:
|
||||
runs-on: host
|
||||
runs-on: armhf
|
||||
timeout-minutes: 5
|
||||
|
||||
steps:
|
||||
- name: Проверить инструменты (реальная компиляция, не command -v)
|
||||
# На Alpine/musl наличие файла ничего не доказывает (см. RUNNER-IMAGE.md
|
||||
# про glibc-бинари без ld-linux) — поэтому здесь компилируем и запускаем
|
||||
# крошечный .c, а не просто ищем cc/make на PATH.
|
||||
# Наличие файла ничего не доказывает (glibc-бинарь без ld-linux даёт
|
||||
# обманчивый not found) — поэтому компилируем и запускаем крошечный .c,
|
||||
# а не просто ищем cc/make на PATH.
|
||||
run: |
|
||||
for t in cc make; do
|
||||
command -v "$t" >/dev/null 2>&1 || {
|
||||
echo "ОШИБКА: '$t' нет в образе runner — apk add build-base make в runner-image/Dockerfile"
|
||||
echo "ОШИБКА: '$t' нет в образе cross-раннера — build-essential в runner-image/Dockerfile"
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
# 04-cross-build — проверочный workflow. Приёмочный тест ARM-тулчейна в
|
||||
# образе runner: пока он не заведён — job закономерно красный, и это его
|
||||
# основная роль (по аналогии с их 04-toolchain).
|
||||
# образе cross-раннера (по аналогии с их 04-toolchain).
|
||||
#
|
||||
# arm-linux-gnueabihf-gcc и статические либы $XARM собраны под glibc
|
||||
# (build_deps.sh гоняется на Debian), а базовый образ act_runner — Alpine/
|
||||
# musl. glibc-хостовый cross-gcc на musl не запустится вовсе, либо запустится,
|
||||
# но даст бинарь, слинкованный не тем, чем ожидается — поэтому "файл лежит"
|
||||
# и "command -v нашёл" ничего не доказывают (см. RUNNER-IMAGE.md про
|
||||
# обманчивый "not found" без ld-linux). Доказательство здесь только одно:
|
||||
# реальная кросс-компиляция крошечной программы + проверка машинного типа
|
||||
# результата по ELF-заголовку (e_machine == EM_ARM), а затем настоящая
|
||||
# сборка tx/rx/bench штатным make all.
|
||||
# Идёт на runs-on: armhf — отдельный НАТИВНЫЙ x86-64 Debian-runner с
|
||||
# arm-linux-gnueabihf-gcc (x86-бинарь, выдающий ARM-код; НЕ эмуляция) и
|
||||
# прекомпилированными статическими либами $XARM. "Файл лежит" и "command -v
|
||||
# нашёл" ничего не доказывают (glibc-бинарь без ld-linux даёт обманчивый
|
||||
# not found) — поэтому доказательство здесь одно: реальная кросс-компиляция
|
||||
# крошечной программы + проверка машинного типа результата по ELF-заголовку
|
||||
# (e_machine == EM_ARM), а затем настоящая сборка tx/rx/bench штатным make all.
|
||||
|
||||
name: 04-cross-build
|
||||
|
||||
@@ -28,16 +25,15 @@ defaults:
|
||||
|
||||
jobs:
|
||||
cross-build:
|
||||
runs-on: host
|
||||
runs-on: armhf
|
||||
timeout-minutes: 15
|
||||
|
||||
steps:
|
||||
- name: Проверить кросс-тулчейн (реальная ARM-компиляция, не command -v)
|
||||
run: |
|
||||
if ! command -v arm-linux-gnueabihf-gcc >/dev/null 2>&1; then
|
||||
echo "ОШИБКА: arm-linux-gnueabihf-gcc нет в образе runner."
|
||||
echo "Нужен отдельный flavor образа (Debian-база с gcc-arm-linux-gnueabihf"
|
||||
echo "или Alpine + релокейтный prebuilt-тулчейн) — см. план в docs/."
|
||||
echo "ОШИБКА: arm-linux-gnueabihf-gcc нет в образе cross-раннера (метка armhf)."
|
||||
echo "Проверь runner-image/Dockerfile: пакет gcc-arm-linux-gnueabihf."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user