tmp: try fix windows ci #978
This file contains hidden or 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 | |
| on: [push] | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04, macos-14, windows-2022] | |
| build-type: [Release] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Add GCC repository | |
| if: runner.os == 'Linux' | |
| run: | | |
| for i in {1..5}; do | |
| sudo apt-get update && sudo apt-get install -y software-properties-common && break || sleep 10 | |
| done | |
| sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
| - name: Install Linux dependencies | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libx11-dev \ | |
| libxcursor-dev \ | |
| libxinerama-dev \ | |
| libxi-dev \ | |
| libxrandr-dev \ | |
| libgl1-mesa-dev \ | |
| libncurses6 \ | |
| gcc-13 g++-13 \ | |
| libfontconfig1-dev \ | |
| autoconf automake libtool pkg-config libltdl-dev \ | |
| libnotify-dev | |
| - name: Install GCC | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100 --slave /usr/bin/g++ g++ /usr/bin/g++-13 --slave /usr/bin/gcov gcov /usr/bin/gcov-13 | |
| sudo update-alternatives --set gcc /usr/bin/gcc-13 | |
| - name: Install Ninja | |
| uses: seanmiddleditch/gha-setup-ninja@master | |
| with: | |
| version: 1.12.1 | |
| # - name: Cache dependencies (macOS) | |
| # uses: actions/cache@v4 | |
| # if: runner.os == 'macOS' | |
| # with: | |
| # path: dependencies | |
| # key: ${{ runner.os }}-dependencies | |
| - name: Collect dependencies (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| brew install ffmpeg libass zimg imagemagick autoconf automake libtool gcc ffmpeg llvm@20 meson xxhash vapoursynth fftw dylibbundler | |
| cd ci | |
| bash build-dependencies-macos.sh | |
| - name: Collect dependencies (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| cd ci | |
| pwsh build-dependencies-windows.ps1 | |
| - name: Collect dependencies (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| cd ci | |
| bash build-dependencies-linux.sh | |
| - name: Set up vcpkg | |
| shell: bash | |
| run: | | |
| git clone https://github.com/microsoft/vcpkg.git | |
| cd vcpkg | |
| ./bootstrap-vcpkg.sh | |
| - name: Cache vcpkg packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| vcpkg_installed/ | |
| vcpkg/downloads/ | |
| vcpkg/packages/ | |
| key: vcpkg-${{ runner.os }}-${{ runner.arch }}-${{ matrix.build-type }}-${{ steps.vcpkg-commit.outputs.hash }}-${{ hashFiles('vcpkg.json') }} | |
| restore-keys: | | |
| vcpkg-${{ runner.os }}-${{ runner.arch }}-${{ matrix.build-type }}-${{ steps.vcpkg-commit.outputs.hash }}- | |
| vcpkg-${{ runner.os }}-${{ runner.arch }}-${{ matrix.build-type }}- | |
| - name: Determine CMake Preset | |
| id: select-preset | |
| run: | | |
| if [ "${{ runner.os }}" == "Windows" ]; then | |
| prefix="win" | |
| elif [ "${{ runner.os }}" == "Linux" ]; then | |
| prefix="linux" | |
| elif [ "${{ runner.os }}" == "macOS" ]; then | |
| prefix="mac" | |
| fi | |
| preset="${prefix}-$(echo "${{ matrix.build-type }}" | tr '[:upper:]' '[:lower:]')" | |
| echo "preset=$preset" >> $GITHUB_OUTPUT | |
| shell: bash | |
| - name: Use Developer Command Prompt for Microsoft Visual C++ | |
| if: runner.os == 'Windows' | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Configure CMake | |
| run: cmake --preset ${{ steps.select-preset.outputs.preset }} | |
| env: | |
| VCPKG_ROOT: ${{ github.workspace }}/vcpkg | |
| - name: Build | |
| run: cmake --build . --preset ${{ steps.select-preset.outputs.preset }} | |
| env: | |
| VCPKG_ROOT: ${{ github.workspace }}/vcpkg | |
| - name: Prepare Binaries | |
| id: prep | |
| shell: bash | |
| run: | | |
| # Set up variables | |
| build_dir="bin/${{ matrix.build-type }}" | |
| os="${{ runner.os }}" | |
| config="${{ runner.os }}-${{ matrix.build-type }}-$(echo "${{ runner.arch }}" | tr '[:upper:]' '[:lower:]')" | |
| cd "$build_dir" | |
| # Platform-specific packaging | |
| case "$os" in | |
| "Windows") | |
| mv blur-cli.exe "blur-cli-$config.exe" | |
| mv blur-gui.exe "blur-$config.exe" | |
| files=( | |
| "$PWD/blur-cli-$config.exe" | |
| "$PWD/blur-$config.exe" | |
| ) | |
| ls -la | |
| # Prepare dependencies for installer | |
| cd ../../ | |
| cp -r ci/out/* installer/dependencies/lib | |
| curl -L https://aka.ms/vs/17/release/vc_redist.x64.exe -o installer/redist/vc_redist.x64.exe | |
| cp "$build_dir/blur-cli-$config.exe" installer/resources/blur-cli.exe | |
| cp "$build_dir/blur-$config.exe" installer/resources/blur-gui.exe | |
| # Build installer | |
| iscc installer/setup.iss | |
| mv installer/output/blur-installer.exe installer/output/blur-Windows-Installer-x64.exe | |
| ls -la | |
| ls -la installer | |
| ls -la installer/output | |
| files+=( | |
| "$PWD/installer/output/blur-Windows-Installer-x64.exe" | |
| ) | |
| ;; | |
| "Linux") | |
| mkdir -p package | |
| mv blur-cli "package/blur-cli-$config" | |
| mv blur "package/blur-$config" | |
| mv lib/ package/ | |
| cp -r ../../ci/out/* package/ | |
| archive="blur-$config.tar.gz" | |
| tar -czf "$archive" -C package . | |
| rm -rf package | |
| files=( | |
| "$PWD/$archive" | |
| ) | |
| ;; | |
| "macOS") | |
| mv blur-cli "blur-cli-$config" | |
| tar -czf "blur-cli-$config.tar.gz" "blur-cli-$config" | |
| brew install create-dmg | |
| mkdir source_folder && mv blur.app source_folder/ | |
| dmg="blur-$config.dmg" | |
| create-dmg \ | |
| --volname "Blur Installer" \ | |
| --window-pos 200 120 \ | |
| --window-size 600 400 \ | |
| --icon-size 100 \ | |
| --icon "blur.app" 175 120 \ | |
| --hide-extension "blur.app" \ | |
| --app-drop-link 425 120 \ | |
| "$dmg" source_folder | |
| files=( | |
| "$PWD/blur-cli-$config.tar.gz" | |
| "$PWD/$dmg" | |
| ) | |
| ;; | |
| esac | |
| echo "build_dir=$build_dir" >> $GITHUB_OUTPUT | |
| echo "config=$config" >> $GITHUB_OUTPUT | |
| echo "files<<EOF" >> $GITHUB_OUTPUT | |
| printf "%s\n" "${files[@]}" >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Blur-${{ steps.prep.outputs.config }} | |
| path: | | |
| ${{ steps.prep.outputs.files }} | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
| with: | |
| files: | | |
| ${{ steps.prep.outputs.files }} |