mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-12 13:03:54 -06:00
fix: type amiberry 8.5.0 as the code builds it
The 8.5.0 source builds a standalone Amiberry and the libretro core, so the profile is standalone + libretro again. A standalone name a build the platform compiles itself answers to keeps meaning that build: RetroBat's standalone amiberry is 8.3.0, and 8.5.0 runs there as the core only.
This commit is contained in:
1 parent
8a4b7aa8e6
commit
55211acb37
3 files changed
+47
-4
No files matched your search
@@ -1,5 +1,5 @@
|
||||
emulator: Amiberry
|
||||
type: libretro
|
||||
type: standalone + libretro
|
||||
core_classification: official_port
|
||||
source: "https://github.com/BlitterStudio/amiberry"
|
||||
upstream: "https://github.com/tonioni/WinUAE"
|
||||
|
||||
+35
-3
@@ -2687,9 +2687,19 @@ def runs_standalone(
|
||||
return False
|
||||
if "standalone" not in str(profile.get("type", "")):
|
||||
return False
|
||||
return emu_name in standalone_cores or bool(
|
||||
standalone_cores & {str(c) for c in profile.get("cores", [])}
|
||||
)
|
||||
names = {emu_name, *(str(c) for c in profile.get("cores", []))}
|
||||
# A name a build the platform compiles itself answers to means that
|
||||
# build there: RetroBat's standalone amiberry is 8.3.0, and the 8.5.0
|
||||
# profile, run there as the buildbot core, keeps its libretro layout.
|
||||
owners: dict[str, set[str]] = {}
|
||||
for tag in standalone_cores:
|
||||
if tag.startswith(OWN_BUILD_PREFIX):
|
||||
name, owner, source = json.loads(tag[len(OWN_BUILD_PREFIX):])
|
||||
if source == profile.get("source"):
|
||||
owners.setdefault(name, set()).add(owner)
|
||||
if any(emu_name not in owners[n] for n in names & owners.keys()):
|
||||
return False
|
||||
return emu_name in standalone_cores or bool(standalone_cores & names)
|
||||
|
||||
|
||||
# Marks, in a platform's standalone set, an emulator it also launches as a
|
||||
@@ -2704,6 +2714,9 @@ CORE_DIR_PREFIX = "coredir:"
|
||||
# Marks, in the same set, a file the platform's launcher executes
|
||||
# (launchers.executed_files), as JSON.
|
||||
EXECUTED_PREFIX = "exec:"
|
||||
# Marks, in the same set, a standalone name a build the platform compiles
|
||||
# itself (built_by) answers to, as JSON [name, profile, source].
|
||||
OWN_BUILD_PREFIX = "ownbuild:"
|
||||
# Marks, in the same set, a file name the platform declares under one of the
|
||||
# systems a launcher record is written for, as JSON [system, name]: it says
|
||||
# which launch reads a profile entry of that name.
|
||||
@@ -2771,6 +2784,24 @@ def launched_both_ways(config: dict) -> set[str]:
|
||||
return {str(c) for c in config.get("dual_mode_cores") or []} | (standalone & installable)
|
||||
|
||||
|
||||
def own_build_tags(config: dict, standalone: set[str]) -> set[str]:
|
||||
"""The standalone names the platform's own builds answer to, tagged.
|
||||
|
||||
Read from the profiles of this repository, the ones every pack, manifest
|
||||
and report is built from.
|
||||
"""
|
||||
platform = str(config.get("_key") or "")
|
||||
if not platform or not standalone:
|
||||
return set()
|
||||
profiles = load_emulator_profiles(str(Path(__file__).resolve().parent.parent / "emulators"))
|
||||
return {
|
||||
OWN_BUILD_PREFIX + json.dumps([n, key, p.get("source")])
|
||||
for key, p in profiles.items()
|
||||
if platform in (p.get("built_by") or []) and "standalone" in str(p.get("type", ""))
|
||||
for n in {key, *(str(c) for c in p.get("cores") or [])} & standalone
|
||||
}
|
||||
|
||||
|
||||
def standalone_set(config: dict) -> set[str]:
|
||||
"""The emulators a platform launches standalone, with its dual-mode ones.
|
||||
|
||||
@@ -2780,6 +2811,7 @@ def standalone_set(config: dict) -> set[str]:
|
||||
"""
|
||||
names = {str(c) for c in config.get("standalone_cores") or []}
|
||||
names |= {DUAL_MODE_PREFIX + c for c in launched_both_ways(config)}
|
||||
names |= own_build_tags(config, names)
|
||||
# The system directory each core is handed travels the same way, so
|
||||
# platform_layouts places a core's files below it for every reader.
|
||||
names |= {
|
||||
|
||||
@@ -711,6 +711,17 @@ class AmiberryBuildEachPlatformShips(unittest.TestCase):
|
||||
with self.subTest(platform=platform):
|
||||
self.assertEqual(self.resolved(platform), own)
|
||||
|
||||
def test_no_standalone_amiberry_is_the_buildbot_revision(self) -> None:
|
||||
from common import list_registered_platforms
|
||||
|
||||
for platform in list_registered_platforms(str(REPO_ROOT / "platforms")):
|
||||
cfg = load_platform_config(platform, str(REPO_ROOT / "platforms"))
|
||||
if "amiberry" not in self.resolved(platform):
|
||||
continue
|
||||
layouts = platform_layouts("amiberry", self.profiles["amiberry"], standalone_set(cfg))
|
||||
with self.subTest(platform=platform):
|
||||
self.assertEqual([standalone for _view, standalone in layouts], [False])
|
||||
|
||||
def test_the_buildbot_core_runs_where_retroarch_installs_it(self) -> None:
|
||||
from common import load_target_config, resolve_platform_cores
|
||||
|
||||
|
||||
Reference in new issue
Block a user