Add GLU dependency for ARAnyM MMU build #260
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: qualification | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| infrastructure: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build atari-runtime image | |
| run: docker build -t atari-runtime:m2 -f Containerfile . | |
| - name: Runtime metadata | |
| run: docker run --rm atari-runtime:m2 tools/runtime-info.sh | |
| - name: Hatari CLI capabilities | |
| run: docker run --rm atari-runtime:m2 sh -c 'hatari --help 2>&1 | tee /tmp/hatari-help.txt; grep -Ei "auto|run|program|gemdos|harddrive" /tmp/hatari-help.txt || true' | |
| - name: Hatari + EmuTOS smoke | |
| run: docker run --rm atari-runtime:m2 tools/smoke.sh | |
| - name: Verify M2 helper | |
| run: docker run --rm atari-runtime:m2 sh -n tools/qualify-m2.sh | |
| m2-emulator: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| profile: [st, ste] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build atari-runtime image | |
| run: docker build -t atari-runtime:m2 -f Containerfile . | |
| - name: Install floppy image tools | |
| run: sudo apt-get update && sudo apt-get install -y dosfstools mtools | |
| - name: Download canonical atari-dev M2 artifact | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| mkdir -p artifacts | |
| curl --fail --location \ | |
| -H "Authorization: Bearer $GH_TOKEN" \ | |
| -H "Accept: application/vnd.github+json" \ | |
| -o /tmp/atari-dev-m2.zip \ | |
| https://api.github.com/repos/Ploos-AS/atari-dev/actions/artifacts/10600359653/zip | |
| unzip -q /tmp/atari-dev-m2.zip -d artifacts | |
| test -s artifacts/HELLO.TOS | |
| test -s artifacts/MINIMAL.PRG | |
| sha256sum artifacts/HELLO.TOS artifacts/MINIMAL.PRG | |
| - name: Prove EmuTOS reaches video boot | |
| run: | | |
| rm -f artifacts/xvfb-${{ matrix.profile }}.log artifacts/boot-hatari-${{ matrix.profile }}.log | |
| docker run --rm \ | |
| -v "$PWD/artifacts:/runtime/artifacts" atari-runtime:m2 \ | |
| sh -c 'set -eu; Xvfb :99 -screen 0 1024x768x24 >/tmp/xvfb.log 2>&1 & x=$!; export DISPLAY=:99; sleep 1; timeout --signal=TERM --kill-after=2s 8s hatari --machine "${{ matrix.profile }}" --memsize 1 --tos /runtime/roms/emutos.img >/tmp/hatari.log 2>&1 || rc=$?; rc=${rc:-0}; cp /tmp/xvfb.log /runtime/artifacts/xvfb-${{ matrix.profile }}.log; cp /tmp/hatari.log /runtime/artifacts/boot-hatari-${{ matrix.profile }}.log; kill "$x" 2>/dev/null || true; wait "$x" 2>/dev/null || true; case "$rc" in 0|124|137) exit 0 ;; *) exit "$rc" ;; esac' | |
| cat artifacts/xvfb-${{ matrix.profile }}.log || true | |
| cat artifacts/boot-hatari-${{ matrix.profile }}.log || true | |
| test -e artifacts/boot-hatari-${{ matrix.profile }}.log | |
| if grep -Eqi 'fatal|cannot open.*tos|no tos|failed to.*tos' artifacts/boot-hatari-${{ matrix.profile }}.log; then | |
| echo "ERROR: Hatari reported a fatal TOS boot error" >&2 | |
| exit 1 | |
| fi | |
| printf 'EmuTOS boot window %s: PASS\n' "${{ matrix.profile }}" | |
| - name: Execute canonical probe from GEMDOS drive | |
| run: | | |
| rm -f artifacts/MINPASS.TXT | |
| test -s artifacts/MINIMAL.PRG | |
| set +e | |
| docker run --rm \ | |
| -v "$PWD/artifacts:/runtime/artifacts" atari-runtime:m2 \ | |
| sh -c 'set +e; Xvfb :99 -screen 0 1024x768x24 >/tmp/xvfb.log 2>&1 & x=$!; export DISPLAY=:99; sleep 1; timeout --signal=TERM --kill-after=2s 45s hatari --machine "${{ matrix.profile }}" --memsize 1 --tos /runtime/roms/emutos.img --harddrive /runtime/artifacts --gemdos-drive C --auto MINIMAL.PRG --trace os_base,gemdos --trace-file /runtime/artifacts/hatari-boot-trace-${{ matrix.profile }}.log --log-level debug --log-file /runtime/artifacts/hatari-boot-debug-${{ matrix.profile }}.log --run-vbls 1500 >/runtime/artifacts/hatari-stdout-${{ matrix.profile }}.log 2>/runtime/artifacts/hatari-stderr-${{ matrix.profile }}.log; rc=$?; kill "$x" 2>/dev/null || true; wait "$x" 2>/dev/null || true; exit "$rc"' | |
| rc=$? | |
| set -e | |
| cat "artifacts/hatari-stderr-${{ matrix.profile }}.log" || true | |
| cat "artifacts/hatari-stdout-${{ matrix.profile }}.log" || true | |
| grep -Ei 'MINIMAL|PRG|Pexec|Fcreate|Fwrite|Fclose|GEMDOS|boot' "artifacts/hatari-boot-trace-${{ matrix.profile }}.log" 2>/dev/null | tail -n 300 || true | |
| if [ "$rc" -ne 0 ] && [ ! -s artifacts/MINPASS.TXT ]; then | |
| echo "ERROR: Hatari ended without guest marker (rc=$rc)" >&2 | |
| exit 1 | |
| fi | |
| test -s artifacts/MINPASS.TXT | |
| grep -F 'Ploos-AS atari-runtime minimal GEMDOS execution PASS' artifacts/MINPASS.TXT | |
| printf 'Canonical GEMDOS execution probe %s: PASS\n' "${{ matrix.profile }}" | |
| - name: Verify Atari-side GEMDOS execution evidence | |
| run: | | |
| test -s artifacts/MINPASS.TXT | |
| grep -F 'Ploos-AS atari-runtime minimal GEMDOS execution PASS' artifacts/MINPASS.TXT | |
| file artifacts/MINIMAL.PRG |