From a913fbf53977914e3090c93252b202da3595ff2d Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Sun, 18 Oct 2026 20:35:18 +0200 Subject: [PATCH] fix: give EmuDeck its RetroArch cores' files The scraper skipped RetroArch's own EmuScripts installer, so no libretro core's files reached the EmuDeck pack: np2kai, neocd and every core checkBIOS.sh does not name. RetroArch now stays in the list, as in RetroPie's. --- platforms/emudeck.yml | 1 + scripts/scraper/emudeck_scraper.py | 18 +++++++++++------- tests/test_audit_regressions.py | 22 +++++++++++++++++++--- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/platforms/emudeck.yml b/platforms/emudeck.yml index bdfe1555..7f9a9be4 100644 --- a/platforms/emudeck.yml +++ b/platforms/emudeck.yml @@ -24,6 +24,7 @@ cores: - pcsx2 - ppsspp - primehack +- retroarch - rpcs3 - ryujinx - scummvm diff --git a/scripts/scraper/emudeck_scraper.py b/scripts/scraper/emudeck_scraper.py index b3a1600d..0fd6ad23 100644 --- a/scripts/scraper/emudeck_scraper.py +++ b/scripts/scraper/emudeck_scraper.py @@ -440,13 +440,16 @@ class Scraper(BaseScraper): "base_destination": "bios", "hash_type": "md5", "verification_mode": "md5", + # RetroArch is one of them: its cores read the same bios folder, + # and naming it makes the pack carry every libretro core's files, + # as RetroPie's list does. Without it np2kai, neocd and the other + # cores EmuDeck installs got nothing checkBIOS.sh does not name. "cores": cores, - # Every EmuScripts installer sets up a standalone app (RetroArch's - # cores come from its own script, skipped above): Dolphin, Cemu, - # xemu, ARMSX2 and Supermodel ran with the libretro layout and - # lost their standalone-only files. A profile with no standalone - # build keeps its layout (runs_standalone). - "standalone_cores": list(cores), + # Every other EmuScripts installer sets up a standalone app: + # Dolphin, Cemu, xemu, ARMSX2 and Supermodel ran with the libretro + # layout and lost their standalone-only files. A profile with no + # standalone build keeps its layout (runs_standalone). + "standalone_cores": [core for core in cores if core != "retroarch"], "systems": systems, } @@ -467,7 +470,8 @@ class Scraper(BaseScraper): "cemuproton": "cemu", "rmg": "mupen64plus_next", } - skip = {"retroarch_maincfg", "retroarch"} + # The main RetroArch config script installs no emulator. + skip = {"retroarch_maincfg"} try: req = urllib.request.Request(api_url, headers=github_headers()) diff --git a/tests/test_audit_regressions.py b/tests/test_audit_regressions.py index 4c0f9f5e..6fbe31f5 100644 --- a/tests/test_audit_regressions.py +++ b/tests/test_audit_regressions.py @@ -4272,14 +4272,30 @@ class EmuDeckRunsItsEmulatorsStandalone(unittest.TestCase): from scripts.common import load_platform_config, runs_standalone, load_emulator_profiles config = load_platform_config("emudeck", str(ROOT / "platforms")) - self.assertEqual(sorted(config["standalone_cores"]), sorted(config["cores"])) + self.assertEqual( + sorted(config["standalone_cores"]), + sorted(c for c in config["cores"] if c != "retroarch"), + ) profiles = load_emulator_profiles(str(ROOT / "emulators")) standalone = set(config["standalone_cores"]) for name in ("dolphin", "cemu", "armsx2", "supermodel"): with self.subTest(emulator=name): self.assertTrue(runs_standalone(name, profiles[name], standalone)) - source = (ROOT / "scripts" / "scraper" / "emudeck_scraper.py").read_text() - self.assertIn('"standalone_cores": list(cores)', source) + + def test_retroarch_brings_its_libretro_cores(self): + """The scraper dropped RetroArch's own script: np2kai, neocd and + every core EmuDeck installs through RetroArch got no file that + checkBIOS.sh does not name.""" + from scripts.common import ( + load_emulator_profiles, load_platform_config, resolve_platform_cores, + ) + + config = load_platform_config("emudeck", str(ROOT / "platforms")) + self.assertIn("retroarch", config["cores"]) + cores = resolve_platform_cores(config, load_emulator_profiles(str(ROOT / "emulators"))) + for name in ("np2kai", "neocd", "dolphin"): + with self.subTest(core=name): + self.assertIn(name, cores)