chore: drop the shared groups no platform reads

Six of the eight shared groups injected nothing: three were
included by no platform, three repeated System.dat entry for entry,
so a correction made in them reached no pack. They are removed with
their scraper wiring, and a test requires every remaining group to
contribute an entry somewhere.
This commit is contained in:
Abdessamad Derraz committed 2026-10-18 04:03:01 +02:00
1 parent b6f6798c15
commit d5f40a4515
4 files changed
+26 -186

No files matched your search

-172
View File
@@ -3,39 +3,6 @@
# Referenced via `includes: [group_name]` in platform configs.
shared_groups:
mt32:
- name: MT32_CONTROL.ROM
sha1: "b083518fffb7f66b03c23b7eb4f868e62dc5a987"
md5: "5626206284b22c2734f3e9efefcd2675"
destination: "scummvm/extra/MT32_CONTROL.ROM"
required: false
- name: MT32_PCM.ROM
sha1: "f6b1eebc4b2d200ec6d3d21d51325d5b48c60252"
md5: "89e42e386e82e0cacb4a2704a03706ca"
destination: "scummvm/extra/MT32_PCM.ROM"
required: false
jiffydos:
- name: JiffyDOS_C128.bin
sha1: "7d1898f32beae4b2ae610d469ce578a588efaa7c"
destination: "vice/JiffyDOS_C128.bin"
required: false
- name: JiffyDOS_C64.bin
sha1: "31e73e66eccb28732daea8ec3ad1addd9b39a017"
destination: "vice/JiffyDOS_C64.bin"
required: false
- name: JiffyDOS_1541-II.bin
sha1: "b1a5b826304d3df2a27d7163c6a81a532e040d32"
destination: "vice/JiffyDOS_1541-II.bin"
required: false
- name: JiffyDOS_1571_repl310654.bin
sha1: "d4b79b60cf1eaa399d0932200eb7811e00455249"
destination: "vice/JiffyDOS_1571_repl310654.bin"
required: false
- name: JiffyDOS_1581.bin
sha1: "65bbf2be7bcd5bdcbff609d6c66471ffb9d04bfe"
destination: "vice/JiffyDOS_1581.bin"
required: false
# NEC PC-9801/9821 — NP2kai core
# np2kai hardcodes "np2kai/" subfolder for firmware lookups
@@ -114,46 +81,6 @@ shared_groups:
crc32: "638864c1"
size: 5288
# Sharp X68000 — PX68k core
# PX68k hardcodes "keropi/" subfolder for ROM lookups
# ref: px68k-libretro/libretro.c:1834 — sprintf(retro_system_conf, "%s%ckeropi", ...)
keropi:
- name: cgrom.dat
destination: keropi/cgrom.dat
required: true
sha1: "8d72c5b4d63bb14c5dbdac495244d659aa1498b6"
md5: "cb0a5cfcf7247a7eab74bb2716260269"
crc32: "9f3195f1"
size: 786432
- name: iplrom.dat
destination: keropi/iplrom.dat
required: true
sha1: "0ed038ed2133b9f78c6e37256807424e0d927560"
md5: "7fd4caabac1d9169e289f0f7bbf71d8e"
crc32: "72bdf532"
size: 131072
- name: iplrom30.dat
destination: keropi/iplrom30.dat
required: true
sha1: "239e9124568c862c31d9ec0605e32373ea74b86a"
md5: "f373003710ab4322642f527f567e020a"
crc32: "e8f8fdad"
size: 131072
- name: iplromco.dat
destination: keropi/iplromco.dat
required: true
sha1: "77511fc58798404701f66b6bbc9cbde06596eba7"
md5: "cc78d4f4900f622bd6de1aed7f52592f"
crc32: "6c7ef608"
size: 131072
- name: iplromxv.dat
destination: keropi/iplromxv.dat
required: true
sha1: "e33cdcdb69cd257b0b211ef46e7a8b144637db57"
md5: "0617321daa182c3f3d6f41fd02fb3275"
crc32: "00eeb408"
size: 131072
# NEC PC-8801 — QUASI88 core
# QUASI88 searches "quasi88/" subfolder first
# ref: quasi88-libretro/src/LIBRETRO/libretro.c:463 — snprintf(..., "%s%cquasi88%c%s", ...)
@@ -183,102 +110,3 @@ shared_groups:
destination: quasi88/N88EXT3.ROM
required: true
md5: "fc4b76a402ba501e6ba6de4b3e8b4273"
# Sinclair ZX Spectrum — Fuse core (Pentagon/Scorpion ROMs)
# VERIFIED: fuse-libretro/src/compat/paths.c compat_get_next_path()
# returns empty path — core searches system/ FLAT, not fuse/ subfolder.
# The libretro docs incorrectly show "fuse/" prefix. Tested against
# fuse/settings.c:221-229 which defines names without prefix.
# Shared group kept for platforms that DO use the fuse/ prefix (Recalbox).
fuse:
- name: 128p-0.rom
destination: fuse/128p-0.rom
required: true
sha1: "d07fcdeca892ee80494d286ea9ea5bf3928a1aca"
md5: "a249565f03b98d004ee7f019570069cd"
size: 16384
- name: 128p-1.rom
destination: fuse/128p-1.rom
required: true
- name: trdos.rom
destination: fuse/trdos.rom
required: true
sha1: "21695e3f2a8f796386ce66eea8a246b0ac44810c"
md5: "0da70a5d2a0e733398e005b96b7e4ba6"
size: 16384
- name: gluck.rom
destination: fuse/gluck.rom
required: true
sha1: "015eb96dafb273d4f4512c467e9b43c305fd1bc4"
md5: "d5869034604dbfd2c1d54170e874fd0a"
size: 16384
- name: 256s-0.rom
destination: fuse/256s-0.rom
required: true
sha1: "477114ff0fe1388e0979df1423602b21248164e5"
md5: "b9fda5b6a747ff037365b0e2d8c4379a"
size: 16384
- name: 256s-1.rom
destination: fuse/256s-1.rom
required: true
sha1: "367b5a102fb663beee8e7930b8c4acc219c1f7b3"
md5: "643861ad34831b255bf2eb64e8b6ecb8"
size: 16384
- name: 256s-2.rom
destination: fuse/256s-2.rom
required: true
sha1: "07783ee295274d8ff15d935bfd787c8ac1d54900"
md5: "d8ad507b1c915a9acfe0d73957082926"
size: 16384
- name: 256s-3.rom
destination: fuse/256s-3.rom
required: true
sha1: "33703e97cc93b7edfcc0334b64233cf81b7930db"
md5: "ce0723f9bc02f4948c15d3b3230ae831"
size: 16384
# Enterprise 128 / Videoton TVC — ep128emu core
# ep128emu loads ROMs from "ep128emu/roms/" subfolder
# ref: ep128emu-core/core/core.cpp:56,59 — romBasePath.append("/ep128emu/roms/")
# since v1.1.0 external BIOS is optional (built-in fallback)
ep128emu:
- name: hun.rom
destination: ep128emu/roms/hun.rom
required: false
md5: "22167938f142c222f40992839aa21a06"
- name: exos21.rom
destination: ep128emu/roms/exos21.rom
required: false
md5: "f36f24cbb87745fbd2714e4df881db09"
- name: basic21.rom
destination: ep128emu/roms/basic21.rom
required: false
md5: "e972fe42b398c9ff1d93ff014786aec6"
- name: exdos13.rom
destination: ep128emu/roms/exdos13.rom
required: false
md5: "ddff70c014d1958dc75378b6c9aab6f8"
- name: basic20.rom
destination: ep128emu/roms/basic20.rom
required: false
md5: "8e18edce4a7acb2c33cc0ab18f988482"
- name: exos20.rom
destination: ep128emu/roms/exos20.rom
required: false
md5: "5ad3baaad3b5156d6b60b34229a676fb"
- name: brd.rom
destination: ep128emu/roms/brd.rom
required: false
md5: "6af0402906944fd134004b85097c8524"
# Sega Saturn — Kronos core
# Kronos searches "kronos/" subfolder first, falls back to root
# ref: libretro-kronos/libretro/libretro.c, docs.libretro.com/library/kronos
kronos:
- name: saturn_bios.bin
destination: kronos/saturn_bios.bin
required: true
sha1: "2b8cb4f87580683eb4d760e4ed210813d667f0a2"
md5: "af5828fdff51384f99b3c4926be27762"
crc32: "2aba43c2"
size: 524288
-6
View File
@@ -990,8 +990,6 @@ systems:
native_system: Enterprise - 64/128
native_path: ep128emu/roms/zt19hfnt.rom
native_id: Enterprise - 64/128
includes:
- ep128emu
epoch-scv:
files:
- name: upd7801g.s01
@@ -2807,8 +2805,6 @@ systems:
core: kronos
manufacturer: Sega
docs: "https://docs.libretro.com/library/kronos/"
includes:
- kronos
sharp-x1:
files:
- name: IPLROM.X1
@@ -2882,8 +2878,6 @@ systems:
core: px68k
manufacturer: Sharp
docs: "https://docs.libretro.com/library/px68k/"
includes:
- keropi
sinclair-zx-spectrum:
files:
- name: 128-0.rom
+4 -8
View File
@@ -451,22 +451,18 @@ class Scraper(BaseScraper):
systems[sys_id]["files"].append({**ef, "curated": True})
existing.add(key)
# ep128emu shared group for Enterprise
if "enterprise-64-128" in systems:
systems["enterprise-64-128"].setdefault("includes", [])
if "ep128emu" not in systems["enterprise-64-128"]["includes"]:
systems["enterprise-64-128"]["includes"].append("ep128emu")
# Inject shared group references for systems that have core-specific
# subdirectory requirements already defined in _shared.yml.
# Note: fuse/ prefix NOT injected for sinclair-zx-spectrum.
# Verified in fuse-libretro/src/compat/paths.c -core searches
# system/ flat, not fuse/ subfolder. Docs are wrong on this.
# A group System.dat already covers entry for entry injects nothing
# (ep128emu, keropi and kronos were), and a correction made there
# would never reach a pack: load_platform_config keeps the
# platform's own entry.
SYSTEM_SHARED_GROUPS = {
"nec-pc-88": ["quasi88"],
"nec-pc-98": ["np2kai"],
"sharp-x68000": ["keropi"],
"sega-saturn": ["kronos"],
}
for sys_id, groups in SYSTEM_SHARED_GROUPS.items():
if sys_id in systems:
+22
View File
@@ -457,6 +457,28 @@ class APackIsSwappedInWhole(unittest.TestCase):
self.assertNotIn('ZipFile(zip_path, "w"', source)
class EverySharedGroupServesAPlatform(unittest.TestCase):
"""Six of the eight shared groups injected nothing: fuse, mt32 and
jiffydos were included by no platform, and kronos, keropi and ep128emu
repeated System.dat entry for entry. load_platform_config keeps the
platform's own entry, so a hash corrected there changed no pack, no
verify and no manifest, and nothing said so."""
def test_each_group_contributes_an_entry_somewhere(self):
from common import list_registered_platforms, load_platform_config
platforms_dir = str(ROOT / "platforms")
with (ROOT / "platforms" / "_shared.yml").open(encoding="utf-8") as handle:
groups = set((yaml.safe_load(handle) or {}).get("shared_groups") or {})
served = {
entry.get("shared_group")
for name in list_registered_platforms(platforms_dir, include_archived=True)
for system in load_platform_config(name, platforms_dir).get("systems", {}).values()
for entry in system.get("files", [])
}
self.assertEqual(sorted(groups - served), [])
class FaqRegressions(unittest.TestCase):
"""The FAQ states facts the code owns; these tie it back to the source.