From ed079a52ff5948962325af16d5fb8229655984aa Mon Sep 17 00:00:00 2001 From: 0tkl <118708188+0tkl@users.noreply.github.com> Date: Tue, 10 Jun 2025 18:01:47 +0800 Subject: [PATCH 1/4] ci: gettext-iconv bump to v0.25-v1.17 on Windows --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 836c3b2f6..e44849f6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -95,7 +95,7 @@ jobs: Get-Location | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append popd - $gettexturl = "https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-static-64.zip" + $gettexturl = "https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.25-v1.17/gettext0.25-iconv1.17-static-64.zip" Invoke-WebRequest -Uri $gettexturl -OutFile ".\gettext.zip" Expand-Archive ".\gettext.zip" -DestinationPath gettext pushd gettext/bin From f594dbe57f7763b2f225d33eac78ce5f7c730de7 Mon Sep 17 00:00:00 2001 From: 0tkl <118708188+0tkl@users.noreply.github.com> Date: Tue, 10 Jun 2025 18:00:18 +0800 Subject: [PATCH 2/4] ci: Add Windows ARM64 build configuration --- .github/workflows/ci.yml | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e44849f6a..165a780f6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,9 @@ jobs: fail-fast: false matrix: config: - - name: Windows MSVC Release + - name: Windows MSVC x64 Release os: windows-latest + arch: x64 msvc: true buildtype: release args: >- @@ -34,6 +35,25 @@ jobs: -Dfribidi:tests=false -Dfribidi:docs=false -Dlibass:fontconfig=disabled + - name: Windows MSVC ARM64 Release + os: windows-11-arm + arch: arm64 + msvc: true + buildtype: release + args: >- + -Ddefault_library=static + --force-fallback-for=zlib,harfbuzz,freetype2,fribidi,libpng + -Dfreetype2:harfbuzz=disabled + -Dharfbuzz:freetype=disabled + -Dharfbuzz:cairo=disabled + -Dharfbuzz:glib=disabled + -Dharfbuzz:gobject=disabled + -Dharfbuzz:tests=disabled + -Dharfbuzz:docs=disabled + -Dfribidi:tests=false + -Dfribidi:docs=false + -Dlibass:fontconfig=disabled + -Dlibass:asm=disabled #- { # name: Windows MinGW, # os: windows-latest, @@ -79,11 +99,13 @@ jobs: pip install meson==1.7.2 - name: Setup MSVC - if: matrix.config.os == 'windows-latest' && matrix.config.msvc == true + if: startsWith(matrix.config.os, 'windows-') && matrix.config.msvc == true uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.config.arch }} - name: Install dependencies (Windows) - if: matrix.config.os == 'windows-latest' + if: startsWith(matrix.config.os, 'windows-') run: | choco install ninja innosetup @@ -130,19 +152,19 @@ jobs: # Windows artifacts - name: Generate Windows installer - if: matrix.config.os == 'windows-latest' + if: startsWith(matrix.config.os, 'windows-') env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: meson compile win-installer -C build - name: Generate Windows portable installer - if: matrix.config.os == 'windows-latest' + if: startsWith(matrix.config.os, 'windows-') run: cd build && ninja win-portable - name: Upload artifacts - win_installer uses: actions/upload-artifact@v4 - if: matrix.config.os == 'windows-latest' + if: startsWith(matrix.config.os, 'windows-') with: name: ${{ matrix.config.name }} - installer path: build/Aegisub-*.exe @@ -150,7 +172,7 @@ jobs: - name: Upload artifacts - portable.zip uses: actions/upload-artifact@v4 - if: matrix.config.os == 'windows-latest' + if: startsWith(matrix.config.os, 'windows-') with: name: ${{ matrix.config.name }} - portable path: build/aegisub-portable-64.zip From 9c80a70b8944068f8a1f24a6fbf3f09f8373fa5a Mon Sep 17 00:00:00 2001 From: 0tkl <118708188+0tkl@users.noreply.github.com> Date: Tue, 10 Jun 2025 18:29:16 +0800 Subject: [PATCH 3/4] ci: dav1d requires gaspp on Win ARM build gas-preprocessor.pl --- .github/workflows/ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 165a780f6..509cc6ec1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -141,6 +141,18 @@ jobs: sudo apt-get update sudo apt-get install ninja-build build-essential libx11-dev libfreetype6-dev pkg-config libfontconfig1-dev libass-dev libasound2-dev libffms2-dev intltool libboost-all-dev libhunspell-dev libcurl4-openssl-dev libuchardet-dev libgtest-dev libgmock-dev libwxgtk3.2-dev + - name: Checkout gas-preprocessor (Windows ARM64) + if: matrix.config.os == 'windows-11-arm' + uses: actions/checkout@v4 + with: + repository: FFmpeg/gas-preprocessor + path: gas-preprocessor + + - name: Add gas-preprocessor to path (Windows ARM64) + if: matrix.config.os == 'windows-11-arm' + run: | + echo "$PWD\gas-preprocessor" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append + - name: Configure run: meson setup build ${{ matrix.config.args }} -Dbuildtype=${{ matrix.config.buildtype }} ${{ github.ref_type == 'tag' && '-Dofficial_release=true' || '' }} From 9235c03bb78a83c628b12736188fa74e3a5f1bd0 Mon Sep 17 00:00:00 2001 From: 0tkl <118708188+0tkl@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:09:27 +0800 Subject: [PATCH 4/4] ci: use runner.os for generic OS detection Use the built-in runner.os context variable when we only need to identify the category and do not care about the specific image used under the category. --- .github/workflows/ci.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 509cc6ec1..ad009e0f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -99,13 +99,13 @@ jobs: pip install meson==1.7.2 - name: Setup MSVC - if: startsWith(matrix.config.os, 'windows-') && matrix.config.msvc == true + if: runner.os == 'Windows' && matrix.config.msvc == true uses: ilammy/msvc-dev-cmd@v1 with: arch: ${{ matrix.config.arch }} - name: Install dependencies (Windows) - if: startsWith(matrix.config.os, 'windows-') + if: runner.os == 'Windows' run: | choco install ninja innosetup @@ -125,7 +125,7 @@ jobs: popd - name: Install dependencies (MacOS) - if: startsWith(matrix.config.os, 'macos-') + if: runner.os == 'macOS' run: | export HOMEBREW_NO_INSTALL_CLEANUP=1 export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 @@ -136,7 +136,7 @@ jobs: brew install pulseaudio # NO OpenAL in github CI - name: Install dependencies (Linux) - if: startsWith(matrix.config.os, 'ubuntu-') + if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install ninja-build build-essential libx11-dev libfreetype6-dev pkg-config libfontconfig1-dev libass-dev libasound2-dev libffms2-dev intltool libboost-all-dev libhunspell-dev libcurl4-openssl-dev libuchardet-dev libgtest-dev libgmock-dev libwxgtk3.2-dev @@ -164,19 +164,19 @@ jobs: # Windows artifacts - name: Generate Windows installer - if: startsWith(matrix.config.os, 'windows-') + if: runner.os == 'Windows' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: meson compile win-installer -C build - name: Generate Windows portable installer - if: startsWith(matrix.config.os, 'windows-') + if: runner.os == 'Windows' run: cd build && ninja win-portable - name: Upload artifacts - win_installer uses: actions/upload-artifact@v4 - if: startsWith(matrix.config.os, 'windows-') + if: runner.os == 'Windows' with: name: ${{ matrix.config.name }} - installer path: build/Aegisub-*.exe @@ -184,21 +184,21 @@ jobs: - name: Upload artifacts - portable.zip uses: actions/upload-artifact@v4 - if: startsWith(matrix.config.os, 'windows-') + if: runner.os == 'Windows' with: name: ${{ matrix.config.name }} - portable path: build/aegisub-portable-64.zip # macOS artifacts - name: Generate macOS installer - if: startsWith(matrix.config.os, 'macos-') + if: runner.os == 'macOS' run: | meson compile osx-bundle -C build meson compile osx-build-dmg -C build - name: Upload artifacts - macOS dmg uses: actions/upload-artifact@v4 - if: startsWith(matrix.config.os, 'macos-') + if: runner.os == 'macOS' with: name: ${{ matrix.config.name }} - installer path: build/Aegisub-*.dmg @@ -206,7 +206,7 @@ jobs: # Tarball - name: Generate tarball - if: matrix.config.os == 'ubuntu-latest' && matrix.config.buildtype == 'release' + if: runner.os == 'Linux' && matrix.config.buildtype == 'release' run: | set -e @@ -220,7 +220,7 @@ jobs: - name: Upload artifacts - tarball uses: actions/upload-artifact@v4 - if: matrix.config.os == 'ubuntu-latest' && matrix.config.buildtype == 'release' + if: runner.os == 'Linux' && matrix.config.buildtype == 'release' with: name: Source Tarball path: build/meson-dist/*.tar.xz