feat: profile the retroarch frontend config reads

AmberELEC and ROCKNIX install a retroarch.cfg whose system_directory
points every core at the BIOS folder. retroarch.yml (type utility, no
file, no system) reads that key, and ROCKNIX's systemfiles_in_content_dir,
at the RetroArch each one compiles: v1.22.2 and bdba046f. all_libretro
never picks a utility profile, and lists naming retroarch gain no file.

A libretro core option a frontend record writes stays the core's to
read: RetroDECK's pcsx2_bios keeps lrps2 as its reader.
This commit is contained in:
Abdessamad Derraz committed 2026-11-11 12:06:28 +01:00
1 parent 8770b9c067
commit b8ed9b735a
3 files changed
+96 -2

No files matched your search

+10 -2
View File
@@ -468,7 +468,12 @@ def config_evidence(
readers: list[str] = []
uncovered = list(keys)
loaded = False
for key in _named_profiles(record, profiles, platform) or sorted(profiles):
named = _named_profiles(record, profiles, platform)
if file == CORE_OPTIONS:
# A core option is read by the core RetroArch runs, not by the
# frontend a record names (RetroDECK's retroarch component).
named = [k for k in named if "libretro" in str(profiles[k].get("type") or "")]
for key in named or sorted(profiles):
profile = profiles[key]
handles = _handle_refs(profile)
for read in profile.get("config_reads") or []:
@@ -1319,7 +1324,10 @@ class LauncherLayer:
for key in self._profiles_named(emulator, profiles, relevant)
}
# RetroDECK names its frontend, retroarch, and the core option it
# writes, pcsx2_bios, names the core.
# writes, pcsx2_bios, names the core: a libretro core option
# belongs to a libretro core.
if place.build == "libretro" and place.kind == "core_option":
owners = {k for k in owners if "libretro" in str(profiles[k].get("type") or "")}
if not owners:
owners = set(setting_readers(place.passes_to, profiles, relevant))
for key in sorted(owners):