Skip to content

WIP: Windows 11 support #163

WIP: Windows 11 support

WIP: Windows 11 support #163

Workflow file for this run

name: CI Tests for MicroV
on:
push:
paths-ignore:
- '**.md'
pull_request:
paths-ignore:
- '**.md'
workflow_dispatch:
schedule:
- cron: '0 3 * * 5' # Every Friday at 3am
jobs:
clang-format:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
path: microv
- name: Setup
run: |
sudo apt-get update
sudo apt-get install -y python clang clang-format cmake
shell: bash
- name: Validate Source Formatting
run: |
mkdir build && cd build
cp ../microv/scripts/cmake/config/config.cmake ..
echo 'set(ENABLE_BUILD_VMM OFF)' >> ../config.cmake
echo 'set(BUILD_XEN OFF)' >> ../config.cmake
echo 'set(BUILD_BUILDER OFF)' >> ../config.cmake
echo 'set(ENABLE_CLANG_FORMAT ON)' >> ../config.cmake
cmake ../microv/deps/hypervisor -DCONFIG=../config.cmake
make clang-format
cd ../microv
if [[ -n $(git diff) ]]; then
echo "You must run make clang-format before submitting a pull request"
echo ""
git diff
exit -1
fi
shell: bash
build-efi:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
path: microv
- name: Setup
run: |
sudo apt-get update
sudo apt-get install -y python build-essential linux-headers-$(uname -r) nasm clang cmake libelf-dev
shell: bash
- name: Build EFI
run: |
mkdir build && cd build
cp ../microv/scripts/cmake/config/config.cmake ..
echo 'set(ENABLE_BUILD_USERSPACE OFF)' >> ../config.cmake
echo 'set(ENABLE_BUILD_VMM ON)' >> ../config.cmake
echo 'set(ENABLE_BUILD_EFI ON)' >> ../config.cmake
echo 'set(XEN_REGISTER_BASED_ABI ON)' >> ../config.cmake
echo 'set(ENABLE_SERIAL OFF)' >> ../config.cmake
cmake ../microv/deps/hypervisor -DCONFIG=../config.cmake -DCMAKE_CXX_FLAGS="--verbose "
make
shell: bash
- uses: actions/upload-artifact@v2
with:
name: microv_efi
path: |
build/prefixes/x86_64-efi-pe/bin/bareflank.efi
build-efi-debug:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
path: microv
- name: Setup
run: |
sudo apt-get update
sudo apt-get install -y python build-essential linux-headers-$(uname -r) nasm clang cmake libelf-dev
shell: bash
- name: Build EFI
run: |
mkdir build && cd build
cp ../microv/scripts/cmake/config/config.cmake ..
echo 'set(ENABLE_BUILD_USERSPACE OFF)' >> ../config.cmake
echo 'set(ENABLE_BUILD_VMM ON)' >> ../config.cmake
echo 'set(ENABLE_BUILD_EFI ON)' >> ../config.cmake
echo 'set(XEN_REGISTER_BASED_ABI ON)' >> ../config.cmake
echo 'set(XEN_READCONSOLE_ROOTVM ON)' >> ../config.cmake
echo 'set(USE_XUE ON)' >> ../config.cmake
echo 'set(ENABLE_SERIAL ON)' >> ../config.cmake
echo 'set(DEFAULT_COM_PORT 0x3F8U)' >> ../config.cmake
echo 'set(DEBUG_LEVEL 9)' >> ../config.cmake
cmake ../microv/deps/hypervisor -DCONFIG=../config.cmake -DCMAKE_CXX_FLAGS="--verbose "
make -j
shell: bash
- uses: actions/upload-artifact@v2
with:
name: microv_efi_debug
path: |
build/prefixes/x86_64-efi-pe/bin/bareflank.efi
build-efi-noeth:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
path: microv
- name: Setup
run: |
sudo apt-get update
sudo apt-get install -y python build-essential linux-headers-$(uname -r) nasm clang cmake libelf-dev
shell: bash
- name: Build EFI
run: |
mkdir build && cd build
cp ../microv/scripts/cmake/config/config.cmake ..
echo 'set(ENABLE_BUILD_USERSPACE OFF)' >> ../config.cmake
echo 'set(ENABLE_BUILD_VMM ON)' >> ../config.cmake
echo 'set(ENABLE_BUILD_EFI ON)' >> ../config.cmake
echo 'set(XEN_REGISTER_BASED_ABI ON)' >> ../config.cmake
echo 'set(ENABLE_NOETH_PT ON)' >> ../config.cmake
echo 'set(ENABLE_SERIAL OFF)' >> ../config.cmake
cmake ../microv/deps/hypervisor -DCONFIG=../config.cmake -DCMAKE_CXX_FLAGS="--verbose "
make
shell: bash
- uses: actions/upload-artifact@v2
with:
name: microv_efi_noeth
path: |
build/prefixes/x86_64-efi-pe/bin/bareflank.efi
build-userpace:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
path: microv
- name: Setup MSBuild (PATH)
id: setup_msbuild_path
uses: microsoft/[email protected]
- name: Setup
run: |
$MSBUILD_PATH = "${{steps.setup_msbuild_path.outputs.msbuildPath}}"
echo msbuild path: $MSBUILD_PATH
echo $MSBUILD_PATH | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
choco install nasm
echo "C:\Program Files\NASM" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
shell: pwsh
- name: Build Userspace
run: |
mkdir build && cd build
cp ..\microv\scripts\cmake\config\config.cmake ..
Add-Content -Path ..\config.cmake -Value "set(ENABLE_BUILD_USERSPACE ON)"
Add-Content -Path ..\config.cmake -Value "set(ENABLE_BUILD_VMM OFF)"
Add-Content -Path ..\config.cmake -Value "set(UVCTL_WINDOWS_SERVICE_FORCE_BOOTENTRY ON)"
cmake ../microv/deps/hypervisor -DCONFIG=..\config.cmake -G "Visual Studio 16 2019" -A x64
& msbuild /p:Configuration=Release /p:Platform=x64 /p:TargetVersion=Windows10 hypervisor.sln
shell: pwsh
- uses: actions/upload-artifact@v2
with:
name: microv_userspace
path: |
build/prefixes/x86_64-userspace-pe/bin/uvctl.exe
build-userpace-debug:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
path: microv
- name: Setup MSBuild (PATH)
id: setup_msbuild_path
uses: microsoft/[email protected]
- name: Setup
run: |
$MSBUILD_PATH = "${{steps.setup_msbuild_path.outputs.msbuildPath}}"
echo msbuild path: $MSBUILD_PATH
echo $MSBUILD_PATH | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
choco install nasm
echo "C:\Program Files\NASM" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
shell: pwsh
- name: Build Userspace
run: |
mkdir build && cd build
cp ..\microv\scripts\cmake\config\config.cmake ..
Add-Content -Path ..\config.cmake -Value "set(ENABLE_BUILD_USERSPACE ON)"
Add-Content -Path ..\config.cmake -Value "set(ENABLE_BUILD_VMM OFF)"
Add-Content -Path ..\config.cmake -Value "set(XEN_READCONSOLE_ROOTVM ON)"
cmake ../microv/deps/hypervisor -DCONFIG=..\config.cmake -G "Visual Studio 16 2019" -A x64
& msbuild /p:Configuration=Release /p:Platform=x64 /p:TargetVersion=Windows10 hypervisor.sln
shell: pwsh
- uses: actions/upload-artifact@v2
with:
name: microv_userspace_debug
path: |
build/prefixes/x86_64-userspace-pe/bin/uvctl.exe
build-drivers:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
path: microv
- name: Setup MSBuild (PATH)
id: setup_msbuild_path
uses: microsoft/[email protected]
- name: Setup
run: |
# Get dependencies
$MSBUILD_PATH = "${{steps.setup_msbuild_path.outputs.msbuildPath}}"
echo "msbuild path: $MSBUILD_PATH"
echo $MSBUILD_PATH | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
choco install nasm
echo "C:\Program Files\NASM" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
# Set latest build number
$runs = Invoke-WebRequest -Headers @{"Authorization" = 'token ${{ secrets.GITHUB_TOKEN }}'} -Uri 'https://api.github.com/repos/bareflank/microv/actions/runs?branch=mono&status=success' | ConvertFrom-Json
Add-Content -Path $Env:GITHUB_ENV -Value "BUILD_NUMBER=$($runs.total_count + 10)"
shell: pwsh
- name: Build Drivers
run: |
cd .\microv\drivers
.\build-all.ps1 -RegisterBasedAbi
shell: pwsh
- uses: actions/upload-artifact@v2
with:
name: microv_drivers
path: |
microv/drivers/builder/windows/builder/x64/*
microv/drivers/builder/windows/vs2019/Windows10Release/x64/builder.cer
microv/drivers/visr/windows/visr/x64/*
microv/drivers/visr/windows/vs2019/Windows10Release/x64/visr.cer
microv/drivers/winpv/xenbus/xenbus/x64/*
microv/drivers/winpv/xenbus/vs2019/Windows10Release/x64/xenbus.cer
microv/drivers/winpv/xennet/xennet/x64/*
microv/drivers/winpv/xennet/vs2019/Windows10Release/x64/xennet.cer
microv/drivers/winpv/xenvif/xenvif/x64/*
microv/drivers/winpv/xenvif/vs2019/Windows10Release/x64/xenvif.cer
microv/drivers/winpv/xeniface/xeniface/x64/*
microv/drivers/winpv/xeniface/vs2019/Windows10Release/x64/xeniface.cer
microv/drivers/winpv/xeniface/include/xencontrol.h
microv/drivers/winpv/xeniface/include/xeniface_ioctls.h
build-drivers-nocerts:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
path: microv
- name: Setup MSBuild (PATH)
id: setup_msbuild_path
uses: microsoft/[email protected]
- name: Setup
run: |
# Get dependencies
$MSBUILD_PATH = "${{steps.setup_msbuild_path.outputs.msbuildPath}}"
echo "msbuild path: $MSBUILD_PATH"
echo $MSBUILD_PATH | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
choco install nasm
echo "C:\Program Files\NASM" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
# Set latest build number
$runs = Invoke-WebRequest -Headers @{"Authorization" = 'token ${{ secrets.GITHUB_TOKEN }}'} -Uri 'https://api.github.com/repos/bareflank/microv/actions/runs?branch=mono&status=success' | ConvertFrom-Json
Add-Content -Path $Env:GITHUB_ENV -Value "BUILD_NUMBER=$($runs.total_count + 10)"
shell: pwsh
- name: Build Drivers with Test Sign Off
run: |
cd .\microv\drivers
$SignOff = '<SignMode>Off</SignMode>'
$SignTest = '<SignMode>TestSign</SignMode>'
$Files = Get-ChildItem -Recurse | Select-String $SignTest -List
foreach ($f in $Files.Path) { (Get-Content $f) -replace $SignTest, $SignOff | Set-Content $f }
.\build-all.ps1 -RegisterBasedAbi
shell: pwsh
- uses: actions/upload-artifact@v2
with:
name: microv_drivers_nocerts
path: |
microv/drivers/builder/windows/vs2019/Windows10Release/x64/package/*
microv/drivers/visr/windows/vs2019/Windows10Release/x64/package/*
microv/drivers/winpv/xenbus/vs2019/Windows10Release/x64/package/*
microv/drivers/winpv/xennet/vs2019/Windows10Release/x64/package/*
microv/drivers/winpv/xenvif/vs2019/Windows10Release/x64/package/*
microv/drivers/winpv/xeniface/vs2019/Windows10Release/x64/package/*
microv/drivers/winpv/xeniface/include/xencontrol.h
microv/drivers/winpv/xeniface/include/xeniface_ioctls.h