chore: remove the Python builder, the MSI and the Linux parts lists, which no release builds or uses #171
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
good first issue
gpu/amd
gpu/igpu
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
needs measurements
platform/linux
platform/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!171
Loading…
Reference in a new issue
No description provided.
Delete branch "HumanBean/Longshot:chore/remove-old-build-leftovers"
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 still carries parts of Hookshot's old build and release system that no workflow builds and no release or install uses: a second Windows builder written in Python, a WiX MSI, and the Linux "parts list" delta format. About 4,300 lines nobody runs make it harder to see how a release really reaches a player, so this removes them.
This removes the Python builder (
builder/py). It is approved, but veto here if it should stay.What changed
Callers checked with grep over
builder/,nx2/,scripts/,tests/,docs/,.forgejo/,website/and LongshotLauncher'sCore/,App/andtests/. What a player installs today, which none of this is part of: the launcher downloads the release'sLongshotBuilder-<v>-windows-x64.zipplus the tools of itstools.lock, orLongshot-<v>-x86_64.AppImageplus the tools of thetools.lockinside it (docs/releases.md, How the launcher reads it).The Python builder, removed (
builder/py/, 18 files: the PySide6 window,setup_parts.py,updater.py, the Inter fonts and icons,gen_strings.py,shots.py; plusscripts/make_py_builder.py). Why it's dead:make_py_builder.py, and no release ships its zip (.forgejo/workflows/*.yml,scripts/release.py);setup_parts.py, which since #161 works only withLONGSHOT_SETUP_LIST;make_game.pydirectly, never this one.The only other code that knew about it was
nx2/make_game.py, which wrotebuilder_args=intolongshot_version.txtfromLONGSHOT_BUILDER_ARGS. Onlybuilder/py/longshot_builder/core.pyset that variable, and nothing readsbuilder_args=, so those 3 lines go too.builder=(the WPF builder'sLONGSHOT_BUILDER_EXE) stays.builder/setup/setup.c'sLONGSHOT_SETUP_LISTpath, removed. This is the development download of an "older form" list withpartlines:manifest_url, the list download and its retries, and thepartline reader.tools.lock,VERSIONandLongshotBuilder\. That was already the only path a release took.partlines left, every part is atools.locktool. So thePartstruct losestoandtool, andpart_folderloses its guess of a folder from aLongshotBuilder-<name>-download name. The unpack inwork()also loses its.destination and its llvm-mingw rename branch, which onlypartlines reached.The MSI, removed (
builder/msi/LongshotBuilder.wxs): never built by CI and not part of any release. Its mentions went fromdocs/forgejo-runners.mdanddocs/development.md's layout table.The Linux parts lists, removed (
scripts/linux/make_parts.py,builder/linux/part_links.py): only the launcher'sLONGSHOT_LAUNCHER_PARTSread such a list. That hook goes in the launcher's companion PR (MagicBeanDev/LongshotLauncher, same branch name).scripts/linux/appimage.sh,deps.sh,release.pyand the workflows never call them. The sysroot is packed as atools.lockarchive byscripts/tools.py pack.Toolchains.SysrootPart), and keeps doing so.docs/releases.md: theLONGSHOT_LAUNCHER_PARTSline removed. The file is byte-identical with the launcher's, which gets the same edit in its PR (cmpchecked).docs/versioning.md: the release-please mention removed (releases use git-cliff andrelease.py).Tests:
tests/test_setup_list_names.py: the Python builder'ssetup_partsreading aLONGSHOT_SETUP_LISTlist, both gone.tests/test_builder_py_dlss_update.py: the Python builder'swindow.pyupdate_build.tests/test_builder_own_python.py:PythonBuilderTestswent.tests/test_builder_update_back.py: thewindow.pycut-outs went.tests/test_disk_warning.py:test_the_python_builder_askswent.tests/test_no_release_lookup.py: thebuilder/pysources left its list.tests/test_linux_update.py:test_packaging_refuses_a_sysroot_link_outside_its_rootwent (make_parts.write_zip).tools.py pack/unpackhalf.setup.cchecks updated to the new source:test_setup_tool_merge.pyandtest_portable_setup_transaction.pybuild theirPartwithoutto/tool. The transaction's reused part is now atools.locktool with destLongshotBuilder/tools/python.test_setup_tar_diagnostics.pyuses a new end marker.test_setup_runtime.pycutsbuilder_readyup to#define LAUNCHER_DOWNLOAD. The old end marker also pulled in the launcher URL as a "required file", a name Windows cannot create.Kept on purpose:
tools.lock'sHookshotBuilder/tools/...prefixes (folders inside Hookshot's archives) and its fallback links to NotRexed/Hookshot'sbuilder-partsrelease.recomplauncher.json,scripts/windows/dav1d.sh, and everything the release workflow and the launcher use.setup.c'sparts.txt(write_parts/reuse_part): it lets an update move unchanged tools over from the installed version.Flags and settings
LONGSHOT_SETUP_LIST(the Windows setup's development list) andLONGSHOT_BUILDER_ARGS(set only by the Python builder)Measurements
main:
e7ed2f7a(2026-11-13)this PR: chore/remove-old-build-leftovers @
99fae780Hardware: Ryzen desktop, CachyOS Linux (game-free checks only)
Scene: none, no game run
Method:
LONGSHOT_VULKAN_HEADERS=/usr/include python -I -B tests/run_all.py --jobs 6undernice -n 19 ionice -c3, once on each side (the PC was in use, so one run each, not two). Line counts fromjj diff --stat. Nothing here is a performance change.How to reproduce: the same command in a checkout of each commit
e7ed2f7a99fae780builder/(of whichbuilder/py-3639)tests/LongshotBuilder-Setup.exe, llvm-mingw 20261104, -O2Testing
Tested:
setup.ccompiled on both sides with tools.lock's llvm-mingw (scripts/builder_package.py llvm-mingw --host linux, the CI command line plus-Wall, no warnings). The exe no longer holdsLONGSHOT_SETUP_LIST.setup.cchecks that run on Linux pass:test_setup_tool_merge.pyandtest_setup_tar_diagnostics.py(16 cases).setup.cchecks compile with llvm-mingw, but can't run here (no Windows, no Wine):test_portable_setup_transaction.py,test_portable_setup_start.py,test_setup_runtime.py,test_setup_runtime_paths.pyandtest_portable_setup_paths.py.test_linux_update.py,test_no_release_lookup.py,test_builder_own_python.py,test_builder_update_back.pyandtest_disk_warning.py.tests/test_launcher_core.py --strict --longshot <this branch>) pass against this branch with the companion PR.Not tested:
Partstruct and the unpack lost their non-tool branches.builder/LongshotBuilderchanged.Needs other testers:
LongshotBuilder.exewith an empty%LOCALAPPDATA%\LongshotBuilder, then again after a version bump, expecting each tools.lock tool downloaded, placed and (the second time) kept from the installed version, and the builder starting (request to open)Screenshots
Nothing on screen.
Risk and rollback
A Windows setup that still met a non-tool part would now refuse it or unpack it as a tool. Only a
LONGSHOT_SETUP_LISTlist (development) ever hadpartlines; the release zip'stools.lockhas onlytoollines (11 today).Reverting the commit restores everything. Nothing is migrated or deleted on players' PCs.
Reviewer notes
Start with
builder/setup/setup.c'swork()andpart_folder, then the trimmed tests. In the launcher PR,Core/ToolsLock.csnow holdsPart/PartsList.Checklist
For everyone
type(scope): description).main.python -I -B tests/run_all.pyrun and passing (any failure that also fails onmainis named above).third_party/untouched (a new folder with aPROVENANCE.mdinstead).If applicable
tests/that reads changed source updated in this PR, not weakened.WIP: chore: remove the Python builder, the MSI and the Linux parts lists, which no release builds or usesto chore: remove the Python builder, the MSI and the Linux parts lists, which no release builds or usesTrashPanda referenced this pull request2026-11-13 14:19:56 +00:00