fix(linux): unpack the builder's AppImage, not the launcher, under AppImageLauncher #82
No reviewers
Labels
No labels
area/build
area/install
area/saves
area/ui
area/updates
ci: approved
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
ci: approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/LongshotLauncher!82
Loading…
Reference in a new issue
No description provided.
Delete branch "HumanBean/LongshotLauncher:fix/appimagelauncher-target-appimage"
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?
On Linux with AppImageLauncher, installing a builder unpacks the launcher itself into the toolchain folder, so the version shows "Can't be read". It never fixes itself, because
toolchain.jsonrecords the builder's SHA. rc.4's magic-clearing fix (ff78d8b) isn't enough on its own.Why it happens: AppImageLauncher starts AppImages through binfmt-bypass, which sets
TARGET_APPIMAGE=<launcher's AppImage>. AppImageKit's runtime mounts or extractsTARGET_APPIMAGEwhen it is set, not itself (appimage_path = getenv("TARGET_APPIMAGE")inruntime.c). The launcher removedAPPIMAGEandAPPDIRbefore starting the builder's--appimage-extract, but notTARGET_APPIMAGE, so the builder's runtime quietly extracted the launcher's squashfs. You can reproduce it without the launcher:What changed
Core/Toolchains.cs: the newWithoutOurAppImageremovesAPPIMAGE,APPDIRandTARGET_APPIMAGEfrom the environment.ExtractAppImageuses it.Core/SelfUpdate.cs:SelfCheckAsyncuses it too. Otherwise, under AppImageLauncher, the staged new launcher's--self-checkcould run the old launcher and answer with the old tag.Core/Toolchains.cs: an unpacked AppImage that holdsusr/bin/LongshotLauncher(the launcher's program,scripts/package.sh) is refused with an error instead of being installed. A Linux version folder that already holds it no longer counts as installed (Read), so broken installs from rc.4 and earlier get installed again the next time they are needed.Tested (CachyOS, Linux 7.3)
python -I tests/test_launcher_core.py: 1049 checks passed. New checks:WithoutOurAppImageremoves the three variables and keeps the rest; an extract that yields the launcher is refused and leaves no version behind; a version folder holding the launcher counts as not installed and is installed again.python -I tests/test_release.py: 28 tests, OK.Not tested: a real install under AppImageLauncher with this build. The reporter's exec trace and the reproduction above show the cause.
🤖 Generated with Claude Code