mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
feat: take a platform's own libretro builds
A list naming retroarch now takes the libretro profiles whose built_by names the platform: ROCKNIX ships yabadabadoo with its RetroArch and named it nowhere, so its files never reached the ROCKNIX pack. Only change across the registry: rocknix + yabadabadoo. Also quotes the installer's current unproven-drive message.
This commit is contained in:
1 parent
a40f8416e1
commit
b270a24d7b
4 files changed
+30
-5
No files matched your search
+9
-3
@@ -2891,15 +2891,21 @@ def resolve_platform_cores(
|
||||
If target_cores is provided, result is intersected with it.
|
||||
"""
|
||||
cores_config = config.get("cores")
|
||||
platform_key = str(config.get("_key") or "")
|
||||
|
||||
def every_libretro() -> set[str]:
|
||||
# A build only some platforms compile (built_by) is reached by name:
|
||||
# the buildbot RetroArch installs from does not publish it.
|
||||
# A build only some platforms compile (built_by) is absent from the
|
||||
# buildbot RetroArch installs from, so it is reached by name, or as one
|
||||
# of the libretro cores of a platform that compiles it: ROCKNIX ships
|
||||
# yabadabadoo with its RetroArch and names it nowhere else.
|
||||
return {
|
||||
name
|
||||
for name, p in profiles.items()
|
||||
if "libretro" in p.get("type", "") and p.get("type") != "alias"
|
||||
and not p.get("built_by")
|
||||
and (
|
||||
not p.get("built_by")
|
||||
or (platform_key and platform_key in p["built_by"])
|
||||
)
|
||||
}
|
||||
|
||||
if cores_config == "all_libretro":
|
||||
|
||||
@@ -1183,6 +1183,23 @@ class TestE2E(unittest.TestCase):
|
||||
recalbox = {"cores": ["mame0278"], "systems": {}}
|
||||
self.assertEqual(resolve_platform_cores(recalbox, profiles), {"mame0278"})
|
||||
|
||||
def test_a_platform_s_own_libretro_build_comes_with_its_retroarch(self):
|
||||
"""ROCKNIX ships yabadabadoo with its RetroArch and names it nowhere
|
||||
else: a list naming retroarch takes the libretro builds whose
|
||||
built_by names that platform, and no other platform's."""
|
||||
profiles = {
|
||||
"yabause": {"type": "libretro", "systems": ["saturn"], "files": []},
|
||||
"yabadabadoo": {"type": "libretro", "built_by": ["rocknix"],
|
||||
"systems": ["saturn"], "files": []},
|
||||
}
|
||||
rocknix = {"_key": "rocknix", "cores": ["retroarch"], "systems": {}}
|
||||
self.assertEqual(resolve_platform_cores(rocknix, profiles),
|
||||
{"yabause", "yabadabadoo"})
|
||||
other = {"_key": "batocera", "cores": ["retroarch"], "systems": {}}
|
||||
self.assertEqual(resolve_platform_cores(other, profiles), {"yabause"})
|
||||
everyone = {"_key": "retroarch", "cores": "all_libretro", "systems": {}}
|
||||
self.assertEqual(resolve_platform_cores(everyone, profiles), {"yabause"})
|
||||
|
||||
def test_resolve_cores_explicit_list(self):
|
||||
"""Explicit cores list matches against profile dict keys."""
|
||||
config = {"cores": ["fbneo", "opera"], "systems": {"arcade": {"files": []}}}
|
||||
|
||||
@@ -198,7 +198,9 @@ resolved. Three strategies exist:
|
||||
platform, that profile answers for the name. Used by Batocera, Recalbox, RetroBat,
|
||||
RomM, KNULLI, AmberELEC, EmuELEC, MinUI, NextUI, MyMinUI, RetroPie, EmuDeck,
|
||||
RetroDECK, ROCKNIX. A list that names `retroarch` (the last
|
||||
four) also takes every libretro profile, as `all_libretro` does. An empty list
|
||||
four) also takes every libretro profile, as `all_libretro` does, plus the
|
||||
libretro builds whose `built_by` names this platform (ROCKNIX's
|
||||
`yabadabadoo`). An empty list
|
||||
(BizHawk, MiSTer FPGA) resolves no profile, and the pack holds the platform's own
|
||||
files.
|
||||
- **all_libretro**: `cores: all_libretro` - every profile whose `type` contains
|
||||
|
||||
+1
-1
@@ -1323,7 +1323,7 @@ their systems`), and its `bios` folder comes first at the folder question,
|
||||
under Enter, before this computer's usual folder. A drive with a `bios` folder
|
||||
and none of those folders, a data drive or a stick, is numbered with a note
|
||||
(`DATA has a bios folder but no folder a handheld system writes. Pick it below
|
||||
if your files go there.`) and never taken under Enter. Another system's card or SHARE drive, and a
|
||||
if the BIOS files go there.`) and never taken under Enter. Another system's card or SHARE drive, and a
|
||||
drive two systems fit, are left out, and a line names them: each is reached
|
||||
through its own setup. A folder typed is read from the current
|
||||
one when it is not a full path, and named in full after. `q` quits there too
|
||||
|
||||
Reference in new issue
Block a user