Files
Toastconcern--FrameStudio/.github/workflows/build.yml
T
ToastconcernandClaude Opus 4.8 c1ff887477 Remove the pc-streaming folder
Deletes pc-streaming/ (the experimental Windows D3D11 compositor proxy that
tried to make a home SteamVR's environment on a tethered PC, with its .def,
installer .ps1/.bat and notes) and everything that pointed at its files:

- CMakeLists: the frame-home-d3d11 proxy target.
- build-studio.sh: the Windows pc/ staging and the d3d11.dll build step.
- CI: the pc-home-windows job and the Windows Studio job's download/staging
  of FrameHome-PC-windows-x64.
- Studio: the Windows branch of the "This PC" installer (it ran the deleted
  .ps1); the feature is now Linux-only, where it installs the Vulkan layer.
- README and docs: the Windows PC download row, the PC-streaming highlight,
  and the dead Frame-Home-on-a-PC / pc-steamvr.md links.

FRAME_HOME_PC and the runtime OpenVR/Vulkan loader stay, so Frame Home still
builds for a PC; only the pc-streaming folder and its wiring are gone. The
Linux PC layer (layer/) and its install path are untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-21 23:59:40 -05:00

127 lines
4.8 KiB
YAML

# Builds Frame Studio for every computer it runs on, and the Frame Home installer, on every push (any branch or tag),
# every pull request, and by hand (Actions > build > Run workflow). Each build is a downloadable artifact of the run.
# A push to main also replaces the "latest" pre-release with them (one place to download the newest of everything);
# a tag "v*" publishes them as that version's release.
name: build
on:
push:
pull_request:
workflow_dispatch:
# A newer push to the same branch replaces a run still going (its builds would be out of date anyway).
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
jobs:
linux:
name: Linux ${{ matrix.arch }}
strategy:
fail-fast: false
matrix:
include:
- { arch: x64, runner: ubuntu-24.04, extra: "" }
- { arch: x86, runner: ubuntu-24.04, extra: "gcc-multilib g++-multilib" }
- { arch: arm64, runner: ubuntu-24.04-arm, extra: "" }
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
- name: Tools and X11 headers
run: |
sudo apt-get update
sudo apt-get install -y ninja-build cmake libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxkbcommon-dev ${{ matrix.extra }}
- name: Build
run: sh scripts/build-studio.sh linux-${{ matrix.arch }}
- uses: actions/upload-artifact@v4
with:
name: FrameStudio-linux-${{ matrix.arch }}
path: dist/FrameStudio-linux-${{ matrix.arch }}.tar.gz
windows:
name: Windows ${{ matrix.arch }}
strategy:
fail-fast: false
matrix:
arch: [x64, x86, arm64]
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Build (MSVC)
shell: cmd
run: studio\build_windows.bat ${{ matrix.arch }} "%GITHUB_WORKSPACE%\build\windows-${{ matrix.arch }}"
- name: Package
shell: pwsh
run: |
$name = "FrameStudio-windows-${{ matrix.arch }}"
$stage = "build/stage/$name"
New-Item -ItemType Directory -Force $stage | Out-Null
Copy-Item "build/windows-${{ matrix.arch }}/Frame Studio.exe" $stage
Copy-Item -Recurse "build/windows-${{ matrix.arch }}/frame" "$stage/frame"
Copy-Item LICENSE "$stage/LICENSE.txt"
New-Item -ItemType Directory -Force dist | Out-Null
Compress-Archive -Path $stage -DestinationPath "dist/$name.zip" -Force
- uses: actions/upload-artifact@v4
with:
name: FrameStudio-windows-${{ matrix.arch }}
path: dist/FrameStudio-windows-${{ matrix.arch }}.zip
macos:
name: macOS ${{ matrix.arch }}
strategy:
fail-fast: false
matrix:
include:
- { arch: arm64, runner: macos-14 }
- { arch: x64, runner: macos-13 }
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
- name: Tools and MoltenVK (Vulkan on Metal, bundled into the app)
run: brew install ninja molten-vk
- name: Build
run: sh scripts/build-studio.sh macos-${{ matrix.arch }}
- uses: actions/upload-artifact@v4
with:
name: FrameStudio-macos-${{ matrix.arch }}
path: dist/FrameStudio-macos-${{ matrix.arch }}.zip
frame-home:
name: Frame Home installer
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Package
run: sh scripts/build-studio.sh frame-home
- uses: actions/upload-artifact@v4
with:
name: FrameHome-installer
path: dist/FrameHome-installer.zip
release:
name: Publish
# (also when a platform failed: "latest" gets every build that worked; a version release needs them all)
if: ${{ !cancelled() && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') }}
needs: [linux, windows, macos, frame-home]
runs-on: ubuntu-24.04
permissions:
contents: write
env:
GH_TOKEN: ${{ github.token }}
REPO: ${{ github.repository }}
steps:
- uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
- name: Version release (tag v*)
if: ${{ startsWith(github.ref, 'refs/tags/v') && !contains(needs.*.result, 'failure') }}
run: gh release create "${{ github.ref_name }}" dist/* --repo "$REPO" --title "Frame Studio ${{ github.ref_name }}" --generate-notes
- name: Latest build (push to main)
if: github.ref == 'refs/heads/main'
run: |
gh release delete latest --repo "$REPO" --yes --cleanup-tag 2>/dev/null || true
gh release create latest dist/* --repo "$REPO" --prerelease --target "${{ github.sha }}" \
--title "Latest build (${GITHUB_SHA::7})" \
--notes "Built automatically from ${{ github.sha }} on $(date -u '+%Y-%m-%d %H:%M UTC'). Replaced by every push to main."