# 03-gftest — проверочный workflow. # Нативная (не кросс-) сборка group_fec.c с -DGF_SELFTEST через хостовый cc # (makefile: цель gftest) и прогон самопроверки GF(256): 774 400 кейсов # восстановления группового FEC 16+2. Модуль тянет только / # // — компилируется любым gcc. # # Идёт на runs-on: armhf — cross-builder несёт нативный x86 gcc (build-essential). # Требует в образе: cc + make. Пока их нет — job падает на шаге "Проверить # инструменты" с понятным сообщением, а не посреди сборки. name: 03-gftest on: push: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true defaults: run: shell: bash jobs: gftest: runs-on: armhf timeout-minutes: 5 steps: - name: Проверить инструменты (реальная компиляция, не command -v) # Наличие файла ничего не доказывает (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' нет в образе cross-раннера — build-essential в runner-image/Dockerfile" exit 1 } done tmp=$(mktemp -d) printf 'int main(void){return 42-42;}\n' > "$tmp/probe.c" cc -O2 "$tmp/probe.c" -o "$tmp/probe" "$tmp/probe" echo "OK: cc реально компилирует и линкует исполняемый файл" rm -rf "$tmp" - name: Получить код репозитория env: REPO_TOKEN: ${{ github.token }} run: | rm -rf repo git clone --quiet "http://x-access-token:${REPO_TOKEN}@localhost:3000/${GITHUB_REPOSITORY}.git" repo git -C repo checkout --quiet "$GITHUB_SHA" - name: make gftest (774 400 кейсов GF(256)) run: make -C repo gftest - name: Убрать за собой if: always() run: rm -rf repo