From d0d51124649297697c70ea5626360f774c14f3e7 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Mon, 22 Dec 2025 18:59:31 -0500 Subject: [PATCH] Drop win32, win64-legacy - win32: Qt 6 is 64-bit only - win64-legacy: a separate build is unnecessary. could create separate artifact from the same jellyfin-desktop compilation if desired - arm64: added commented out, but requires switching to wix4 --- .github/workflows/build-windows.yml | 131 ++++++---------------------- .gitignore | 2 + 2 files changed, 28 insertions(+), 105 deletions(-) diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 63df238..9b9e9fb 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -10,55 +10,24 @@ on: workflow_dispatch: jobs: - build-win64-legacy: - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Install Qt 6 - uses: jurplel/install-qt-action@v3 - with: - version: "${{ env.QT_VERSION }}" - arch: "win64_msvc2019_64" - modules: "qtwebengine" - - name: Install dependencies - run: | - mkdir build - curl -L https://aka.ms/vs/17/release/vc_redist.x64.exe > vc_redist.x64.exe - sed -i 's#C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Redist\\MSVC\\v142\\vcredist_x64.exe#'"$(readlink -f vc_redist.x64.exe | sed 's#/\([a-z]\)/#\1:\\#g' | tr '/' '\\' | sed 's/\\/\\\\/g')#g" bundle/win/Bundle.wxs - curl -L https://github.com/ninja-build/ninja/releases/download/v${{ env.NINJA_VERSION }}/ninja-win.zip > ninja.zip - unzip ninja.zip - mv ninja.exe build/ - curl -L https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-v3-${{ env.MPV_VERSION }}.7z/download > mpv.7z - 7z x mpv.7z - mkdir mpv - mv include mpv - gendef libmpv-2.dll - mv libmpv-2.dll mpv/libmpv-2.dll - mv libmpv-2.def mpv.def - mv mpv.def libmpv.dll.a mpv/ - mv mpv build/ - shell: bash - - name: Build - run: | - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - cd build - set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin;%CD% - cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=output -DCMAKE_MAKE_PROGRAM=ninja.exe -DQTROOT=%Qt6_DIR% -DMPV_INCLUDE_DIR=mpv/include -DMPV_LIBRARY=mpv/libmpv-2.dll -DCHECK_FOR_UPDATES=ON -DUSE_STATIC_MPVQT=ON .. - lib /def:mpv\mpv.def /out:mpv\libmpv-2.dll.lib /MACHINE:X64 - ninja - mkdir output 2>nul - copy ..\vc_redist.x64.exe output\ - ninja windows_package - shell: cmd - - name: Archive production artifacts - uses: actions/upload-artifact@v4 - with: - name: windows-legacy64 - path: ${{ github.workspace }}/build/JellyfinDesktop-*.exe - - build-win64: + build: + strategy: + fail-fast: false + matrix: + include: + - artifact: windows-x64 + qt_arch: win64_msvc2022_64 + mpv_arch: x86_64-v3 + vc_redist_arch: x64 + vcvars: vcvars64.bat + machine: X64 + # ARM64 disabled - requires WiX 4+ for installer support + # - artifact: windows-arm64 + # qt_arch: win64_msvc2022_arm64 + # mpv_arch: aarch64 + # vc_redist_arch: arm64 + # vcvars: vcvarsamd64_arm64.bat + # machine: ARM64 runs-on: windows-latest steps: - uses: actions/checkout@v4 @@ -68,17 +37,17 @@ jobs: uses: jurplel/install-qt-action@v4 with: version: "${{ env.QT_VERSION }}" - arch: "win64_msvc2022_64" + arch: "${{ matrix.qt_arch }}" modules: "qtwebengine qtwebchannel qtpositioning" - name: Install dependencies run: | mkdir build - curl -L https://aka.ms/vs/17/release/vc_redist.x64.exe > vc_redist.x64.exe - sed -i 's#C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Redist\\MSVC\\v142\\vcredist_x64.exe#'"$(readlink -f vc_redist.x64.exe | sed 's#/\([a-z]\)/#\1:\\#g' | tr '/' '\\' | sed 's/\\/\\\\/g')#g" bundle/win/Bundle.wxs + curl -L https://aka.ms/vs/17/release/vc_redist.${{ matrix.vc_redist_arch }}.exe > vc_redist.${{ matrix.vc_redist_arch }}.exe + sed -i 's#C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Redist\\MSVC\\v142\\vcredist_x64.exe#'"$(readlink -f vc_redist.${{ matrix.vc_redist_arch }}.exe | sed 's#/\([a-z]\)/#\1:\\#g' | tr '/' '\\' | sed 's/\\/\\\\/g')#g" bundle/win/Bundle.wxs curl -L https://github.com/ninja-build/ninja/releases/download/v${{ env.NINJA_VERSION }}/ninja-win.zip > ninja.zip unzip ninja.zip mv ninja.exe build/ - curl -L https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-v3-${{ env.MPV_VERSION }}.7z/download > mpv.7z + curl -L https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-${{ matrix.mpv_arch }}-${{ env.MPV_VERSION }}.7z/download > mpv.7z 7z x mpv.7z mkdir mpv mv include mpv @@ -90,66 +59,18 @@ jobs: shell: bash - name: Build run: | - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\${{ matrix.vcvars }}" cd build set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin;%CD% cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=output -DCMAKE_MAKE_PROGRAM=ninja.exe -DQTROOT=%Qt6_DIR% -DMPV_INCLUDE_DIR=mpv/include -DMPV_LIBRARY=mpv/libmpv-2.dll -DCHECK_FOR_UPDATES=ON -DUSE_STATIC_MPVQT=ON .. - lib /def:mpv\mpv.def /out:mpv\libmpv-2.dll.lib /MACHINE:X64 + lib /def:mpv\mpv.def /out:mpv\libmpv-2.dll.lib /MACHINE:${{ matrix.machine }} ninja mkdir output 2>nul - copy ..\vc_redist.x64.exe output\ + copy ..\vc_redist.${{ matrix.vc_redist_arch }}.exe output\ ninja windows_package shell: cmd - name: Archive production artifacts uses: actions/upload-artifact@v4 with: - name: windows-x64 - path: ${{ github.workspace }}/build/JellyfinDesktop-*.exe - - build-win32: - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Install Qt 6 - uses: jurplel/install-qt-action@v4 - with: - version: "${{ env.QT_VERSION }}" - arch: "win32_msvc2022" - modules: "qtwebengine qtwebchannel qtpositioning" - - name: Install dependencies - run: | - mkdir build - curl -L https://aka.ms/vs/17/release/vc_redist.x86.exe > vc_redist.x86.exe - sed -i 's#C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Redist\\MSVC\\v142\\vcredist_x64.exe#'"$(readlink -f vc_redist.x86.exe | sed 's#/\([a-z]\)/#\1:\\#g' | tr '/' '\\' | sed 's/\\/\\\\/g')#g" bundle/win/Bundle.wxs - curl -L https://github.com/ninja-build/ninja/releases/download/v${{ env.NINJA_VERSION }}/ninja-win.zip > ninja.zip - unzip ninja.zip - mv ninja.exe build/ - curl -L https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-i686-${{ env.MPV_VERSION }}.7z/download > mpv.7z - 7z x mpv.7z - mkdir mpv - mv include mpv - gendef libmpv-2.dll - mv libmpv-2.dll mpv/libmpv-2.dll - mv libmpv-2.def mpv.def - mv mpv.def libmpv.dll.a mpv/ - mv mpv build/ - shell: bash - - name: Build - run: | - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars32.bat" - cd build - set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin;%CD% - cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=output -DCMAKE_MAKE_PROGRAM=ninja.exe -DQTROOT=%Qt6_DIR% -DMPV_INCLUDE_DIR=mpv/include -DMPV_LIBRARY=mpv/libmpv-2.dll -DCHECK_FOR_UPDATES=ON -DUSE_STATIC_MPVQT=ON .. - lib /def:mpv\mpv.def /out:mpv\libmpv-2.dll.lib /MACHINE:X86 - ninja - mkdir output 2>nul - copy ..\vc_redist.x86.exe output\ - ninja windows_package - shell: cmd - - name: Archive production artifacts - uses: actions/upload-artifact@v4 - with: - name: windows-x86 + name: ${{ matrix.artifact }} path: ${{ github.workspace }}/build/JellyfinDesktop-*.exe diff --git a/.gitignore b/.gitignore index 22fd345..4e8ea90 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +!/.github/ +!/.github/** *.pro.user* dependencies/* CMakeLists.txt.user