Ring3: Fixed buggy timer interrupt handling for AARCH64. #489
This file contains 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: Build X86 Firmwares | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
release: | |
types: [published] | |
env: | |
PROJECT_TYPE: UEFI | |
FORCE_INSTALL: 1 | |
WERROR: 1 | |
QEMU_VERSION_TAG: qemu-ci-8.1.5-r1 | |
WINPE_VERSION_TAG: images-winpe-1.0 | |
jobs: | |
build-macos: | |
name: macOS XCODE5 | |
runs-on: macos-latest | |
env: | |
JOB_TYPE: BUILD | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Add Linux Toolchain | |
run: brew tap FiloSottile/homebrew-musl-cross | |
- name: Install Linux Toolchain | |
run: brew install musl-cross | |
env: | |
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
HOMEBREW_NO_AUTO_UPDATE: 1 | |
- name: Install Dependencies | |
run: brew install openssl mingw-w64 | |
env: | |
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
HOMEBREW_NO_AUTO_UPDATE: 1 | |
- name: CI Bootstrap | |
run: | | |
src=$(/usr/bin/curl -Lfs https://raw.githubusercontent.com/acidanthera/ocbuild/master/ci-bootstrap.sh) && eval "$src" || exit 1 | |
touch UDK.ready | |
- name: Prepare efibuild.sh | |
run: | | |
curl -o ./efibuild.sh https://raw.githubusercontent.com/acidanthera/ocbuild/master/efibuild.sh || exit 1 | |
chmod +x ./efibuild.sh | |
ln -s `pwd` UDK | |
- name: Build BaseTools | |
run: ./efibuild.sh | |
env: | |
SELFPKG: MdePkg | |
SKIP_BUILD: 1 | |
- name: Build OvmfPkgIa32 | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: OvmfPkgIa32 | |
SELFPKG_DIR: OvmfPkg | |
ARCHS: IA32 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
BUILD_ARGUMENTS: -D WINDOWS_10_IA32 | |
- name: Build OvmfPkgX64 | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: OvmfPkgX64 | |
SELFPKG_DIR: OvmfPkg | |
ARCHS: X64 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build OvmfPkgIa32X64 | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: OvmfPkgIa32X64 | |
SELFPKG_DIR: OvmfPkg | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with X64 PEI/DXE | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: UefiPayloadPkg | |
ARCHS: X64 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: UefiPayloadPkg | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Prepare artifacts with firmwares | |
if: always() | |
run: | | |
IFS=', ' read -r -a TARGETS <<< "$TARGETS" | |
IFS=', ' read -r -a ARCHS <<< "$ARCHS" | |
for target in "${TARGETS[@]}"; do | |
for arch in "${ARCHS[@]}"; do | |
mkdir -p ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN" | |
cp ./Build/Ovmf"$arch"/"$target"_"$TOOLCHAIN"/FV/OVMF.fd ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN"/FW.fd | |
done | |
done | |
env: | |
ARCHS: Ia32,X64,3264 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
TOOLCHAIN: XCODE5 | |
- name: Zip artifacts | |
run: zip XCODE5_fw_artifacts.zip ./firmware_artifacts/* -r | |
- name: Upload to Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: XCODE5 Firmware Artifacts | |
path: XCODE5_fw_artifacts.zip | |
build-windows: | |
name: Windows VS2019 | |
runs-on: windows-latest | |
env: | |
CC: gcc | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Dependencies | |
run: | | |
choco install make nasm zip iasl --no-progress | |
- name: CI Bootstrap | |
run: | | |
src=$(curl -Lfs https://raw.githubusercontent.com/acidanthera/ocbuild/master/ci-bootstrap.sh) && eval "$src" || exit 1 | |
touch UDK.ready | |
- name: Prepare efibuild.sh | |
run: | | |
curl -o ./efibuild.sh https://raw.githubusercontent.com/acidanthera/ocbuild/master/efibuild.sh || exit 1 | |
chmod +x ./efibuild.sh | |
cmd <<< "mklink /D .\\UDK .\\" > /dev/null | |
- name: Build BaseTools | |
run: ./efibuild.sh | |
env: | |
SELFPKG: MdePkg | |
SKIP_BUILD: 1 | |
- name: Build OvmfPkgIa32 | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: OvmfPkgIa32 | |
SELFPKG_DIR: OvmfPkg | |
ARCHS: IA32 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
BUILD_ARGUMENTS: -D WINDOWS_10_IA32 | |
- name: Build OvmfPkgX64 | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: OvmfPkgX64 | |
SELFPKG_DIR: OvmfPkg | |
ARCHS: X64 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build OvmfPkgIa32X64 | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: OvmfPkgIa32X64 | |
SELFPKG_DIR: OvmfPkg | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with X64 PEI/DXE | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: UefiPayloadPkg | |
ARCHS: X64 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE | |
if: always() | |
run: ./efibuild.sh | |
env: | |
SELFPKG: UefiPayloadPkg | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Prepare artifacts with firmwares | |
if: always() | |
run: | | |
IFS=', ' read -r -a TARGETS <<< "$TARGETS" | |
IFS=', ' read -r -a ARCHS <<< "$ARCHS" | |
for target in "${TARGETS[@]}"; do | |
for arch in "${ARCHS[@]}"; do | |
mkdir -p ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN" | |
cp ./Build/Ovmf"$arch"/"$target"_"$TOOLCHAIN"/FV/OVMF.fd ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN"/FW.fd | |
done | |
done | |
env: | |
ARCHS: Ia32,X64,3264 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
TOOLCHAIN: VS2019 | |
- name: Zip artifacts | |
run: zip VS2019_fw_artifacts.zip ./firmware_artifacts/* -r | |
- name: Upload to Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: VS2019 Firmware Artifacts | |
path: VS2019_fw_artifacts.zip | |
build-linux-clangpdb: | |
name: Linux CLANGPDB | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Use Docker in rootless mode. | |
uses: ScribeMD/rootless-docker@0.2.2 | |
- name: Build BaseTools | |
run: docker compose run build-package | |
env: | |
SELFPKG: MdePkg | |
SKIP_BUILD: 1 | |
- name: Build OvmfPkgIa32 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgIa32 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: CLANGPDB | |
ARCHS: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
BUILD_ARGUMENTS: -D WINDOWS_10_IA32 | |
- name: Build OvmfPkgX64 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgX64 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: CLANGPDB | |
ARCHS: X64 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build OvmfPkgIa32X64 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgIa32X64 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: CLANGPDB | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with X64 PEI/DXE | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: UefiPayloadPkg | |
SELFPKG_DIR: UefiPayloadPkg | |
TOOLCHAINS: CLANGPDB | |
ARCHS: X64 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: UefiPayloadPkg | |
SELFPKG_DIR: UefiPayloadPkg | |
TOOLCHAINS: CLANGPDB | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Prepare artifacts with firmwares | |
if: always() | |
run: | | |
IFS=', ' read -r -a TARGETS <<< "$TARGETS" | |
IFS=', ' read -r -a ARCHS <<< "$ARCHS" | |
for target in "${TARGETS[@]}"; do | |
for arch in "${ARCHS[@]}"; do | |
mkdir -p ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN" | |
cp ./Build/Ovmf"$arch"/"$target"_"$TOOLCHAIN"/FV/OVMF.fd ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN"/FW.fd | |
done | |
done | |
env: | |
ARCHS: Ia32,X64,3264 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
TOOLCHAIN: CLANGPDB | |
- name: Zip artifacts | |
run: zip CLANGPDB_fw_artifacts.zip ./firmware_artifacts/* -r | |
- name: Upload to Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: CLANGPDB Firmware Artifacts | |
path: CLANGPDB_fw_artifacts.zip | |
build-linux-clangdwarf: | |
name: Linux CLANGDWARF | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Use Docker in rootless mode. | |
uses: ScribeMD/rootless-docker@0.2.2 | |
- name: Build BaseTools | |
run: docker compose run build-package | |
env: | |
SELFPKG: MdePkg | |
SKIP_BUILD: 1 | |
- name: Build OvmfPkgIa32 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgIa32 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: CLANGDWARF | |
ARCHS: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
BUILD_ARGUMENTS: -D WINDOWS_10_IA32 | |
- name: Build OvmfPkgX64 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgX64 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: CLANGDWARF | |
ARCHS: X64 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build OvmfPkgIa32X64 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgIa32X64 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: CLANGDWARF | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with X64 PEI/DXE | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: UefiPayloadPkg | |
SELFPKG_DIR: UefiPayloadPkg | |
TOOLCHAINS: CLANGDWARF | |
ARCHS: X64 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: UefiPayloadPkg | |
SELFPKG_DIR: UefiPayloadPkg | |
TOOLCHAINS: CLANGDWARF | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Prepare artifacts with firmwares | |
if: always() | |
run: | | |
IFS=', ' read -r -a TARGETS <<< "$TARGETS" | |
IFS=', ' read -r -a ARCHS <<< "$ARCHS" | |
for target in "${TARGETS[@]}"; do | |
for arch in "${ARCHS[@]}"; do | |
mkdir -p ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN" | |
cp ./Build/Ovmf"$arch"/"$target"_"$TOOLCHAIN"/FV/OVMF.fd ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN"/FW.fd | |
done | |
done | |
env: | |
ARCHS: Ia32,X64,3264 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
TOOLCHAIN: CLANGDWARF | |
- name: Zip artifacts | |
run: zip CLANGDWARF_fw_artifacts.zip ./firmware_artifacts/* -r | |
- name: Upload to Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: CLANGDWARF Firmware Artifacts | |
path: CLANGDWARF_fw_artifacts.zip | |
build-linux-gcc5: | |
name: Linux GCC | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Use Docker in rootless mode. | |
uses: ScribeMD/rootless-docker@0.2.2 | |
- name: Build BaseTools | |
run: docker compose run build-package | |
env: | |
SELFPKG: MdePkg | |
SKIP_BUILD: 1 | |
- name: Build OvmfPkgIa32 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgIa32 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: GCC | |
ARCHS: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
BUILD_ARGUMENTS: -D WINDOWS_10_IA32 | |
- name: Build OvmfPkgX64 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgX64 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: GCC | |
ARCHS: X64 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build OvmfPkgIa32X64 | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: OvmfPkgIa32X64 | |
SELFPKG_DIR: OvmfPkg | |
TOOLCHAINS: GCC | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with X64 PEI/DXE | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: UefiPayloadPkg | |
SELFPKG_DIR: UefiPayloadPkg | |
TOOLCHAINS: GCC | |
ARCHS: X64 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Build UefiPayloadPkg with Ia32 PEI and X64 DXE | |
if: always() | |
run: docker compose run build-package | |
env: | |
SELFPKG: UefiPayloadPkg | |
SELFPKG_DIR: UefiPayloadPkg | |
TOOLCHAINS: GCC | |
ARCHS: X64 | |
ARCHS_EXT: IA32 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
SKIP_TESTS: 1 | |
SKIP_PACKAGE: 1 | |
- name: Prepare artifacts with firmwares | |
if: always() | |
run: | | |
IFS=', ' read -r -a TARGETS <<< "$TARGETS" | |
IFS=', ' read -r -a ARCHS <<< "$ARCHS" | |
for target in "${TARGETS[@]}"; do | |
for arch in "${ARCHS[@]}"; do | |
mkdir -p ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN" | |
cp ./Build/Ovmf"$arch"/"$target"_"$TOOLCHAIN"/FV/OVMF.fd ./firmware_artifacts/Ovmf/"$arch"/"$target"_"$TOOLCHAIN"/FW.fd | |
done | |
done | |
env: | |
ARCHS: Ia32,X64,3264 | |
TARGETS: RELEASE,DEBUG,NOOPT | |
TOOLCHAIN: GCC | |
- name: Zip artifacts | |
run: zip GCC_fw_artifacts.zip ./firmware_artifacts/* -r | |
- name: Upload to Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: GCC Firmware Artifacts | |
path: GCC_fw_artifacts.zip | |
test-firmwares: | |
name: Test | |
runs-on: ubuntu-22.04 | |
needs: [build-macos, build-windows, build-linux-clangpdb, build-linux-clangdwarf, build-linux-gcc5] | |
strategy: | |
fail-fast: false | |
matrix: | |
package: [ | |
{name: "Ovmf", archs: "Ia32,X64,3264", toolchain: "XCODE5", targets: "RELEASE,DEBUG,NOOPT"}, | |
{name: "Ovmf", archs: "Ia32,X64,3264", toolchain: "VS2019", targets: "RELEASE,DEBUG,NOOPT"}, | |
{name: "Ovmf", archs: "Ia32,X64,3264", toolchain: "CLANGPDB", targets: "RELEASE,DEBUG,NOOPT"}, | |
{name: "Ovmf", archs: "Ia32,X64,3264", toolchain: "CLANGDWARF", targets: "RELEASE,DEBUG,NOOPT"}, | |
{name: "Ovmf", archs: "Ia32,X64,3264", toolchain: "GCC", targets: "RELEASE,DEBUG,NOOPT"}, | |
] | |
steps: | |
- name: Checkout ocbuild repository | |
uses: actions/checkout@v4 | |
with: | |
repository: acidanthera/ocbuild | |
ref: master | |
path: ./ | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y python3 python3-pip libglib2.0-dev libfdt-dev libpixman-1-dev libepoxy-dev libcapstone-dev libsdl2-dev libnuma-dev libgtk-3-dev libvte-2.91-dev libbrlapi-dev libiscsi-dev libnfs-dev librbd-dev libxen-dev | |
python3 -m pip install -r requirements.txt | |
- name: Downloading QEMU | |
uses: robinraju/release-downloader@v1.7 | |
with: | |
repository: "acidanthera/OcBinaryData" | |
tag: ${{ env.QEMU_VERSION_TAG }} | |
fileName: "qemu.tar.xz" | |
- name: Installing QEMU and add to PATH | |
run: | | |
echo "${HOME}/qemu/bin" >> $GITHUB_PATH | |
tar -xJf ./qemu.tar.xz -C $HOME | |
- name: Download a single artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ matrix.package.toolchain }} Firmware Artifacts | |
- name: Unzip artifacts | |
run: unzip "$TOOLCHAIN"_fw_artifacts.zip | |
env: | |
TOOLCHAIN: ${{ matrix.package.toolchain }} | |
- name: Downloading Windows PE X64 iso | |
uses: robinraju/release-downloader@v1.7 | |
with: | |
repository: "acidanthera/OcBinaryData" | |
tag: ${{ env.WINPE_VERSION_TAG }} | |
fileName: "winpe_X64.iso" | |
- name: Downloading Windows PE IA32 iso | |
uses: robinraju/release-downloader@v1.7 | |
with: | |
repository: "acidanthera/OcBinaryData" | |
tag: ${{ env.WINPE_VERSION_TAG }} | |
fileName: "winpe_IA32.iso" | |
- name: Run TestConsole | |
if: always() | |
run: | | |
IFS=', ' read -r -a TARGETS <<< "$TARGETS" | |
IFS=', ' read -r -a ARCHS <<< "$ARCHS" | |
for target in "${TARGETS[@]}"; do | |
for arch in "${ARCHS[@]}"; do | |
echo Checking "$PACKAGE""$arch" "$target"_"$TOOLCHAIN" | |
python3 test_qemu_fw.py ./firmware_artifacts/"$PACKAGE"/"$arch"/"$target"_"$TOOLCHAIN"/FW.fd | |
done | |
done | |
env: | |
PACKAGE: ${{ matrix.package.name }} | |
ARCHS: ${{ matrix.package.archs }} | |
TARGETS: ${{ matrix.package.targets }} | |
TOOLCHAIN: ${{ matrix.package.toolchain }} | |
- name: Run TestLinux | |
if: always() | |
run: | | |
IFS=', ' read -r -a TARGETS <<< "$TARGETS" | |
IFS=', ' read -r -a ARCHS <<< "$ARCHS" | |
for target in "${TARGETS[@]}"; do | |
for arch in "${ARCHS[@]}"; do | |
echo Checking "$PACKAGE""$arch" "$target"_"$TOOLCHAIN" | |
python3 test_qemu_fw.py ./firmware_artifacts/"$PACKAGE"/"$arch"/"$target"_"$TOOLCHAIN"/FW.fd --test-linux | |
done | |
done | |
env: | |
PACKAGE: ${{ matrix.package.name }} | |
ARCHS: ${{ matrix.package.archs }} | |
TARGETS: ${{ matrix.package.targets }} | |
TOOLCHAIN: ${{ matrix.package.toolchain }} | |
- name: Run Windows PE | |
if: always() | |
run: | | |
IFS=', ' read -r -a TARGETS <<< "$TARGETS" | |
IFS=', ' read -r -a ARCHS <<< "$ARCHS" | |
for target in "${TARGETS[@]}"; do | |
for arch in "${ARCHS[@]}"; do | |
if [ "$arch" = "Ia32" ]; then | |
WINPE_FILENAME=winpe_IA32.iso | |
elif [ "$arch" = "X64" ] || [ "$arch" = "3264" ]; then | |
WINPE_FILENAME=winpe_X64.iso | |
fi | |
echo Checking "$PACKAGE""$arch" "$target"_"$TOOLCHAIN" | |
python3 test_qemu_fw.py ./firmware_artifacts/"$PACKAGE"/"$arch"/"$target"_"$TOOLCHAIN"/FW.fd --test-winpe --test-winpe-path "$WINPE_FILENAME" | |
done | |
done | |
env: | |
PACKAGE: ${{ matrix.package.name }} | |
ARCHS: ${{ matrix.package.archs }} | |
TARGETS: ${{ matrix.package.targets }} | |
TOOLCHAIN: ${{ matrix.package.toolchain }} |