Skip to content

UI: Update to latest Avalonia 11.0 nightly to fix broken menus on Linux #305

UI: Update to latest Avalonia 11.0 nightly to fix broken menus on Linux

UI: Update to latest Avalonia 11.0 nightly to fix broken menus on Linux #305

Workflow file for this run

name: Build Mesen
on: [push]
env:
# I'm not a fan of the telemetry as-is, but this also suppresses some lines in the build log.
DOTNET_CLI_TELEMETRY_OPTOUT: 1
# This removes even more spurious lines.
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
jobs:
windows:
strategy:
fail-fast: false
runs-on: windows-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.x
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1.1
with:
msbuild-architecture: x64
- name: Execute unit tests
run: dotnet test -nologo
- name: Build Mesen
run: msbuild -nologo -v:d -clp:ForceConsoleColor -m -p:Configuration=Release -p:Platform=x64 -t:Clean,UI
- name: Publish Mesen
run: dotnet publish -nologo -c Release /p:Platform="Any CPU" /p:OptimizeUi="true" Mesen.sln /p:PublishProfile=UI\Properties\PublishProfiles\Release.pubxml
- name: Upload Mesen
uses: actions/upload-artifact@v3
with:
name: Mesen (Windows)
path: |
build/TmpReleaseBuild/Mesen.exe
linux:
strategy:
matrix:
compiler: [gcc, clang]
os: [ubuntu-22.04, ubuntu-20.04]
exclude:
# This currently fails to build.
- os: ubuntu-20.04
compiler: gcc
include:
- compiler: gcc
use_gcc: "USE_GCC=true"
- compiler: clang
use_gcc: ""
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.x
- name: Install dependencies
run: |
sudo apt-get update -qy
sudo apt-get install -qy libsdl2-dev # The compilers are already installed on GitHub's runners.
- name: Execute unit tests
run: dotnet test --nologo
# stderr is not detected as a TTY, so diagnostics are by default printed without colours;
# forcing colours makes the log a little nicer to read.
- name: Build Mesen
run: |
make -j$(nproc) -O ${{ matrix.use_gcc }} LTO=true STATICLINK=true SYSTEM_LIBEVDEV=false
- name: Upload Mesen
uses: actions/upload-artifact@v3
with:
name: Mesen (Linux - ${{ matrix.os }} - ${{ matrix.compiler }})
path: bin/linux-x64/Release/linux-x64/publish/Mesen
appimage:
runs-on: ubuntu-20.04
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.x
- name: Install dependencies
run: |
sudo apt-get update -qy
sudo apt-get install -qy libsdl2-dev libfuse2 # The compilers are already installed on GitHub's runners.
- name: Build Mesen (AppImage)
run: |
Linux/appimage/appimage.sh
- name: Upload Mesen (AppImage)
uses: actions/upload-artifact@v3
with:
name: Mesen (Linux x64 - AppImage)
path: Mesen.AppImage
macos:
strategy:
matrix:
compiler: [clang]
os: [macos-11, macos-12]
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.x
- name: Install dependencies
run: |
brew install sdl2
- name: Execute unit tests
run: dotnet test --nologo
# stderr is not detected as a TTY, so diagnostics are by default printed without colours;
# forcing colours makes the log a little nicer to read.
- name: Build Mesen
run: |
make -j$(nproc)
- name: Sign binary
env:
APP_NAME: bin/osx-x64/Release/osx-x64/publish/Mesen.app
CERT_DATA: ${{ secrets.MACOS_CERTIFICATE }}
CERT_PASS: ${{ secrets.MACOS_CERTIFICATE_PWD }}
ENTITLEMENTS: UI/Mesen.entitlements
SIGNING_IDENTITY: Mesen
run: |
# Export certs
echo "$CERT_DATA" | base64 --decode > /tmp/certs.p12
# Create keychain
security create-keychain -p actions macos-build.keychain
security default-keychain -s macos-build.keychain
security unlock-keychain -p actions macos-build.keychain
security set-keychain-settings -t 3600 -u macos-build.keychain
# Import certs to keychain
security import /tmp/certs.p12 -k ~/Library/Keychains/macos-build.keychain -P "$CERT_PASS" -T /usr/bin/codesign -T /usr/bin/productsign
# Key signing
security set-key-partition-list -S apple-tool:,apple: -s -k actions macos-build.keychain
# print identities
security find-identity -v macos-build.keychain
echo "[INFO] Signing app file"
codesign --force --deep --timestamp --keychain macos-build.keychain --options=runtime --entitlements "$ENTITLEMENTS" --sign "$SIGNING_IDENTITY" "$APP_NAME"
- name: Zip Mesen.app
run: |
ditto -c -k --sequesterRsrc --keepParent bin/osx-x64/Release/osx-x64/publish/Mesen.app bin/osx-x64/Release/Mesen.app.zip
- name: Upload Mesen
uses: actions/upload-artifact@v3
with:
name: Mesen (macOS - ${{ matrix.os }})
path: bin/osx-x64/Release/Mesen.app.zip