mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-23 00:53:02 -05:00
The bundled SDL builds its PipeWire, PulseAudio and ALSA drivers only when their development files are found, and otherwise keeps just the silent dummy and disk drivers without an error. The Linux CI and release jobs install none of them, so the v0.1.1 Linux libraries (libSceAudioOut, libSceAgcDriver, libfmod) contain no audible driver. Fail configuration on Linux when SDL found none of the three, install the Debian development packages in the Linux build and release jobs, and list the packages in the build instructions.
137 lines
4.9 KiB
YAML
137 lines
4.9 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags: ['v*']
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: release-${{ github.ref }}
|
|
cancel-in-progress: false
|
|
|
|
env:
|
|
RELEASE_TAG: ${{ github.ref_name }}
|
|
CONFIGURE: >-
|
|
-G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON
|
|
-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
|
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
|
WINLIBS_RELEASE: 15.2.0posix-14.0.0-ucrt-r7
|
|
WINLIBS_ZIP: winlibs-x86_64-posix-seh-gcc-15.2.0-mingw-w64ucrt-14.0.0-r7.zip
|
|
|
|
jobs:
|
|
build:
|
|
name: Build and test (${{ matrix.platform }})
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
include:
|
|
- platform: linux
|
|
runner: ubuntu-latest
|
|
timeout: 30
|
|
- platform: windows
|
|
runner: windows-latest
|
|
timeout: 45
|
|
runs-on: ${{ matrix.runner }}
|
|
timeout-minutes: ${{ matrix.timeout }}
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
- id: toolchain
|
|
if: matrix.platform == 'windows'
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: C:\winlibs
|
|
key: ${{ env.WINLIBS_ZIP }}
|
|
- if: matrix.platform == 'windows' && steps.toolchain.outputs.cache-hit != 'true'
|
|
env:
|
|
SSL_CERT_FILE: 'C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt'
|
|
run: |
|
|
curl -sSfL -o "$RUNNER_TEMP/winlibs.zip" "https://github.com/brechtsanders/winlibs_mingw/releases/download/$WINLIBS_RELEASE/$WINLIBS_ZIP"
|
|
7z x "$RUNNER_TEMP/winlibs.zip" -oC:/winlibs
|
|
- if: matrix.platform == 'windows'
|
|
run: echo 'C:\winlibs\mingw64\bin' >> "$GITHUB_PATH"
|
|
- uses: hendrikmuhs/ccache-action@v1.2.24
|
|
with:
|
|
key: ${{ matrix.platform }}
|
|
save: false
|
|
- name: Install lavapipe for the GPU execution tests and the audio development files
|
|
if: matrix.platform == 'linux'
|
|
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends libvulkan1 mesa-vulkan-drivers libpipewire-0.3-dev libpulse-dev libasound2-dev
|
|
- name: Configure Linux
|
|
if: matrix.platform == 'linux'
|
|
run: cmake -S . -B build $CONFIGURE
|
|
- name: Configure Windows
|
|
if: matrix.platform == 'windows'
|
|
shell: cmd
|
|
env:
|
|
SSL_CERT_FILE: 'C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt'
|
|
run: cmake -S . -B build %CONFIGURE%
|
|
- name: Build project and tests (Linux)
|
|
if: matrix.platform == 'linux'
|
|
run: cmake --build build
|
|
- name: Build project and tests (Windows)
|
|
if: matrix.platform == 'windows'
|
|
shell: cmd
|
|
run: cmake --build build
|
|
- name: Run tests (Linux)
|
|
if: matrix.platform == 'linux'
|
|
run: ctest --test-dir build --output-on-failure --timeout 120 --stop-on-failure --no-tests=error
|
|
env:
|
|
ANYPS5_REQUIRE_VULKAN: 1
|
|
GALLIUM_OVERRIDE_CPU_CAPS: avx
|
|
- name: Run tests (Windows)
|
|
if: matrix.platform == 'windows'
|
|
shell: cmd
|
|
run: ctest --test-dir build --output-on-failure --timeout 120 --stop-on-failure --no-tests=error
|
|
- name: Build patched libraries (Linux)
|
|
if: matrix.platform == 'linux'
|
|
run: cmake --build build --target libs
|
|
- name: Build patched libraries (Windows)
|
|
if: matrix.platform == 'windows'
|
|
shell: cmd
|
|
run: cmake --build build --target libs
|
|
- name: Package release files
|
|
run: python tools/package_release.py --platform "${{ matrix.platform }}" --build build --output dist --version "$RELEASE_TAG"
|
|
- uses: actions/upload-artifact@v7
|
|
with:
|
|
name: release-${{ matrix.platform }}
|
|
path: dist/*
|
|
if-no-files-found: error
|
|
compression-level: 0
|
|
|
|
publish:
|
|
name: Publish release
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
permissions:
|
|
contents: write
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
GH_REPO: ${{ github.repository }}
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- uses: actions/download-artifact@v8
|
|
with:
|
|
pattern: release-*
|
|
merge-multiple: true
|
|
path: dist
|
|
- name: Check release files and collect documentation
|
|
shell: bash
|
|
run: |
|
|
for file in "prx-windows-$RELEASE_TAG.zip" "prx-windows-$RELEASE_TAG.tar.gz" "prx-linux-$RELEASE_TAG.zip" "prx-linux-$RELEASE_TAG.tar.gz" "relinker-$RELEASE_TAG.exe" "relinker-$RELEASE_TAG"; do
|
|
test -s "dist/$file"
|
|
done
|
|
python tools/package_release.py --docs docs/user --output dist
|
|
chmod +x "dist/relinker-$RELEASE_TAG"
|
|
- name: Create draft and upload files
|
|
run: gh release create "$RELEASE_TAG" dist/* --verify-tag --draft --title "$RELEASE_TAG" --generate-notes
|
|
- name: Publish complete release
|
|
run: gh release edit "$RELEASE_TAG" --draft=false
|