Repository navigation
Build VLEAPP with one PyInstaller driver on every platform - #274
Merged
Merged
Conversation
Replaces the six PyInstaller specs under scripts/pyinstaller/ with packaging/build.py, ported from iLEAPP's (abrignoni/iLEAPP#2298) by way of RLEAPP's: exe, smoke, installer and verify, in two phases so signing fits between them, and one spec for every platform. - One executable, vleapp, from packaging/entrypoint.py: the window without arguments, the command line with them. On macOS VLEAPP.app, bundle id org.leapps.VLEAPP, LSBackgroundOnly set back to false. - Every artifact module is a hidden import; compression.zstd is named outright because search_files.py imports it by a run-time name. The old specs' stdlib list (bz2, gzip, tarfile, xml.etree) is kept. - The version is read from scripts/version_info.py; the two Windows version files are gone. vleapp.py gains --version. - smoke runs --version, an empty extraction, the NTFS raw fixture and the new --selfcheck in vleappGUI.py, which compares the artifact count with the source. - Installers: Inno Setup with VLEAPP's own AppId, a dmgbuild disk image with a Retina @2x background, and an AppImage from pinned tools. VLEAPP's background draws the arrow 44 points right of the other LEAPPs', so the icons sit at (304, 290) and (654, 290); a test finds the arrow and requires the icons to straddle it. - test_builds.yml builds and smoke-tests six legs, Linux on Ubuntu 22.04, actions on their Node 24 releases, jobs named by machine; release.yml builds a draft release from a v* tag, stages assets in release-assets/, ships Linux as the AppImage alone, and refuses an unsigned macOS build. No OpenSSL step on Windows ARM64: nothing VLEAPP requires depends on cryptography. - lavafuncs.py reports leapp_mode GUI when the GUI module is loaded, as iLEAPP, ALEAPP and RLEAPP already do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the six PyInstaller specs under
scripts/pyinstaller/withpackaging/build.py, ported from iLEAPP's (abrignoni/iLEAPP#2298) by way of RLEAPP's (abrignoni/RLEAPP#541). It has four commands,exe,smoke,installerandverify, and builds in two phases so signing can happen in between. One spec covers every platform.What changes
vleapp, built frompackaging/entrypoint.py. Started without arguments it opens the window; with arguments it is the command line. Tools that runvleapp -t fs -i ... -o ...see no change. On Linux with no display, it prints the help. There is novleappGUIin a build any more.VLEAPP.appwith bundle idorg.leapps.VLEAPP, replacing4n6.brigs.VLEAPP. macOS treats it as a different app, so permissions granted to the old one, Full Disk Access included, have to be granted again.LSBackgroundOnlyis set back to false so the window gets a Dock icon and a menu bar.compression.zstdis named outright becausesearch_files.pyimports it by a name built at run time. The old specs' stdlib list (bz2,gzip,tarfile,xml.etree.ElementTree) is kept.scripts/version_info.py, so the two Windows version files are gone.vleapp.pygains--version.smokeruns four checks:--version; a run over an empty extraction; a run over the NTFS raw fixture; and a new--selfcheckinvleappGUI.py, which starts Tk, loads the images and every artifact, compares the artifact count with the source, then exits before drawing a window.AppId.@2xbackground.test_builds.ymlbuilds and smoke-tests six legs: Windows x64 and ARM64, macOS Apple silicon and Intel, Linux x64 and ARM64. Linux builds on Ubuntu 22.04 for glibc 2.35, actions are on their Node 24 releases, and jobs are named after the machine. It runs weekly, on dispatch, and on PRs that touch packaging.release.ymlbuilds a draft release from av*tag:vleapp_version.VLEAPP-<version>-<platform>-<arch>, staged inrelease-assets/(neverassets/, which holds the window's images), and listed inSHA256SUMS.txt. Linux ships the AppImage alone, with no.tar.gz.MACOS_*secrets the macOS legs stop before building. A dispatched rehearsal builds unsigned.cryptography.scripts/lavafuncs.pyreportsleapp_modeas GUI when the GUI module is loaded. Apart from the tool's name, the file is now identical to RLEAPP's.Download names change
The per-program downloads (
vleapp-v*-Windows_x86_64.zip,vleappGUI-v*-macOS_Apple_Silicon.dmgand so on, up to v2026.4.1) are replaced by the names above. leapps.org links will need updating at the next release..github/release-footer.mdtells tools that launch VLEAPP what changed for them.Verified locally
macOS arm64, Python 3.14.7, PyInstaller 6.22.3:
smokechecks pass, with 103 of 103 artifacts loaded by the build.hdiutil verifypasses. The background TIFF holds both resolutions (960x540 and 1920x1080), and the.DS_Storeplaces the icons at the positions above.lint_changed.pyfinds no new warnings, andactionlintpasses on the workflows.Windows, Linux, the AppImage and notarisation are checked only by this PR's CI.
Cross-core
The
lavafuncs.pychange brings VLEAPP into line with iLEAPP, ALEAPP and RLEAPP. DLEAPP still has neither thisleapp_modecheck nor the packaging driver.🤖 Generated with Claude Code