- 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>
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>
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>
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>
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>
- 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>
- 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>