Increase default player highlight intensities #17
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: release | |
| permissions: | |
| contents: read | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| FNQ3_LINUX_GLIBC_MAX: "2.31" | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| jobs: | |
| prepare: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| build_number: ${{ steps.meta.outputs.build_number }} | |
| build_date: ${{ steps.meta.outputs.build_date }} | |
| base_version: ${{ steps.meta.outputs.base_version }} | |
| version_string: ${{ steps.meta.outputs.version_string }} | |
| head_commit: ${{ steps.meta.outputs.head_commit }} | |
| head_commit_short: ${{ steps.meta.outputs.head_commit_short }} | |
| previous_release_commit: ${{ steps.meta.outputs.previous_release_commit }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| - name: Fetch tags | |
| run: git fetch --force --tags origin | |
| - name: Resolve release metadata | |
| id: meta | |
| run: | | |
| python scripts/manual_release.py github-output --build-date "$(date -u +%F)" >> "$GITHUB_OUTPUT" | |
| - name: Summarize | |
| run: | | |
| echo "Release build metadata resolved" | |
| echo "Base version: ${{ steps.meta.outputs.base_version }}" | |
| echo "Build version: ${{ steps.meta.outputs.version_string }}" | |
| echo "Head commit: ${{ steps.meta.outputs.head_commit }}" | |
| echo "Previous release commit: ${{ steps.meta.outputs.previous_release_commit }}" | |
| windows-msys32: | |
| needs: [prepare] | |
| name: Build Windows-msys32 ${{ matrix.arch }} | |
| runs-on: windows-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86_64] | |
| include: | |
| - arch: x86 | |
| msystem: MINGW32 | |
| - arch: x86_64 | |
| msystem: MINGW64 | |
| steps: | |
| - name: Checkout current repo | |
| uses: actions/checkout@v6 | |
| - uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: ${{ matrix.msystem }} | |
| update: true | |
| install: git | |
| pacboy: >- | |
| toolchain:p | |
| meson:p | |
| ninja:p | |
| - name: Stamp release build version | |
| shell: msys2 {0} | |
| run: python scripts/manual_release.py stamp-version --build-number ${{ needs.prepare.outputs.build_number }} | |
| - name: Build | |
| shell: msys2 {0} | |
| run: | | |
| mkdir -p bin | |
| meson setup meson/build-${{ matrix.arch }} \ | |
| --buildtype=release \ | |
| --prefix "$PWD/bin" \ | |
| -Dcurl=enabled \ | |
| -Dcurl-dlopen=false \ | |
| -Dsdl=disabled \ | |
| -Drenderer-dlopen=true \ | |
| -Drenderers=opengl,glx,vulkan \ | |
| -Drenderer-default=opengl \ | |
| -Daudio-tests=false \ | |
| -Dglx-tests=false \ | |
| -Dlibjpeg-turbo:simd=disabled | |
| meson compile -C meson/build-${{ matrix.arch }} | |
| meson install -C meson/build-${{ matrix.arch }} --no-rebuild | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: windows-mingw-${{ matrix.arch }} | |
| path: bin | |
| if-no-files-found: error | |
| retention-days: 5 | |
| windows-msvc: | |
| needs: [prepare] | |
| name: Build Windows-MSVC ${{ matrix.arch }} | |
| runs-on: windows-2022 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [arm64, x86, x64] | |
| include: | |
| - arch: arm64 | |
| vs_arch: arm64 | |
| pkg_suffix: arm64 | |
| - arch: x86 | |
| vs_arch: x86 | |
| pkg_suffix: x86 | |
| - arch: x64 | |
| vs_arch: x64 | |
| pkg_suffix: x86_64 | |
| steps: | |
| - uses: microsoft/setup-msbuild@v3 | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Stamp release build version | |
| run: python scripts/manual_release.py stamp-version --build-number ${{ needs.prepare.outputs.build_number }} | |
| - name: Install Meson | |
| run: python -m pip install meson ninja | |
| - name: Build | |
| shell: cmd | |
| run: | | |
| if not exist bin mkdir bin | |
| for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do set VSINSTALL=%%i | |
| call "%VSINSTALL%\Common7\Tools\VsDevCmd.bat" -arch=${{ matrix.vs_arch }} -host_arch=x64 || exit /b | |
| if /I "${{ matrix.arch }}"=="arm64" ( | |
| meson setup meson\build-${{ matrix.arch }} --cross-file scripts\windows-arm64-cross.ini --buildtype=release --prefix "%CD%\bin" -Dcurl=enabled -Dcurl-dlopen=false -Dsdl=disabled -Drenderer-dlopen=true -Drenderers=opengl,glx,vulkan -Drenderer-default=opengl -Daudio-tests=false -Dglx-tests=false -Dlibjpeg-turbo:simd=disabled || exit /b | |
| ) else ( | |
| meson setup meson\build-${{ matrix.arch }} --buildtype=release --prefix "%CD%\bin" -Dcurl=enabled -Dcurl-dlopen=false -Dsdl=disabled -Drenderer-dlopen=true -Drenderers=opengl,glx,vulkan -Drenderer-default=opengl -Daudio-tests=false -Dglx-tests=false -Dlibjpeg-turbo:simd=disabled || exit /b | |
| ) | |
| meson compile -C meson\build-${{ matrix.arch }} || exit /b | |
| meson install -C meson\build-${{ matrix.arch }} --no-rebuild || exit /b | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: windows-msvc-${{ matrix.pkg_suffix }} | |
| path: bin | |
| if-no-files-found: error | |
| retention-days: 5 | |
| meson-validation: | |
| needs: [prepare] | |
| name: Meson build validation | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Install tools | |
| run: | | |
| sudo apt-get -qq update | |
| sudo apt-get -y install meson ninja-build gcc g++ libcurl4-openssl-dev libjpeg-dev libogg-dev libvorbis-dev mesa-common-dev libx11-dev libxext-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound2-dev libopenal-dev | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Stamp release build version | |
| run: python scripts/manual_release.py stamp-version --build-number "${{ needs.prepare.outputs.build_number }}" | |
| - name: Configure Meson build | |
| run: | | |
| meson setup meson/build \ | |
| --buildtype=release \ | |
| -Dsdl=disabled \ | |
| -Dcurl=disabled \ | |
| -Drenderer-dlopen=true \ | |
| -Drenderers=opengl,glx,vulkan,opengl2 \ | |
| -Drenderer-default=opengl | |
| - name: Build Meson targets | |
| run: meson compile -C meson/build | |
| - name: Run Meson tests | |
| run: meson test -C meson/build --print-errorlogs | |
| ubuntu-x86: | |
| needs: [prepare] | |
| name: Build Ubuntu ${{ matrix.arch }} | |
| runs-on: ubuntu-24.04 | |
| container: | |
| image: ubuntu:20.04 | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86, x86_64] | |
| include: | |
| - arch: x86 | |
| rule: install | |
| use_sdl: USE_SDL=0 | |
| - arch: x86_64 | |
| rule: install | |
| use_sdl: USE_SDL=0 | |
| steps: | |
| - name: Install tools | |
| run: | | |
| if [ "${{ matrix.arch }}" = "x86" ]; then | |
| dpkg --add-architecture i386 | |
| apt-get -qq update | |
| apt-get -y install git make python3 binutils gcc-multilib g++-multilib libcurl4-openssl-dev:i386 libjpeg-dev:i386 libogg-dev:i386 libvorbis-dev:i386 mesa-common-dev:i386 libxxf86dga-dev:i386 libxrandr-dev:i386 libxxf86vm-dev:i386 libasound2-dev:i386 libopenal-dev:i386 | |
| else | |
| apt-get -qq update | |
| apt-get -y install git make python3 binutils gcc g++ libcurl4-openssl-dev libjpeg-dev libogg-dev libvorbis-dev mesa-common-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound2-dev libopenal-dev | |
| fi | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Stamp release build version | |
| run: python3 scripts/manual_release.py stamp-version --build-number "${{ needs.prepare.outputs.build_number }}" | |
| - name: Build | |
| run: | | |
| make ${{ matrix.rule }} -j$(nproc) ARCH=${{ matrix.arch }} COMPILE_ARCH=${{ matrix.arch }} CC=gcc DESTDIR=bin ${{ matrix.use_sdl }} USE_RENDERER_DLOPEN=1 USE_OPENGL=1 USE_GLX=1 USE_VULKAN=1 | |
| - name: Check glibc baseline | |
| run: python3 scripts/check_elf_glibc.py --max-glibc "$FNQ3_LINUX_GLIBC_MAX" --require-elf bin | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: linux-${{ matrix.arch }} | |
| path: bin | |
| if-no-files-found: error | |
| retention-days: 5 | |
| ubuntu-arm64: | |
| needs: [prepare] | |
| name: Build Ubuntu arm64 | |
| runs-on: ubuntu-22.04-arm | |
| container: | |
| image: ubuntu:20.04 | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| steps: | |
| - name: Install tools | |
| run: | | |
| apt-get -qq update | |
| apt-get install -y git make python3 binutils gcc g++ | |
| apt-get -y install libcurl4-openssl-dev libjpeg-dev libogg-dev libvorbis-dev mesa-common-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound2-dev libopenal-dev | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Stamp release build version | |
| run: python3 scripts/manual_release.py stamp-version --build-number "${{ needs.prepare.outputs.build_number }}" | |
| - name: Build | |
| run: | | |
| make install -j$(nproc) ARCH=aarch64 COMPILE_ARCH=aarch64 CC=gcc DESTDIR=bin USE_SDL=0 USE_RENDERER_DLOPEN=1 USE_OPENGL=1 USE_GLX=1 USE_VULKAN=1 | |
| - name: Check glibc baseline | |
| run: python3 scripts/check_elf_glibc.py --max-glibc "$FNQ3_LINUX_GLIBC_MAX" --require-elf bin | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: linux-arm64 | |
| path: bin | |
| if-no-files-found: error | |
| retention-days: 5 | |
| macos-x86: | |
| needs: [prepare] | |
| name: Build macOS ${{ matrix.arch }} | |
| runs-on: macos-14 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [x86_64, aarch64] | |
| steps: | |
| - name: Install tools | |
| run: | | |
| for pkg in coreutils jpeg libogg libvorbis make openal-soft pkg-config sdl3; do | |
| brew list --versions "$pkg" >/dev/null 2>&1 || brew install "$pkg" | |
| done | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Stamp release build version | |
| run: python3 scripts/manual_release.py stamp-version --build-number "${{ needs.prepare.outputs.build_number }}" | |
| - name: Build | |
| run: | | |
| BREW_PREFIX="$(brew --prefix)" | |
| export PKG_CONFIG_PATH="${BREW_PREFIX}/lib/pkgconfig:${BREW_PREFIX}/share/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}" | |
| OPENAL_CFLAGS="$(pkg-config --cflags openal)" \ | |
| SDL_INCLUDE="$(pkg-config --cflags-only-I sdl3)" \ | |
| SDL_LIBS="$(pkg-config --libs sdl3)" \ | |
| JPEG_CFLAGS="$(pkg-config --cflags libjpeg)" \ | |
| JPEG_LIBS="$(pkg-config --libs libjpeg)" \ | |
| OGG_CFLAGS="$(pkg-config --cflags ogg)" \ | |
| OGG_LIBS="$(pkg-config --libs ogg)" \ | |
| VORBIS_CFLAGS="$(pkg-config --cflags vorbisfile)" \ | |
| VORBIS_LIBS="$(pkg-config --libs vorbisfile)" \ | |
| gmake install -j$(sysctl -n hw.logicalcpu) ARCH=${{ matrix.arch }} CC=clang DESTDIR=bin INSTALL=ginstall USE_LOCAL_HEADERS=0 USE_SYSTEM_JPEG=1 USE_SYSTEM_OGG=1 USE_SYSTEM_VORBIS=1 USE_RENDERER_DLOPEN=1 USE_OPENGL=1 USE_GLX=1 USE_VULKAN=1 STRIP=echo | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: macos-${{ matrix.arch }} | |
| path: bin | |
| if-no-files-found: error | |
| retention-days: 5 | |
| push-build-validation: | |
| if: github.event_name == 'push' && always() | |
| needs: [prepare, windows-msys32, windows-msvc, meson-validation, ubuntu-x86, ubuntu-arm64, macos-x86] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check platform build results | |
| env: | |
| NEEDS_JSON: ${{ toJson(needs) }} | |
| run: | | |
| python - <<'PY' | |
| import json | |
| import os | |
| import sys | |
| needs = json.loads(os.environ["NEEDS_JSON"]) | |
| failed = { | |
| name: data["result"] | |
| for name, data in needs.items() | |
| if data["result"] != "success" | |
| } | |
| if failed: | |
| for name, result in failed.items(): | |
| print(f"{name}: {result}") | |
| sys.exit(1) | |
| print("All push build validations passed.") | |
| PY | |
| publish: | |
| if: github.event_name == 'workflow_dispatch' | |
| needs: [prepare, windows-msys32, windows-msvc, meson-validation, ubuntu-x86, ubuntu-arm64, macos-x86] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| models: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| - name: Fetch tags | |
| run: git fetch --force --tags origin | |
| - name: Stamp release build version | |
| run: python scripts/manual_release.py stamp-version --build-number "${{ needs.prepare.outputs.build_number }}" | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| path: artifacts | |
| - name: Resolve release version metadata | |
| run: | | |
| python scripts/version.py github-env --channel manual --build-number "${{ needs.prepare.outputs.build_number }}" --build-date "${{ needs.prepare.outputs.build_date }}" --commit "${{ needs.prepare.outputs.head_commit }}" >> "$GITHUB_ENV" | |
| - name: Package release archives | |
| run: | | |
| python scripts/release.py --channel manual --artifact-root artifacts --build-number "${{ needs.prepare.outputs.build_number }}" --build-date "${{ needs.prepare.outputs.build_date }}" --commit "${{ needs.prepare.outputs.head_commit }}" | |
| - name: Build release notes | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| FROM_ARGS=() | |
| if [ -n "${{ needs.prepare.outputs.previous_release_commit }}" ]; then | |
| FROM_ARGS+=(--from-commit "${{ needs.prepare.outputs.previous_release_commit }}") | |
| fi | |
| python scripts/manual_release.py release-notes \ | |
| --build-number "${{ needs.prepare.outputs.build_number }}" \ | |
| --build-date "${{ needs.prepare.outputs.build_date }}" \ | |
| --to-commit "${{ needs.prepare.outputs.head_commit }}" \ | |
| "${FROM_ARGS[@]}" \ | |
| --output .tmp/release-notes.md | |
| - name: Create release | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| gh release create "${FNQ3_RELEASE_TAG}" \ | |
| .install/packages/*.zip \ | |
| .install/release-manifest.json \ | |
| .install/SHA256SUMS.txt \ | |
| --target "${{ needs.prepare.outputs.head_commit }}" \ | |
| --title "${FNQ3_RELEASE_TITLE}" \ | |
| --notes-file .tmp/release-notes.md |