mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-12 04:53:52 -06:00
feat: profile amiberry 5.6.5 built by ROCKNIX
ROCKNIX builds amiberry 5c54536 (target.h declares 5.6.5). Every file it reads lies below its start path, the working directory: the ROM database dumps, aros-ext.bin, aros-rom.bin and rom.key in kickstarts/, the WHDLoad booter files in whdboot/. Profiled from that revision, pin_frozen with pin_build on ROCKNIX's package.mk. The ROCKNIX scraper records the folder its start script enters and the kickstarts link it carries there by copying /usr/config/amiberry, so <cwd>/kickstarts binds to the BIOS root. A standalone + libretro profile under a name the platform's own build answers to no longer resolves there: ROCKNIX's amiberry is 5.6.5, not 8.5.0.
This commit is contained in:
1 parent
e93ff86bf1
commit
9d72fe4546
5 files changed
+2981
-1
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -492,6 +492,26 @@ launchers:
|
||||
passes_to: symlink /usr/config/amiberry/kickstarts -> /storage/roms/bios
|
||||
fails_when_missing: false
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/amiberry/package.mk:36"
|
||||
- emulator: amiberry
|
||||
build: standalone
|
||||
kind: passes_path
|
||||
names: []
|
||||
search_dir: /storage/.config/amiberry
|
||||
passes_to: working directory of start_amiberry.sh
|
||||
fails_when_missing: false
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/amiberry/scripts/start_amiberry.sh:12,\
|
||||
\ 51"
|
||||
- emulator: amiberry
|
||||
build: standalone
|
||||
kind: links
|
||||
names: []
|
||||
search_dir: /storage/roms/bios
|
||||
passes_to: symlink /storage/.config/amiberry/kickstarts -> /storage/roms/bios, copied
|
||||
with /usr/config/amiberry
|
||||
fails_when_missing: false
|
||||
source_ref: "projects/ROCKNIX/packages/emulators/standalone/amiberry/package.mk:36,\
|
||||
\ projects/ROCKNIX/packages/emulators/standalone/amiberry/scripts/start_amiberry.sh:12,\
|
||||
\ 30, 51"
|
||||
- emulator: hatari
|
||||
build: standalone
|
||||
kind: fixed_name
|
||||
|
||||
@@ -3180,6 +3180,17 @@ def resolve_platform_cores(
|
||||
"""
|
||||
cores_config = config.get("cores")
|
||||
platform_key = str(config.get("_key") or "")
|
||||
# The names a build the platform compiles itself answers to: there the
|
||||
# name means that build, and a standalone + libretro profile of another
|
||||
# revision under the same name is not what the platform runs (ROCKNIX's
|
||||
# amiberry is 5.6.5). A libretro-only profile of the name stays: RetroPie
|
||||
# builds minivmac37 standalone beside the minivmac core.
|
||||
own_names = {
|
||||
n
|
||||
for name, p in profiles.items()
|
||||
if platform_key and platform_key in (p.get("built_by") or [])
|
||||
for n in (name, *(str(c) for c in p.get("cores") or []))
|
||||
}
|
||||
|
||||
def every_libretro() -> set[str]:
|
||||
# A build only some platforms compile (built_by) is absent from the
|
||||
@@ -3194,6 +3205,11 @@ def resolve_platform_cores(
|
||||
not p.get("built_by")
|
||||
or (platform_key and platform_key in p["built_by"])
|
||||
)
|
||||
and (
|
||||
platform_key in (p.get("built_by") or [])
|
||||
or "standalone" not in p.get("type", "")
|
||||
or not own_names & {name, *(str(c) for c in p.get("cores") or [])}
|
||||
)
|
||||
}
|
||||
|
||||
if cores_config == "all_libretro":
|
||||
|
||||
@@ -308,6 +308,30 @@ def amiberry(tree: RepoTree) -> list[Launcher]:
|
||||
if not links:
|
||||
raise mk.missing(f"ln -s of {BIOS_ROOT}")
|
||||
records.extend(link_record("amiberry", mk, link) for link in links)
|
||||
# The script copies the installed folder, links included, to the one it
|
||||
# enters before it runs amiberry: the kickstarts link is read there.
|
||||
copy_line, copy = script.find(r"cp -rf? (\S+) \$\{?(\w+)\}?\s*$", "copy of the installed folder")
|
||||
cd_line, cd = script.find(r"^\s*cd \$\{?(\w+)\}?\s*$", "working directory")
|
||||
if cd.group(1) != copy.group(2):
|
||||
raise LauncherPatternMissing(script.path, "cd into the copied folder")
|
||||
entered: set[int] = {cd_line}
|
||||
folder = script.expand("${" + cd.group(1) + "}", cd_line, entered)
|
||||
records.append(Launcher(
|
||||
emulator="amiberry", build="standalone", kind="passes_path", names=[],
|
||||
source_ref=source_ref([(script.path, entered)]),
|
||||
search_dir=folder, passes_to=f"working directory of {script.path.rsplit('/', 1)[-1]}",
|
||||
))
|
||||
installed = copy.group(1).rstrip("/")
|
||||
for link in links:
|
||||
if not link.link.startswith(installed + "/"):
|
||||
continue
|
||||
copied = folder + link.link[len(installed):]
|
||||
records.append(Launcher(
|
||||
emulator="amiberry", build="standalone", kind="links", names=list(link.names),
|
||||
source_ref=source_ref([(mk.path, link.lines), (script.path, {copy_line} | entered)]),
|
||||
search_dir=link.bios_side,
|
||||
passes_to=f"symlink {copied} -> {link.target}, copied with {installed}",
|
||||
))
|
||||
return records
|
||||
|
||||
|
||||
|
||||
@@ -143,6 +143,11 @@ AMIBERRY_SH = text(
|
||||
fi
|
||||
sed -i "s#@BIOS_PATH@#${BIOS_PATH}#g" ${AMIBERRY_TMP_CONFIG}
|
||||
}
|
||||
if [ ! -d "${AMIBERRY_DIR}" ]
|
||||
then
|
||||
cp -rf /usr/config/amiberry ${AMIBERRY_DIR}
|
||||
fi
|
||||
cd ${AMIBERRY_DIR}
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -405,7 +410,7 @@ class NamesTheConfigsFix(unittest.TestCase):
|
||||
f"{pkg}/config/conf/AmigaA500-default.uae": uae.format("kick34005.A500.rom"),
|
||||
}
|
||||
)
|
||||
a1200, a500, link = (r.entry() for r in rl.amiberry(tree))
|
||||
a1200, a500, link, entered, copied = (r.entry() for r in rl.amiberry(tree))
|
||||
self.assertEqual((a1200["slot"], a1200["names"]), ("A1200", ["kick40068.A1200.rom"]))
|
||||
self.assertEqual(a1200["depends_on_option"], "game name matches AGA|CD32")
|
||||
self.assertEqual((a500["slot"], a500["names"]), ("A500", ["kick34005.A500.rom"]))
|
||||
@@ -420,6 +425,21 @@ class NamesTheConfigsFix(unittest.TestCase):
|
||||
link["passes_to"], "symlink /usr/config/amiberry/kickstarts -> /storage/roms/bios"
|
||||
)
|
||||
self.assertEqual(link["source_ref"], f"{pkg}/package.mk:4")
|
||||
# The script runs amiberry in the copy of /usr/config/amiberry, which
|
||||
# carries the kickstarts link.
|
||||
self.assertEqual(
|
||||
(entered["kind"], entered["search_dir"], entered["passes_to"]),
|
||||
("passes_path", "/storage/.config/amiberry", "working directory of start_amiberry.sh"),
|
||||
)
|
||||
self.assertEqual(entered["source_ref"], f"{pkg}/scripts/start_amiberry.sh:1, 16")
|
||||
self.assertEqual(
|
||||
copied["passes_to"],
|
||||
"symlink /storage/.config/amiberry/kickstarts -> /storage/roms/bios,"
|
||||
" copied with /usr/config/amiberry",
|
||||
)
|
||||
self.assertEqual(
|
||||
copied["source_ref"], f"{pkg}/package.mk:4, {pkg}/scripts/start_amiberry.sh:1, 14-16"
|
||||
)
|
||||
|
||||
def test_mednafen_one_record_per_module(self):
|
||||
pkg = f"{SA}/mednafen"
|
||||
|
||||
Reference in new issue
Block a user