8 Commits
Author SHA1 Message Date
Jarosław MrowiecandClaude Opus 5.5 7baeef8ca8 build-proton: leave the downloaded prebuilt binaries out of the source archive
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 20:19:55 +00:00
Jarosław MrowiecandClaude Opus 5.5 d186a559c5 Publish license texts and the corresponding source with the binaries
- build-proton.sh collects the license files of all Proton submodules and
  of the archives the Proton build downloads into licenses/ in the tool
  directory, and the corresponding source into out/proton/sources:
  Proton with all submodules as built, the source archives fetched during
  the build (espeak-ng, piper-phonemize, fmt, spdlog) and the sources of
  the prebuilt components (wine-mono, wine-gecko, xalia).
  --no-sources skips the sources for local tests.
- build-turnip.sh adds Mesa's licenses/ directory.
- package.sh publishes proton-src-<ver>.tar.xz and
  proton-src-downloads-<ver>.tar.
- build.yml passes the outputs between jobs as zstd archives.
- README describes where the license texts and sources are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 18:59:14 +00:00
Jarosław MrowiecandClaude Opus 5.5 00610086ae Replace the full installer with install-min.sh and uninstall-min.sh
The minimal scripts are all that is needed on Steam Frame (tested on the
device: Steam keeps the changes when it is restarted, and naming the
Battle.net shortcut "WoW Forever" works). Remove install.sh,
tools/steam_shortcuts.py and their tests.

- uninstall-min.sh removes Proton and Turnip, our variables from the
  launch options of any shortcut that uses them (found by the variables,
  so renamed shortcuts are found too) and the compatibility tool
  mappings to proton_frame_fixes.
- package.sh publishes install-min.sh (with VER= set to the packaged
  version) and uninstall-min.sh instead of install.sh.
- tests/test_install_min.sh covers packaging, install, reinstall,
  uninstall (after a rename, and twice) and a missing shortcut, with
  helpers in tests/vdf.py.
- README describes the minimal flow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 11:33:21 +00:00
Jarosław MrowiecandClaude Opus 5.5 a06e814b22 build-proton: accept the internal tool name set by configure.sh
configure.sh sets INTERNAL_TOOL_NAME to the build name itself, not to
"<build name>-proton" (the Makefile.in default), so the rename to
proton_frame_fixes did not match and the verification failed after a
successful build. Accept both forms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:50:57 +00:00
Jarosław MrowiecandClaude Opus 5.5 54badce480 build-proton: fetch history of submodules that need git describe
Proton's Makefile runs `git describe` in FEX (required) and in dxvk and
vkd3d-proton (for version strings). The shallow submodule clone has no
tags, so the FEX step failed with "No names found, cannot describe
anything". Unshallow these three submodules and fetch their tags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:16:23 +00:00
Jarosław MrowiecandClaude Opus 5.5 c305f05316 Add install.sh for Steam Frame with an end-to-end test
install.sh downloads a release (or uses --from-dir), verifies it against
SHA256SUMS, installs Proton into compatibilitytools.d and Turnip into
~/.local/share/steam-frame-fixes with an ICD manifest that points to it,
and prints the launch options to use. Optionally it sets the launch
options and the compatibility tool of matching non-Steam shortcuts
(only while Steam is closed), remembering what it changed so that
--uninstall can undo it exactly. --doctor shows the installation state
and which Vulkan driver the last Proton logs used.

tests/test_install.sh runs the whole cycle in a fake home directory
with release files built by scripts/package.sh and synthetic Steam
files. package.sh now also publishes steam_shortcuts.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:08:23 +00:00
Jarosław MrowiecandClaude Opus 5.5 a42526341f Add build and packaging scripts
- scripts/build-turnip.sh: build Turnip from upstream Mesa plus
  patches/mesa in the Steam Runtime 4 arm64 SDK container; verifies the
  result (aarch64 ELF, no unresolved libraries, patch strings) and writes
  an ICD template with @LIBPATH@ and a BUILDINFO file. --emulate allows a
  slow build on x86_64 hosts through qemu-user.
- scripts/build-proton.sh: build Proton ARM64 with patches/wine applied
  (make redist), set the display and internal tool names, and verify that
  ntdll.dll contains the 0x7ffe1000 dispatcher literal. Re-running resumes
  an interrupted build; --skip-build only re-runs the final steps.
- scripts/package.sh: create reproducible release tarballs (Proton,
  Turnip, patched Wine sources for LGPL compliance) and SHA256SUMS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:03:54 +00:00
Jarosław MrowiecandClaude Opus 5.5 b33fe9b988 Add Wine and Mesa patches with an apply check
- wine: use a fixed address for the syscall dispatcher pointer on
  aarch64, so copies of the syscall thunks keep working (fixes the
  anti-tamper crash of the native ARM64 World of Warcraft client)
- mesa/tu: fail pipeline creation instead of crashing when ir3 fails
  to compile a shader
- mesa/ir3: log which compiler stage failed

scripts/check-patches.sh fetches the pinned Wine and Mesa commits and
verifies that the patches apply cleanly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:58:32 +00:00