Add Allium support - #128
Merged
Merged
Conversation
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.
Adds Allium as a Linux target, covering every device Allium runs on: Miyoo Mini, Mini Plus and Mini Flip.
Allium shares the Miyoo Mini hardware, kernel and MI SDK with Onion, so the bundle reuses Onion's armv7 runtime, pygame +
MiniSDL2 vendor stack andlibraproxy_rchash.sorather than duplicating any of it.Verified end-to-end on a Miyoo Mini Plus running Allium v1.0.1.
Layout
Allium packages apps as
.pakdirectories, so the bundle installs toApps/RAOfflineProxy.pakinstead of theApp/RAOfflineProxytree Onion and spruce share.No credential handling is needed: Allium launches stock RetroArch directly, so RetroArch's own achievements login writes into
.retroarch/retroarch.cfgand nothing rewrites those keys behind the proxy.Autostart
The boot hook goes into
.tmp_update/updater, which is the literal same path asDEFAULT_SPRUCE_STARTUP_SCRIPT. The dispatch inplatform.pyis therefore keyed onrunning_on_allium()rather than path equality, with a test asserting spruce still wins on spruce.The hook is also skipped while
allium-ota.zipis present. It sits above the updater's own OTA check, andota-update.shextracts the release over the whole card and then reboots — so without the guard the service would open its SQLite database mid-extract, seconds before a forced reboot.Self-update
install_onion_update_archive()was layout-agnostic apart from one hardcodedApp/, so it now takes anarchive_rootargument (Appfor Onion/spruce,Appsfor the.pak). Atomic replace, rollback and same-majordata/preservation are unchanged.Releasing Allium requires attaching
RAOfflineProxy-Allium-v<VER>.zipto the release. The asset matcher is in place, and a test ties the in-archive layout to whatbuild_bundle.shproduces.Worth a closer look: shared installer change
remove_tree_best_effort()inupdate.pyalso changes behaviour for Onion, spruce and muOS — it is the only non-Allium-scoped change here.shutil.rmtree(..., ignore_errors=True)half-fails on FAT32 right after an install writes ~129MB. Measured on device: 5,831 files / 193.8MB orphaned after a single update, while an immediate retry of the identical tree removed everything with zero errors. It now retries, then warns instead of staying silent. Re-verified on device: leftovers zero.This bites hardest on Allium, whose own OTA updater refuses to run below 300MB free — a couple of updates' debris could block firmware updates and look like Allium's fault.
Release version drift guard
The app version lives in two files per target across three declaration styles, with no CI and no bump script (
linux/onion/build_bundle.shbakes it in twice). A stalecommon.shis what the app reports as its current version, which the updater compares against the latest release — so a missed bump silently breaks updates.test_linux_release_versions.pypins them together; verified it catches a simulated forgotten bump.Verified on hardware
Platform detection; boot hook install (syntax-checked, idempotent, diff is only the block); autostart across a real reboot (proxy up 6.2s after boot, without delaying
alliumd); proxy patchescheevos_custom_host, binds and serves; stop reverts and releases the port; offline award queue → flush → RA; graphical menu at 640x480 with no fallback; support-log metadata (os: Allium,v1.0.1); and a fresh install of the release zip from a wiped app directory.Docs updated across the Linux section (tabs, install steps, cfg patching, autostart) plus the platforms table and homepage.