46aca420cc
Use OVMF/AVMF and the UEFI Shell in a QEMU environment to validate that the UEFI executables we build do run and produce the expected output. The tests to run are flexibly defined is test_list.txt and can be expanded. At this stage, only x64, ia32, aa64 and arm are run, which rely on the UEFI firmwares found at https://github.com/pbatard/EfiFs/tree/gh-pages/AAVMF and https://github.com/pbatard/EfiFs/tree/gh-pages/OVMF as well as Shell builds from https://github.com/pbatard/UEFI-Shell. Signed-off-by: Pete Batard <pete@akeo.ie>
103 lines
2.7 KiB
YAML
103 lines
2.7 KiB
YAML
name: Windows, VS2022
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: windows-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
arch: [x64, ia32, aa64, arm]
|
|
conf: [Debug, Release]
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Add MSBuild to PATH
|
|
uses: microsoft/setup-msbuild@v2
|
|
with:
|
|
msbuild-architecture: x64
|
|
|
|
- name: Build
|
|
shell: cmd
|
|
run: msbuild ./gnu-efi.sln /m /p:Configuration=${{ matrix.conf }},Platform=${{ matrix.arch }}
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
if: ${{ matrix.conf == 'Release' }}
|
|
with:
|
|
name: ${{ matrix.arch }}
|
|
path: ./${{ matrix.arch }}/${{ matrix.conf }}/*.efi
|
|
|
|
tests:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
|
|
strategy:
|
|
matrix:
|
|
arch: [x64, ia32, aa64, arm]
|
|
include:
|
|
- arch: x64
|
|
pkg: qemu-system-x86
|
|
qemu_arch: x86_64
|
|
qemu_opts: -M q35
|
|
fw_base: OVMF
|
|
- arch: ia32
|
|
pkg: qemu-system-x86
|
|
qemu_arch: i386
|
|
qemu_opts: -M pc
|
|
fw_base: OVMF
|
|
- arch: aa64
|
|
pkg: qemu-system-arm
|
|
qemu_arch: aarch64
|
|
qemu_opts: -M virt -cpu cortex-a57
|
|
fw_base: AAVMF
|
|
- arch: arm
|
|
pkg: qemu-system-arm
|
|
qemu_arch: arm
|
|
qemu_opts: -M virt -cpu cortex-a15
|
|
fw_base: AAVMF
|
|
|
|
steps:
|
|
- name: Set up Linux environment
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: ${{ matrix.arch }}
|
|
|
|
- name: Download UEFI firmware
|
|
run: |
|
|
fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z)
|
|
fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip
|
|
curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip}
|
|
7z x ${fw_zip}
|
|
rm ${fw_zip}
|
|
|
|
- name: Download UEFI Shell
|
|
run: |
|
|
curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso
|
|
mkdir ./image
|
|
7z x -o./image *.iso
|
|
rm *.iso
|
|
|
|
- name: Run tests
|
|
run: |
|
|
export UEFI_ARCH=${{ matrix.arch }}
|
|
export UEFI_DIR=./image
|
|
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image -nodefaults -nographic -serial stdio -net none"
|
|
./tests/gen_tests.sh ./tests/test_list.txt
|
|
./tests/run_tests.sh
|