Skip to content

RetroDECK component build target (draft, for Lazorne collaboration) - #84

Open
misantronic wants to merge 4 commits into
mainfrom
retrodeck-component
Open

RetroDECK component build target (draft, for Lazorne collaboration)#84
misantronic wants to merge 4 commits into
mainfrom
retrodeck-component

Conversation

@misantronic

Copy link
Copy Markdown
Owner

Summary

Groundwork for issue #53 (RetroDECK integration). Adds a component build target that packages the Linux proxy for RetroDECK's Flatpak-based component system, and fixes a real bug found while testing it against a genuine RetroDECK install.

  • linux/retrodeck/build_bundle.sh + fetch_runtime.sh: cross-compiles the native hashing lib for x86_64-linux-gnu and vendors a portable CPython 3.11 runtime, producing a self-contained component (no host Python dependency).
  • linux/retrodeck/component/*: the six spec files RetroDECK's own components use (component_launcher.sh, component_manifest.json, component_prepare.sh, component_recipe.json, component_update.sh, component_functions.sh), modeled directly on RetroDECK/components' flips/portmaster examples.
  • linux/raofflineproxy/config.py: fixes RetroArch/PPSSPP/Dolphin config path detection, which assumed a plain desktop install (~/.config/...) and missed RetroDECK's real Flatpak per-app layout ($XDG_CONFIG_HOME/<component>/..., i.e. ~/.var/app/net.retrodeck.retrodeck/config/...).

Testing

  • Verified the built component runs headless (no system Python, no host deps) in a bare debian:bookworm-slim container.
  • Verified the native x86_64 hashing lib loads and the proxy binds/listens.
  • Verified Flatpak sandbox mechanics (permissions, XDG_CONFIG_HOME remapping, launcher wiring) against a minimal test app built with flatpak-builder on the real org.kde.Platform//6.10 runtime.
  • Verified against a real RetroDECK Cooker build running on a genuine x86_64 host (temporary AWS instance, since RetroDECK is x86_64-only and this Mac can't run it natively): confirmed status/start-proxy/stop-proxy correctly detect and patch the real retroarch.cfg, ppsspp.ini, and RetroAchievements.ini files RetroDECK itself creates, and that the proxy actually listens once started. This is what surfaced and confirmed the config-path bug fixed here.

Known gaps / not yet done

  • component_recipe.json is not verified against RetroDECK's actual Cooker build tooling (only the manual "Provided" component drop-in path, via install_components.sh, was tested).
  • No settings toggle exists yet on RetroDECK's side to start/stop the proxy from their own UI.
  • No end-to-end RA account / real achievement award test yet, only config patching and proxy startup.

Test plan

  • Lazorne/RetroDECK team to test the built component (./linux/retrodeck/build_bundle.sh) against their own build pipeline
  • Wire a settings toggle on RetroDECK's side once the above is validated

@misantronic misantronic added the enhancement New feature or request label Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant