mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-21 03:09:08 -05:00
feat: a platform package can differ from upstream
bundled describes the emulator's own release, and a platform package can differ both ways: Batocera's hcl package installs the binary alone and sends users to fetch the data, while its blueMSX core package copies the machines and databases beside the core. not_bundled_on and installed_on name those platforms, and the builder reads them through one rule.
This commit is contained in:
1 parent
36e30beac0
commit
f7d57dd91d
6 files changed
+77
-4
No files matched your search
@@ -353,6 +353,9 @@ def load_platform_config(platform_name: str, platforms_dir: str = "platforms") -
|
||||
for sys_id, system in config.get("systems", {}).items()
|
||||
}
|
||||
|
||||
# The registry key, which per-platform profile fields (installed_on,
|
||||
# not_bundled_on) name: the display name differs (MiSTer FPGA).
|
||||
config["_key"] = platform_name
|
||||
_platform_config_cache[cache_key] = config
|
||||
return config
|
||||
|
||||
|
||||
+19
-2
@@ -525,7 +525,21 @@ def filter_files_by_mode(files: list[dict], standalone: bool) -> list[dict]:
|
||||
return result
|
||||
|
||||
|
||||
def deliverable(entries: list[dict], standalone: bool) -> list[dict]:
|
||||
def installed_with_emulator(entry: dict, platform: str = "") -> bool:
|
||||
"""Whether the emulator as this platform installs it already brings the entry.
|
||||
|
||||
`bundled` describes the emulator's own release. A platform package can
|
||||
differ both ways: Batocera's hcl package installs the binary alone and
|
||||
sends users to fetch the data (`not_bundled_on`), while its blueMSX core
|
||||
package copies the machines and databases beside the core
|
||||
(`installed_on`).
|
||||
"""
|
||||
if platform and platform in (entry.get("installed_on") or []):
|
||||
return True
|
||||
return bool(entry.get("bundled")) and platform not in (entry.get("not_bundled_on") or [])
|
||||
|
||||
|
||||
def deliverable(entries: list[dict], standalone: bool, platform: str = "") -> list[dict]:
|
||||
"""The entries of one build a pack has to bring.
|
||||
|
||||
A file or tree installed with the emulator is already on the user's
|
||||
@@ -533,7 +547,10 @@ def deliverable(entries: list[dict], standalone: bool) -> list[dict]:
|
||||
`mode` like any entry, so PPSSPP's assets, shipped by the standalone
|
||||
release and not by the libretro core, still reach a RetroArch pack.
|
||||
"""
|
||||
return [e for e in filter_files_by_mode(entries, standalone) if not e.get("bundled")]
|
||||
return [
|
||||
e for e in filter_files_by_mode(entries, standalone)
|
||||
if not installed_with_emulator(e, platform)
|
||||
]
|
||||
|
||||
|
||||
def find_validated_variant(
|
||||
|
||||
+2
-1
@@ -96,6 +96,7 @@ from validation import (
|
||||
check_file_validation,
|
||||
deliverable,
|
||||
filter_files_by_mode,
|
||||
installed_with_emulator,
|
||||
outside_gap_scope,
|
||||
)
|
||||
|
||||
@@ -650,7 +651,7 @@ def find_undeclared_files(
|
||||
"path": dest,
|
||||
"required": f.get("required", False),
|
||||
"hle_fallback": f.get("hle_fallback", False),
|
||||
"bundled": f.get("bundled", False),
|
||||
"bundled": installed_with_emulator(f, config.get("_key", "")),
|
||||
"category": f.get("category", "bios"),
|
||||
"in_repo": in_repo,
|
||||
"note": f.get("note", ""),
|
||||
|
||||
Reference in new issue
Block a user