name: Build gamescope (patched) # The runtime's own gamescope (Arch Linux ARM's 3.16.29 package) rebuilt with the patches under # tools/gamescope/patches, in an Arch Linux ARM container on an arm64 runner, then published as a # release asset the apk build fetches (tools/gamescope/release.env names the tag and sha). The # hosted runtime image is never changed: the apk stages the binary over /usr/local/bin. on: push: paths: - 'tools/gamescope/**' - '.github/workflows/build-gamescope.yml' workflow_dispatch: inputs: tag: description: 'Release tag to publish as (e.g. gamescope-3.16.29-p1); empty = artifact only' required: false default: '' permissions: contents: write jobs: build: runs-on: ubuntu-24.04-arm timeout-minutes: 120 steps: - uses: actions/checkout@v4 - name: Build in Arch Linux ARM run: | set -euo pipefail docker run --rm -v "$PWD:/work" -w /work menci/archlinuxarm:base-devel bash tools/gamescope/build-in-arch.sh sudo chown -R "$(id -u):$(id -g)" . - uses: actions/upload-artifact@v4 with: name: gamescope-patched path: | gamescope.tzst gamescope.tzst.sha256 - name: Publish if: github.event_name == 'workflow_dispatch' && inputs.tag != '' env: GH_TOKEN: ${{ github.token }} run: | set -euo pipefail gh release create "${{ inputs.tag }}" --title "${{ inputs.tag }}" --notes "gamescope 3.16.29 with tools/gamescope/patches; staged by the apk over /usr/local/bin/gamescope. sha256 $(cut -d' ' -f1 gamescope.tzst.sha256)" gamescope.tzst gamescope.tzst.sha256 || gh release upload "${{ inputs.tag }}" gamescope.tzst gamescope.tzst.sha256 --clobber