fix: split platform groups on declared emulators

This commit is contained in:
Abdessamad Derraz committed 2026-10-04 17:48:00 +02:00
1 parent 6453a96d47
commit 1ceb4b0c5a
2 files changed
+14 -1

No files matched your search

+11 -1
View File
@@ -1055,7 +1055,11 @@ def group_identical_platforms(
platforms_dir: str,
target_cores_cache: dict[str, set[str] | None] | None = None,
) -> list[tuple[list[str], str]]:
"""Group platforms that produce identical packs (same files + base_destination).
"""Group platforms that produce identical packs.
A pack is the platform's own files plus those of the emulators it runs,
so two platforms share one only when both agree. base_destination does
not separate them: destinations inside a pack are relative to it.
Returns [(group_of_platform_names, representative), ...].
The representative is the root platform (one that does not inherit).
@@ -1086,6 +1090,12 @@ def group_identical_platforms(
entries.append(f"{dest}|{sha1}|{md5}")
fp = hashlib.sha1("|".join(sorted(entries)).encode()).hexdigest()
cores = config.get("cores")
emulators = [
cores if isinstance(cores, str) else sorted(map(str, cores or [])),
sorted(map(str, config.get("standalone_cores") or [])),
]
fp = hashlib.sha1(f"{fp}|{emulators}".encode()).hexdigest()
if target_cores_cache:
tc = target_cores_cache.get(platform)
if tc is not None:
+3
View File
@@ -2130,6 +2130,9 @@ def _run_manifest_mode(
alias_manifest["display_name"] = alias_cfg.get(
"platform", alias_plat
)
alias_manifest["base_destination"] = alias_cfg.get(
"base_destination", ""
)
alias_registry = registry.get("platforms", {}).get(alias_plat, {})
alias_install = alias_registry.get("install", {})
alias_manifest["detect"] = alias_install.get("detect", [])