feat(linux): install the Linux builder's build tools from the tools.lock inside its AppImage #4
No reviewers
Labels
No labels
area/build
area/install
area/saves
area/ui
area/updates
good first issue
gpu/amd
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
platform/linux
platform/steam-deck
platform/windows
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/LongshotLauncher!4
Loading…
Reference in a new issue
No description provided.
Delete branch "HumanBean/LongshotLauncher:linux-tools-lock"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Longshot's Linux AppImage is dropping its bundled build tools, so the launcher has to install them itself. Without this change, a Linux build started from the launcher would find no compiler (MagicBeanDev/Longshot#113).
What changed
Core/Toolchains.cs,InstallAppImageAsync: after unpacking the AppImage, it readsusr/share/longshot/tools.lockinside it and installs itslinux-x64lines (InstallTools). The file is covered by the AppImage's checksum in the signedSHA256SUMS.Reuse: hard links, as on Windows) or downloaded from its first URL that gives the right size and SHA-256, then unpacked at itsdestbeside the AppImage (Unpack: modes and relative links).toolchain.json, so the next version can reuse it.tools.lockinside installs nothing more, as before.Core/MakeGameCommand.cs: on Linux,LONGSHOT_SDL2isusr/lib/longshot/sdl2/libSDL2-2.0.so.0when that folder exists (tools.lock'ssdl2), else the oldusr/lib/longshot/libSDL2-2.0.so.0. The other variables already point at the tools' dests: emsdk, sysroot and ffmpeg inusr/lib/longshot/, and the headers inusr/share/longshot/cpm, whichnx2/build.pyfinds by itself.ToolsLock.cs,ToolsSource.csandPartsManifest.cs.docs/releases.md,RELEASING.md: byte-identical with MagicBeanDev/Longshot#113. They cover the Linux tools intools.lock, the tools as generic packages, and the optional profile. The 5 shared files are identical across the two branches (cmp).Flags and settings
None.
Measurements
No runtime change to measure. The sizes involved (an AppImage of 94.6 MB instead of 244.7 MB, plus 170.4 MB of tools downloaded once and shared across versions) are in MagicBeanDev/Longshot#113.
Testing
Tested:
python3 -I tests/test_launcher_core.py --strict --longshot <Longshot's PR branch>inmcr.microsoft.com/dotnet/sdk:10.0: 524 checks passed. New checks inScreenChecks.cs, using authored zips and a fake forge:make_game.pygetsEMSDKand the newLONGSHOT_SDL2;.partfolder.tests/test_release.py: OK.dotnet build App -c Release: 0 warnings, 0 errors.Not tested: the launcher's window with a real Longshot release of the new AppImage: none is released yet.
Needs other testers:
Screenshots
Nothing on screen (the step 1 bar's texts only).
Risk and rollback
Only the Linux install of a version with a
tools.lockinside its AppImage changes. Reverting is enough. This must be released before Longshot ships an AppImage without its tools.Checklist
main.