From a7e757598f19a9acc07f05369f59607d094a06eb Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Mon, 9 Nov 2026 21:27:51 +0100 Subject: [PATCH] fix: list the libretro cores rocknix installs ROCKNIX listed retroarch, which stood for every libretro profile (351 resolved), while its devices build 124 libretro packages. The platform list now names the cores those packages install on at least one device. The targets scraper read a package's name as its core: vice-lr installs vice_x128, vice_x64, vice_xpet, vice_xplus4 and vice_xvic, which reached no device. It now reads each package's makeinstall_target, the file copied to ${INSTALL}/usr/lib/libretro under its target name, through TARGET_ARCH and ENABLE_32BIT (pcsx_rearmed-lr, desmume-lr). 155 profiles resolve, each built by a device, and no device loses one. --- install/targets/rocknix.json | 536 +++++++++++++----- platforms/rocknix.yml | 127 ++++- platforms/targets/rocknix.yml | 294 ++++++---- scripts/scraper/rocknix_scraper.py | 25 +- .../targets/rocknix_targets_scraper.py | 144 ++++- tests/test_launchers_rocknix.py | 4 +- tests/test_scraper_contract.py | 5 +- tests/test_target_scrapers.py | 65 ++- 8 files changed, 909 insertions(+), 291 deletions(-) diff --git a/install/targets/rocknix.json b/install/targets/rocknix.json index d6e122564..ad091575a 100644 --- a/install/targets/rocknix.json +++ b/install/targets/rocknix.json @@ -1,6 +1,7 @@ { "amd64": [ "81", + "DoubleCherryGB", "a5200", "amiberry", "arduous", @@ -27,11 +28,12 @@ "bk", "bluemsx", "boom3", + "boom3_xp", "bsnes", "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -44,7 +46,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "duckstation", "duckstation-sa", "easyrpg", @@ -58,7 +59,6 @@ "flycast", "flycast-sa", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -88,9 +88,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -98,7 +98,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -130,7 +130,7 @@ "scummvm-sa", "skyemu", "skyemu-sa", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -150,6 +150,11 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", @@ -157,14 +162,15 @@ "vitaquake2", "vitaquake3", "wasm4", + "x1", "xemu", "xemu-sa", - "xmil", "yabasanshiro", "yabasanshiro-sa" ], "h700": [ "81", + "DoubleCherryGB", "a5200", "amiberry", "arduous", @@ -194,7 +200,6 @@ "desmume", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -213,7 +218,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -241,9 +245,9 @@ "mame2015", "mednafen", "melonds", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -251,7 +255,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "neocd", "nestopia", "np2kai", @@ -260,6 +264,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -280,7 +285,7 @@ "scummvm", "scummvm-sa", "skyemu", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -301,16 +306,23 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vitaquake2", "wasm4", - "xmil", + "x1", + "yabadabadoo", "yabasanshiro", "yabasanshiro-sa" ], "pc": [ "81", + "DoubleCherryGB", "a5200", "amiberry", "arduous", @@ -337,11 +349,12 @@ "bk", "bluemsx", "boom3", + "boom3_xp", "bsnes", "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -354,7 +367,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "duckstation", "duckstation-sa", "easyrpg", @@ -368,7 +380,6 @@ "flycast", "flycast-sa", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -398,9 +409,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -408,7 +419,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -440,7 +451,7 @@ "scummvm-sa", "skyemu", "skyemu-sa", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -460,6 +471,11 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", @@ -467,14 +483,15 @@ "vitaquake2", "vitaquake3", "wasm4", + "x1", "xemu", "xemu-sa", - "xmil", "yabasanshiro", "yabasanshiro-sa" ], "rk3326": [ "81", + "DoubleCherryGB", "a5200", "amiberry", "arduous", @@ -504,7 +521,6 @@ "desmume", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -523,7 +539,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -551,9 +566,9 @@ "mame2015", "mednafen", "melonds", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -561,7 +576,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "neocd", "nestopia", "np2kai", @@ -570,6 +585,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -590,7 +606,7 @@ "scummvm", "scummvm-sa", "skyemu", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -611,19 +627,24 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vitaquake2", "wasm4", - "xmil", + "x1", + "yabadabadoo", "yabasanshiro", "yabasanshiro-sa" ], "rk3399": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "armsx2", @@ -647,7 +668,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -659,7 +680,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -678,7 +698,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -707,9 +726,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -717,7 +736,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -728,6 +747,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -748,7 +768,7 @@ "scummvm", "scummvm-sa", "skyemu", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -769,19 +789,24 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vitaquake2", "wasm4", - "xmil", + "x1", + "yabadabadoo", "yabasanshiro", "yabasanshiro-sa" ], "rk3566": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "armsx2", @@ -816,7 +841,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -835,7 +859,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -864,9 +887,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -874,7 +897,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "neocd", "nestopia", "np2kai", @@ -883,6 +906,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -903,7 +927,7 @@ "scummvm", "scummvm-sa", "skyemu", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -924,21 +948,26 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", - "xmil", + "x1", + "yabadabadoo", "yabasanshiro", "yabasanshiro-sa" ], "rk3576": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "armsx2", @@ -973,7 +1002,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -992,7 +1020,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -1021,9 +1048,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -1031,7 +1058,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "neocd", "nestopia", "np2kai", @@ -1040,6 +1067,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -1060,7 +1088,7 @@ "scummvm", "scummvm-sa", "skyemu", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -1081,21 +1109,26 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", - "xmil", + "x1", + "yabadabadoo", "yabasanshiro", "yabasanshiro-sa" ], "rk3588": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "armsx2", @@ -1122,7 +1155,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -1134,7 +1167,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -1153,7 +1185,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -1182,9 +1213,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -1192,7 +1223,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "neocd", "nestopia", "np2kai", @@ -1201,6 +1232,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -1221,7 +1253,7 @@ "scummvm", "scummvm-sa", "skyemu", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -1244,21 +1276,26 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", - "xmil", + "x1", + "yabadabadoo", "yabasanshiro", "yabasanshiro-sa" ], "s922x": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "armsx2", @@ -1287,7 +1324,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -1298,7 +1335,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -1317,7 +1353,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -1344,9 +1379,9 @@ "mame2015", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -1354,7 +1389,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "neocd", "nestopia", "np2kai", @@ -1363,6 +1398,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -1383,7 +1419,7 @@ "scummvm", "scummvm-sa", "skyemu", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -1404,21 +1440,203 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", - "xmil", + "x1", + "yabasanshiro", + "yabasanshiro-sa" + ], + "sdm845": [ + "81", + "DoubleCherryGB", + "a5200", + "amiberry", + "arduous", + "armsx2", + "armsx2-sa", + "atari800", + "azahar", + "azahar-sa", + "b2", + "beetle_gba", + "beetle_lynx", + "beetle_ngp", + "beetle_pce", + "beetle_pce_fast", + "beetle_pcfx", + "beetle_psx", + "beetle_saturn", + "beetle_supafaust", + "beetle_supergrafx", + "beetle_vb", + "beetle_wswan", + "bigpemu", + "bigpemu-sa", + "bk", + "bluemsx", + "bsnes", + "bsnes2014_accuracy", + "bsnes2014_balanced", + "bsnes2014_performance", + "bsnes_hd_beta", + "bsnes_mercury_accuracy", + "bsnes_mercury_balanced", + "bsnes_mercury_performance", + "cap32", + "cemu", + "cemu-sa", + "crocods", + "daedalusx64", + "daedalusx64-sa", + "daphne", + "desmume", + "dolphin", + "dolphin-sa", + "dosbox_core", + "dosbox_pure", + "dsperate", + "dsperate-sa", + "duckstation", + "duckstation-sa", + "easyrpg", + "ecwolf", + "emuscv", + "fake08", + "fbalpha2012", + "fbalpha2019", + "fbneo", + "fceumm", + "flycast", + "flycast-sa", + "flycast2021", + "fmsx", + "freeintv", + "freej2me", + "fuse", + "gambatte", + "gearboy", + "gearcoleco", + "geargrafx", + "gearlynx", + "gearsystem", + "genesis_plus_gx", + "genesis_plus_gx_wide", + "geolith", + "gpsp", + "gw", + "gzdoom", + "gzdoom-sa", + "handy", + "hatari", + "hatarisa", + "hypseus-singe", + "jaxe", + "kronos", + "mame", + "mame2003_plus", + "mame2010", + "mame2015", + "mednafen", + "melonds", + "melonds-sa", + "melondsds", + "mesen", + "mesen-s", + "mgba", + "minivmac", + "mojozork", + "moonlight", + "mu", + "mupen64plus", + "mupen64plus-sa", + "mupen64plus_next", + "nanoboyadvance", + "nanoboyadvance-sa", + "neocd", + "nestopia", + "np2kai", + "o2em", + "openbor", + "opera", + "parallel_n64", + "pcsx_rearmed", + "pcsx_rearmed32", + "pico-8", + "picodrive", + "pokemini", + "potator", + "ppsspp", + "ppsspp-sa", + "prboom", + "prosystem", + "puae", + "puae2021", + "px68k", + "quasi88", + "quicknes", + "race", + "rpcs3", + "rpcs3-sa", + "same_cdi", + "sameboy", + "sameduck", + "scummvm", + "scummvm-sa", + "skyemu", + "skyemu-sa", + "smsplus", + "snes9x", + "snes9x2002", + "snes9x2005_plus", + "snes9x2010", + "stella", + "supermodel", + "supermodel-sa", + "supersnes9x", + "swanstation", + "tgbdual", + "theodore", + "tic80", + "touchhle", + "touchhle-sa", + "tyrquake", + "uae4arm", + "uzem", + "vba_next", + "vbam", + "vecx", + "vice", + "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", + "vircon32", + "virtualjaguar", + "vita3k", + "vita3k-sa", + "vitaquake2", + "wasm4", + "x1", + "xemu", + "xemu-sa", "yabasanshiro", "yabasanshiro-sa" ], "sm4450": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "armsx2", @@ -1447,7 +1665,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -1463,7 +1681,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "dsperate", "dsperate-sa", "duckstation", @@ -1480,7 +1697,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -1510,9 +1726,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -1520,7 +1736,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -1531,6 +1747,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -1552,7 +1769,7 @@ "scummvm-sa", "skyemu", "skyemu-sa", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -1575,23 +1792,28 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", + "x1", "xemu", "xemu-sa", - "xmil", + "yabadabadoo", "yabasanshiro", "yabasanshiro-sa" ], "sm6115": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "armsx2", @@ -1618,7 +1840,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -1630,7 +1852,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -1649,7 +1870,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -1678,9 +1898,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -1688,7 +1908,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "neocd", "nestopia", "np2kai", @@ -1697,6 +1917,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -1717,7 +1938,7 @@ "scummvm", "scummvm-sa", "skyemu", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -1740,21 +1961,26 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", - "xmil", + "x1", + "yabadabadoo", "yabasanshiro", "yabasanshiro-sa" ], "sm8250": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "armsx2", @@ -1783,7 +2009,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -1799,7 +2025,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "dsperate", "dsperate-sa", "duckstation", @@ -1816,7 +2041,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -1846,9 +2070,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -1856,7 +2080,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -1867,6 +2091,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -1890,7 +2115,7 @@ "scummvm-sa", "skyemu", "skyemu-sa", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -1913,23 +2138,27 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", + "x1", "xemu", "xemu-sa", - "xmil", "yabasanshiro", "yabasanshiro-sa" ], "sm8550": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "ares", @@ -1960,7 +2189,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -1976,7 +2205,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "drastic", "drastic-sa", "dsperate", @@ -1995,7 +2223,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -2027,9 +2254,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -2037,7 +2264,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -2048,6 +2275,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -2071,7 +2299,7 @@ "scummvm-sa", "skyemu", "skyemu-sa", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -2094,23 +2322,27 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", + "x1", "xemu", "xemu-sa", - "xmil", "yabasanshiro", "yabasanshiro-sa" ], "sm8650": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "ares", @@ -2141,7 +2373,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -2154,7 +2386,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "dsperate", "dsperate-sa", "duckstation", @@ -2171,7 +2402,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -2202,9 +2432,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -2212,7 +2442,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -2223,6 +2453,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -2246,7 +2477,7 @@ "scummvm-sa", "skyemu", "skyemu-sa", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -2269,23 +2500,27 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", + "x1", "xemu", "xemu-sa", - "xmil", "yabasanshiro", "yabasanshiro-sa" ], "sm8750": [ "81", + "DoubleCherryGB", "a5200", - "aethersx2", - "aethersx2-sa", "amiberry", "arduous", "ares", @@ -2316,7 +2551,7 @@ "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -2329,7 +2564,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "dsperate", "dsperate-sa", "duckstation", @@ -2346,7 +2580,6 @@ "flycast-sa", "flycast2021", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -2377,9 +2610,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -2387,7 +2620,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -2398,6 +2631,7 @@ "opera", "parallel_n64", "pcsx_rearmed", + "pcsx_rearmed32", "pico-8", "picodrive", "pokemini", @@ -2421,7 +2655,7 @@ "scummvm-sa", "skyemu", "skyemu-sa", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -2444,20 +2678,26 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", "vita3k-sa", "vitaquake2", "wasm4", + "x1", "xemu", "xemu-sa", - "xmil", "yabasanshiro", "yabasanshiro-sa" ], "x86_64": [ "81", + "DoubleCherryGB", "a5200", "amiberry", "arduous", @@ -2484,11 +2724,12 @@ "bk", "bluemsx", "boom3", + "boom3_xp", "bsnes", "bsnes2014_accuracy", "bsnes2014_balanced", "bsnes2014_performance", - "bsnes_hd", + "bsnes_hd_beta", "bsnes_mercury_accuracy", "bsnes_mercury_balanced", "bsnes_mercury_performance", @@ -2501,7 +2742,6 @@ "dolphin-sa", "dosbox_core", "dosbox_pure", - "doublecherrygb", "duckstation", "duckstation-sa", "easyrpg", @@ -2515,7 +2755,6 @@ "flycast", "flycast-sa", "fmsx", - "freechaf", "freeintv", "freej2me", "fuse", @@ -2545,9 +2784,9 @@ "mednafen", "melonds", "melonds-sa", - "melonds_ds", + "melondsds", "mesen", - "mesen_s", + "mesen-s", "mgba", "minivmac", "mojozork", @@ -2555,7 +2794,7 @@ "mu", "mupen64plus", "mupen64plus-sa", - "mupen64plus_nx", + "mupen64plus_next", "nanoboyadvance", "nanoboyadvance-sa", "neocd", @@ -2587,7 +2826,7 @@ "scummvm-sa", "skyemu", "skyemu-sa", - "smsplus_gx", + "smsplus", "snes9x", "snes9x2002", "snes9x2005_plus", @@ -2607,6 +2846,11 @@ "vecx", "vice", "vice-sa", + "vice_x128", + "vice_x64", + "vice_xpet", + "vice_xplus4", + "vice_xvic", "vircon32", "virtualjaguar", "vita3k", @@ -2614,9 +2858,9 @@ "vitaquake2", "vitaquake3", "wasm4", + "x1", "xemu", "xemu-sa", - "xmil", "yabasanshiro", "yabasanshiro-sa" ] diff --git a/platforms/rocknix.yml b/platforms/rocknix.yml index 88a0f42fa..ed9e6620f 100644 --- a/platforms/rocknix.yml +++ b/platforms/rocknix.yml @@ -6,66 +6,191 @@ base_destination: bios hash_type: md5 verification_mode: md5 cores: -- retroarch +- "81" +- DoubleCherryGB +- a5200 - amiberry +- arduous - ares - ares-sa - armsx2 - armsx2-sa +- atari800 - azahar - azahar-sa +- b2 +- beetle_gba +- beetle_lynx +- beetle_ngp +- beetle_pce +- beetle_pce_fast +- beetle_pcfx +- beetle_psx +- beetle_saturn +- beetle_supafaust +- beetle_supergrafx +- beetle_vb +- beetle_wswan - bigpemu - bigpemu-sa +- bk +- bluemsx +- boom3 +- boom3_xp +- bsnes +- bsnes2014_accuracy +- bsnes2014_balanced +- bsnes2014_performance +- bsnes_hd_beta +- bsnes_mercury_accuracy +- bsnes_mercury_balanced +- bsnes_mercury_performance +- cap32 - cemu - cemu-sa +- crocods - daedalusx64 - daedalusx64-sa +- daphne +- desmume - dolphin - dolphin-sa +- dosbox_core +- dosbox_pure - drastic - drastic-sa - dsperate - dsperate-sa - duckstation - duckstation-sa +- easyrpg +- ecwolf +- emuscv +- fake08 +- fbalpha2012 +- fbalpha2019 +- fbneo +- fceumm - flycast - flycast-sa +- flycast2021 +- fmsx +- freeintv +- freej2me +- fuse +- gambatte +- gearboy +- gearcoleco +- geargrafx +- gearlynx +- gearsystem +- genesis_plus_gx +- genesis_plus_gx_wide +- geolith - gopher64 - gopher64-sa +- gpsp +- gw - gzdoom - gzdoom-sa +- handy - hatari - hatarisa - heroic - hypseus-singe +- jaxe +- kronos +- mame +- mame2003_plus +- mame2010 +- mame2015 - mednafen - melonds - melonds-sa +- melondsds +- mesen +- mesen-s +- mgba +- minivmac +- mojozork +- mu - mupen64plus - mupen64plus-sa +- mupen64plus_next - nanoboyadvance - nanoboyadvance-sa +- neocd +- nestopia +- np2kai +- o2em - openbor +- opera +- parallel_n64 +- pcsx_rearmed +- pcsx_rearmed32 - pico-8 +- picodrive +- pokemini +- potator - ppsspp - ppsspp-sa +- prboom +- prosystem +- puae +- puae2021 +- px68k +- quasi88 +- quicknes +- race - rpcs3 - rpcs3-sa +- same_cdi +- sameboy +- sameduck - scummvm - scummvm-sa - skyemu - skyemu-sa +- smsplus +- snes9x +- snes9x2002 +- snes9x2005_plus +- snes9x2010 - steam +- stella - supermodel - supermodel-sa +- supersnes9x +- swanstation +- tgbdual +- theodore +- tic80 - touchhle - touchhle-sa +- tyrquake +- uae4arm +- uzem +- vba_next +- vbam +- vecx - vice - vice-sa +- vice_x128 +- vice_x64 +- vice_xpet +- vice_xplus4 +- vice_xvic +- vircon32 +- virtualjaguar - vita3k - vita3k-sa +- vitaquake2 +- vitaquake3 +- wasm4 +- x1 - xemu - xemu-sa +- yabadabadoo - yabasanshiro - yabasanshiro-sa standalone_cores: diff --git a/platforms/targets/rocknix.yml b/platforms/targets/rocknix.yml index c5eb2d604..35113c4fa 100644 --- a/platforms/targets/rocknix.yml +++ b/platforms/targets/rocknix.yml @@ -1,11 +1,12 @@ platform: rocknix source: https://github.com/ROCKNIX/distribution/tree/20261101/projects/ROCKNIX/packages/virtual/emulators/package.mk -scraped_at: '2026-11-09T16:01:58Z' +scraped_at: '2026-11-09T20:12:32Z' targets: amd64: architecture: x86_64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -32,11 +33,12 @@ targets: - bk - bluemsx - boom3 + - boom3_xp - bsnes - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -49,7 +51,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - duckstation - duckstation-sa - easyrpg @@ -92,9 +93,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -102,7 +103,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - nanoboyadvance - nanoboyadvance-sa - neocd @@ -134,7 +135,7 @@ targets: - scummvm-sa - skyemu - skyemu-sa - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -154,6 +155,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -162,15 +168,16 @@ targets: - vitaquake3 - wasm4 - wine + - x1 - xemu - xemu-sa - - xmil - yabasanshiro - yabasanshiro-sa h700: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -202,7 +209,6 @@ targets: - desmume - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -248,9 +254,9 @@ targets: - mame2015 - mednafen - melonds - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -258,7 +264,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - neocd - nestopia - np2kai @@ -267,6 +273,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -288,7 +295,7 @@ targets: - scummvm - scummvm-sa - skyemu - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -309,12 +316,17 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vitaquake2 - wasm4 - wine - - xmil + - x1 - yabadabadoo - yabasanshiro - yabasanshiro-sa @@ -322,6 +334,7 @@ targets: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -353,7 +366,6 @@ targets: - desmume - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -399,9 +411,9 @@ targets: - mame2015 - mednafen - melonds - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -409,7 +421,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - neocd - nestopia - np2kai @@ -418,6 +430,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -439,7 +452,7 @@ targets: - scummvm - scummvm-sa - skyemu - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -460,12 +473,17 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vitaquake2 - wasm4 - wine - - xmil + - x1 - yabadabadoo - yabasanshiro - yabasanshiro-sa @@ -473,6 +491,7 @@ targets: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -499,7 +518,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -511,7 +530,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -558,9 +576,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -568,7 +586,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - nanoboyadvance - nanoboyadvance-sa - neocd @@ -579,6 +597,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -600,7 +619,7 @@ targets: - scummvm - scummvm-sa - skyemu - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -621,12 +640,17 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vitaquake2 - wasm4 - wine - - xmil + - x1 - yabadabadoo - yabasanshiro - yabasanshiro-sa @@ -634,6 +658,7 @@ targets: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -671,7 +696,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -718,9 +742,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -728,7 +752,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - neocd - nestopia - np2kai @@ -737,6 +761,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -758,7 +783,7 @@ targets: - scummvm - scummvm-sa - skyemu - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -779,6 +804,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -786,7 +816,7 @@ targets: - vitaquake2 - wasm4 - wine - - xmil + - x1 - yabadabadoo - yabasanshiro - yabasanshiro-sa @@ -794,6 +824,7 @@ targets: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -831,7 +862,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -878,9 +908,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -888,7 +918,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - neocd - nestopia - np2kai @@ -897,6 +927,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -918,7 +949,7 @@ targets: - scummvm - scummvm-sa - skyemu - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -939,6 +970,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -946,7 +982,7 @@ targets: - vitaquake2 - wasm4 - wine - - xmil + - x1 - yabadabadoo - yabasanshiro - yabasanshiro-sa @@ -954,6 +990,7 @@ targets: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -983,7 +1020,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -995,7 +1032,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -1042,9 +1078,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -1052,7 +1088,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - neocd - nestopia - np2kai @@ -1061,6 +1097,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -1082,7 +1119,7 @@ targets: - scummvm - scummvm-sa - skyemu - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -1105,6 +1142,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -1112,7 +1154,7 @@ targets: - vitaquake2 - wasm4 - wine - - xmil + - x1 - yabadabadoo - yabasanshiro - yabasanshiro-sa @@ -1120,6 +1162,7 @@ targets: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -1151,7 +1194,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -1162,7 +1205,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -1207,9 +1249,9 @@ targets: - mame2015 - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -1217,7 +1259,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - neocd - nestopia - np2kai @@ -1226,6 +1268,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -1247,7 +1290,7 @@ targets: - scummvm - scummvm-sa - skyemu - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -1268,6 +1311,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -1275,13 +1323,14 @@ targets: - vitaquake2 - wasm4 - wine - - xmil + - x1 - yabasanshiro - yabasanshiro-sa sdm845: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -1313,7 +1362,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -1329,7 +1378,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - dsperate - dsperate-sa - duckstation @@ -1376,9 +1424,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -1386,7 +1434,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - nanoboyadvance - nanoboyadvance-sa - neocd @@ -1397,6 +1445,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -1421,7 +1470,7 @@ targets: - scummvm-sa - skyemu - skyemu-sa - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -1445,6 +1494,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -1452,15 +1506,16 @@ targets: - vitaquake2 - wasm4 - wine + - x1 - xemu - xemu-sa - - xmil - yabasanshiro - yabasanshiro-sa sm4450: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -1492,7 +1547,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -1508,7 +1563,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - dsperate - dsperate-sa - duckstation @@ -1555,9 +1609,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -1565,7 +1619,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - nanoboyadvance - nanoboyadvance-sa - neocd @@ -1576,6 +1630,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -1598,7 +1653,7 @@ targets: - scummvm-sa - skyemu - skyemu-sa - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -1622,6 +1677,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -1629,9 +1689,9 @@ targets: - vitaquake2 - wasm4 - wine + - x1 - xemu - xemu-sa - - xmil - yabadabadoo - yabasanshiro - yabasanshiro-sa @@ -1639,6 +1699,7 @@ targets: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -1668,7 +1729,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -1680,7 +1741,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -1727,9 +1787,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -1737,7 +1797,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - neocd - nestopia - np2kai @@ -1746,6 +1806,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -1767,7 +1828,7 @@ targets: - scummvm - scummvm-sa - skyemu - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -1790,6 +1851,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -1797,7 +1863,7 @@ targets: - vitaquake2 - wasm4 - wine - - xmil + - x1 - yabadabadoo - yabasanshiro - yabasanshiro-sa @@ -1805,6 +1871,7 @@ targets: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -1836,7 +1903,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -1852,7 +1919,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - dsperate - dsperate-sa - duckstation @@ -1899,9 +1965,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -1909,7 +1975,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - nanoboyadvance - nanoboyadvance-sa - neocd @@ -1920,6 +1986,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -1944,7 +2011,7 @@ targets: - scummvm-sa - skyemu - skyemu-sa - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -1968,6 +2035,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -1975,15 +2047,16 @@ targets: - vitaquake2 - wasm4 - wine + - x1 - xemu - xemu-sa - - xmil - yabasanshiro - yabasanshiro-sa sm8550: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -2017,7 +2090,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -2033,7 +2106,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - drastic - drastic-sa - dsperate @@ -2084,9 +2156,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -2094,7 +2166,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - nanoboyadvance - nanoboyadvance-sa - neocd @@ -2105,6 +2177,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -2129,7 +2202,7 @@ targets: - scummvm-sa - skyemu - skyemu-sa - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -2153,6 +2226,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -2160,15 +2238,16 @@ targets: - vitaquake2 - wasm4 - wine + - x1 - xemu - xemu-sa - - xmil - yabasanshiro - yabasanshiro-sa sm8650: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -2201,7 +2280,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -2214,7 +2293,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - dsperate - dsperate-sa - duckstation @@ -2262,9 +2340,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -2272,7 +2350,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - nanoboyadvance - nanoboyadvance-sa - neocd @@ -2283,6 +2361,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -2307,7 +2386,7 @@ targets: - scummvm-sa - skyemu - skyemu-sa - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -2331,6 +2410,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -2338,15 +2422,16 @@ targets: - vitaquake2 - wasm4 - wine + - x1 - xemu - xemu-sa - - xmil - yabasanshiro - yabasanshiro-sa sm8750: architecture: aarch64 cores: - '81' + - DoubleCherryGB - a5200 - amiberry - arduous @@ -2379,7 +2464,7 @@ targets: - bsnes2014_accuracy - bsnes2014_balanced - bsnes2014_performance - - bsnes_hd + - bsnes_hd_beta - bsnes_mercury_accuracy - bsnes_mercury_balanced - bsnes_mercury_performance @@ -2392,7 +2477,6 @@ targets: - dolphin-sa - dosbox_core - dosbox_pure - - doublecherrygb - dsperate - dsperate-sa - duckstation @@ -2440,9 +2524,9 @@ targets: - mednafen - melonds - melonds-sa - - melonds_ds + - melondsds - mesen - - mesen_s + - mesen-s - mgba - minivmac - mojozork @@ -2450,7 +2534,7 @@ targets: - mu - mupen64plus - mupen64plus-sa - - mupen64plus_nx + - mupen64plus_next - nanoboyadvance - nanoboyadvance-sa - neocd @@ -2461,6 +2545,7 @@ targets: - opera - parallel_n64 - pcsx_rearmed + - pcsx_rearmed32 - pico-8 - picodrive - pokemini @@ -2485,7 +2570,7 @@ targets: - scummvm-sa - skyemu - skyemu-sa - - smsplus_gx + - smsplus - snes9x - snes9x2002 - snes9x2005_plus @@ -2509,6 +2594,11 @@ targets: - vecx - vice - vice-sa + - vice_x128 + - vice_x64 + - vice_xpet + - vice_xplus4 + - vice_xvic - vircon32 - virtualjaguar - vita3k @@ -2516,8 +2606,8 @@ targets: - vitaquake2 - wasm4 - wine + - x1 - xemu - xemu-sa - - xmil - yabasanshiro - yabasanshiro-sa diff --git a/scripts/scraper/rocknix_scraper.py b/scripts/scraper/rocknix_scraper.py index dc7019ea6..b4aa7e4ab 100644 --- a/scripts/scraper/rocknix_scraper.py +++ b/scripts/scraper/rocknix_scraper.py @@ -190,6 +190,25 @@ class Scraper(BaseScraper): self.tag = None if url else fetch_github_latest_version(GITHUB_REPO) super().__init__(url=url or SOURCE_TEMPLATE.format(ref=self.tag)) + def _built_cores(self, standalone: list[str]) -> tuple[list[str], list[str]]: + """(cores, standalone cores) at least one device image carries. + + RetroArch runs the libretro cores the packages of its emulators + metapackage install per device + (projects/ROCKNIX/packages/virtual/emulators/package.mk), read by + the targets scraper, where every libretro profile counted before. A + standalone package no device carries is not run either. + """ + try: + from .targets.rocknix_targets_scraper import Scraper as DeviceTargets + except ImportError: + from scraper.targets.rocknix_targets_scraper import Scraper as DeviceTargets + builds = DeviceTargets().device_builds(self.tag or launcher_revision(self.url)) + libretro = sorted({core for _arch, lr, _sa in builds.values() for core in lr}) + carried = set(standalone_emulators(sorted({p for *_rest, sa in builds.values() for p in sa}))) + standalone = [name for name in standalone if name in carried] + return sorted({*libretro, *standalone}), standalone + def _fetch_standalone(self) -> list[str]: """The packages of projects/ROCKNIX/packages/emulators/standalone.""" import json @@ -281,7 +300,7 @@ class Scraper(BaseScraper): ) entry["files"].append(requirement_entry(req)) - standalone = self._fetch_standalone() + cores, standalone = self._built_cores(self._fetch_standalone()) return { "platform": "ROCKNIX", "version": self.tag or fetch_github_latest_version(GITHUB_REPO), @@ -290,9 +309,7 @@ class Scraper(BaseScraper): "base_destination": "bios", "hash_type": "md5", "verification_mode": "md5", - # RetroArch with every libretro core, plus the standalone - # emulators ROCKNIX packages beside it. - "cores": ["retroarch", *standalone], + "cores": cores, "standalone_cores": standalone, # Launched both ways only where package.mk also adds the # emulator as a RetroArch core. diff --git a/scripts/scraper/targets/rocknix_targets_scraper.py b/scripts/scraper/targets/rocknix_targets_scraper.py index 9966d11c1..e9b5f7dd3 100644 --- a/scripts/scraper/targets/rocknix_targets_scraper.py +++ b/scripts/scraper/targets/rocknix_targets_scraper.py @@ -5,6 +5,8 @@ Sources (ROCKNIX/distribution, at the release tag platforms/rocknix.yml names): image carries, those aarch64 adds, and a `case "${DEVICE}"` block per SoC - projects/ROCKNIX/devices//options -- ENABLE_32BIT, which the 32-bit cores of a device depend on (distributions/ROCKNIX/options defaults it on) + - each libretro package's package.mk -- the cores its makeinstall_target + copies to ${INSTALL}/usr/lib/libretro (vice-lr installs ten of them) An H700 or RK3326 handheld carries neither Dolphin nor AetherSX2: without a target list, its pack shipped the PS2, GameCube and PS3 firmware anyway. @@ -13,6 +15,7 @@ target list, its pack shipped the PS2, GameCube and PS3 firmware anyway. from __future__ import annotations import argparse +import json import re import sys from datetime import datetime, timezone @@ -89,18 +92,90 @@ def parse_device_cores( return libretro, standalone -def core_names(libretro: list[str], standalone: list[str]) -> list[str]: - """Package names as the profiles' cores: lists spell them. +_INSTALL_BODY_RE = re.compile(r"^makeinstall_target\(\)\s*\{\n(.*?)^\}", re.M | re.S) +_COPY_RE = re.compile(r"\bcp\s+(.*?)\s+\$\{?INSTALL\}?/usr/lib/libretro(?:/(\S*))?") +_CORE_FILE_RE = re.compile(r"([\w+.-]+)_libretro\.(?:so\b|\{[^}]*\bso\b[^}]*\})") +_TEST_RE = re.compile(r'\[\s*"\$\{(\w+)\}"\s*=\s*"([^"]*)"\s*\]') - A libretro package is the core's name with `-lr` (`beetle-psx-lr`, - `neocd_lr`), spelled with underscores as the buildbot names it. A - standalone package is kept under both spellings, as the platform - scraper keeps it: `vice-sa` is the only name vice-standalone answers - to, `vice` that of the libretro profile. + +def installed_cores(package_mk: str, arch: str, with_32bit: bool) -> list[str]: + """The cores a libretro package installs on a device. + + The name is that of the file makeinstall_target copies to + ${INSTALL}/usr/lib/libretro ($INSTALL in some), renamed when the copy names its target: + beetle-psx-lr copies mednafen_psx_libretro.so as beetle_psx_libretro.so, + vice-lr ten EMUTYPE builds. pcsx_rearmed-lr picks its file by + TARGET_ARCH and adds the 32-bit build when ENABLE_32BIT is on, desmume-lr + copies the 32-bit build on aarch64 (ARCH). A test on another variable, + or a package that installs no core, is an error. """ - names = {re.sub(r"[-_]lr$", "", package).replace("-", "_") for package in libretro} - names.update(standalone_emulators(standalone)) - return sorted(names) + body = _INSTALL_BODY_RE.search(package_mk) + if body is None: + raise RuntimeError("package.mk has no makeinstall_target") + # config/options:36 sets TARGET_ARCH="${ARCH}". + values = {"ARCH": arch, "TARGET_ARCH": arch, "ENABLE_32BIT": "true" if with_32bit else "false"} + + def holds(condition: str) -> bool: + tests = _TEST_RE.findall(condition) + if not tests or re.sub(_TEST_RE, "", condition).strip(" ;&") not in ("", "then"): + raise RuntimeError(f"makeinstall_target tests {condition.strip()!r}") + for variable, value in tests: + if variable not in values: + raise RuntimeError(f"makeinstall_target tests ${{{variable}}}") + if values[variable] != value: + return False + return True + + found: list[str] = [] + stack: list[bool] = [] + in_case = False + for raw in body.group(1).splitlines(): + line = raw.strip() + if re.match(r"case \$\{TARGET_ARCH\} in$", line): + in_case = True + stack.append(False) + continue + if line == "esac": + in_case = False + stack.pop() + continue + if in_case and (arm := re.match(r"([\w|*]+)\)\s*(.*)$", line)): + stack[-1] = arch in arm.group(1).split("|") or arm.group(1) == "*" + line = arm.group(2) + if line.startswith("if "): + stack.append(holds(line[3:])) + continue + if line == "else": + stack[-1] = not stack[-1] + continue + if line == "fi": + stack.pop() + continue + if not all(stack): + continue + for sources, target in _COPY_RE.findall(line): + if named := _CORE_FILE_RE.search(target): + found.append(named.group(1)) + continue + for source in sources.split(): + if not source.startswith("-") and (named := _CORE_FILE_RE.search(source.rsplit("/", 1)[-1])): + found.append(named.group(1)) + if not found: + raise RuntimeError("makeinstall_target installs no libretro core") + return sorted(set(found)) + + +def package_paths(tree: list[str]) -> dict[str, str]: + """package name -> its package.mk, a ROCKNIX project package first. + + The build takes projects/ROCKNIX/packages/<...>/ over + packages/<...>/ when both exist. + """ + found: dict[str, str] = {} + for path in sorted(tree, key=lambda p: not p.startswith("projects/ROCKNIX/")): + if path.endswith("/package.mk"): + found.setdefault(path.rsplit("/", 2)[-2], path) + return found # A package that builds nothing itself and pulls other cores in. idtech-lr @@ -149,13 +224,40 @@ class Scraper(BaseTargetScraper): raise RuntimeError(f"no device in {DEVICES_DIR} at {self.tag}") return sorted(devices) - def fetch_targets(self) -> dict: - self.tag = self.pinned_revision(PLATFORM_NAME) + def _tree(self) -> list[str]: + listing = json.loads(fetch_bytes( + f"https://api.github.com/repos/ROCKNIX/distribution/git/trees/{self.tag}?recursive=1", + headers=github_headers(), + )) + if listing.get("truncated"): + raise RuntimeError(f"ROCKNIX tree at {self.tag} is truncated") + return [entry["path"] for entry in listing.get("tree", [])] + + def device_builds(self, tag: str | None = None) -> dict[str, tuple[str, list[str], list[str]]]: + """{device: (architecture, libretro cores, standalone packages)}. + + Read at `tag`, by default the revision platforms/rocknix.yml was + scraped at: metapackages resolved to the packages they pull in, and + each libretro package to the cores it installs on the device. + """ + self.tag = tag or self.pinned_revision(PLATFORM_NAME) package_mk = self._raw(EMULATORS_MK) if "LIBRETRO_CORES" not in package_mk: raise RuntimeError(f"no LIBRETRO_CORES in {EMULATORS_MK} at {self.tag}") + paths = package_paths(self._tree()) + texts: dict[str, str] = {} - targets: dict[str, dict] = {} + def cores_of(package: str, arch: str, with_32bit: bool) -> list[str]: + if package not in paths: + raise RuntimeError(f"no package.mk for {package} at {self.tag}") + if package not in texts: + texts[package] = self._raw(paths[package]) + try: + return installed_cores(texts[package], arch, with_32bit) + except RuntimeError as e: + raise RuntimeError(f"{paths[package]}: {e}") from e + + builds: dict[str, tuple[str, list[str], list[str]]] = {} for device in self._devices(): options = self._raw(f"{DEVICES_DIR}/{device}/options") arch = "x86_64" if device == "AMD64" else "aarch64" @@ -165,9 +267,19 @@ class Scraper(BaseTargetScraper): if meta in libretro: libretro.remove(meta) libretro += metapackage_cores(self._raw(path), arch) - cores = core_names(libretro, standalone) - targets[device.lower()] = {"architecture": arch, "cores": cores} - print(f" {device.lower()} ({arch}): {len(cores)} cores", file=sys.stderr) + cores = sorted({c for package in libretro for c in cores_of(package, arch, with_32bit)}) + builds[device.lower()] = (arch, cores, standalone) + return builds + + def fetch_targets(self) -> dict: + targets: dict[str, dict] = {} + for device, (arch, libretro, standalone) in self.device_builds().items(): + # A standalone package is kept under both spellings, as the + # platform scraper keeps it: vice-sa is the only name + # vice-standalone answers to, vice that of the libretro profile. + cores = sorted({*libretro, *standalone_emulators(standalone)}) + targets[device] = {"architecture": arch, "cores": cores} + print(f" {device} ({arch}): {len(cores)} cores", file=sys.stderr) return { "platform": PLATFORM_NAME, diff --git a/tests/test_launchers_rocknix.py b/tests/test_launchers_rocknix.py index 26fa9192c..aa721896b 100644 --- a/tests/test_launchers_rocknix.py +++ b/tests/test_launchers_rocknix.py @@ -619,8 +619,10 @@ class PlatformRecords(unittest.TestCase): cls.config = yaml.safe_load((REPO_ROOT / "platforms" / "rocknix.yml").read_text()) def test_every_emulator_is_one_rocknix_packages(self): + # RetroArch itself runs the libretro cores the list names. cores = set(self.config["cores"]) - self.assertEqual(sorted({r["emulator"] for r in self.config["launchers"]} - cores), []) + self.assertEqual(sorted({r["emulator"] for r in self.config["launchers"]} - cores), + ["retroarch"]) def test_every_reference_is_in_the_rocknix_project(self): for record in self.config["launchers"]: diff --git a/tests/test_scraper_contract.py b/tests/test_scraper_contract.py index e4ca795b4..a7555649d 100644 --- a/tests/test_scraper_contract.py +++ b/tests/test_scraper_contract.py @@ -480,7 +480,10 @@ class RocknixRunsItsStandaloneEmulators(unittest.TestCase): root = Path(__file__).resolve().parents[1] platform = yaml.safe_load((root / "platforms" / "rocknix.yml").read_text()) self.assertIn(f"/distribution/{platform['version']}/", platform["source"]) - self.assertIn("retroarch", platform["cores"]) + # RetroArch runs the libretro cores some device image installs, not + # every libretro profile. + self.assertNotIn("retroarch", platform["cores"]) + self.assertIn("beetle_psx", platform["cores"]) registry = yaml.safe_load((root / "platforms" / "_registry.yml").read_text()) self.assertNotIn("cores", registry["platforms"]["rocknix"]) diff --git a/tests/test_target_scrapers.py b/tests/test_target_scrapers.py index 81c389d5d..9d231ade6 100644 --- a/tests/test_target_scrapers.py +++ b/tests/test_target_scrapers.py @@ -393,35 +393,60 @@ class RocknixPerDevice(unittest.TestCase): ) def test_each_device_gets_its_own_cores(self): - from scraper.targets.rocknix_targets_scraper import ( # noqa: PLC0415 - core_names, - parse_device_cores, - ) + from scraper.targets.rocknix_targets_scraper import parse_device_cores # noqa: PLC0415 - h700 = core_names(*parse_device_cores(self.PACKAGE_MK, "H700", "aarch64", True)) - self.assertTrue({"drastic", "gpsp", "duckstation", "beetle_psx", "hatari", - "81", "neocd"} <= set(h700)) - self.assertFalse({"aethersx2", "dolphin"} & set(h700)) - no32 = core_names(*parse_device_cores(self.PACKAGE_MK, "H700", "aarch64", False)) - self.assertNotIn("gpsp", no32) - amd64 = core_names(*parse_device_cores(self.PACKAGE_MK, "AMD64", "x86_64", False)) - self.assertIn("dolphin", amd64) - self.assertNotIn("drastic", amd64) + libretro, standalone = parse_device_cores(self.PACKAGE_MK, "H700", "aarch64", True) + self.assertTrue({"gpsp-lr", "duckstation-lr", "beetle-psx-lr", "81-lr", + "neocd_lr"} <= set(libretro)) + self.assertTrue({"drastic-sa", "hatarisa"} <= set(standalone)) + self.assertFalse({"aethersx2-sa", "dolphin-sa"} & set(standalone)) + libretro, _ = parse_device_cores(self.PACKAGE_MK, "H700", "aarch64", False) + self.assertNotIn("gpsp-lr", libretro) + _, standalone = parse_device_cores(self.PACKAGE_MK, "AMD64", "x86_64", False) + self.assertIn("dolphin-sa", standalone) + self.assertNotIn("drastic-sa", standalone) + + def test_a_package_names_the_cores_it_installs(self): + """vice-lr builds ten EMUTYPEs: read as the package name, vice_x64 + and its siblings reached no ROCKNIX device.""" + from scraper.targets.rocknix_targets_scraper import installed_cores # noqa: PLC0415 + + vice = ("makeinstall_target() {\n mkdir -p ${INSTALL}/usr/lib/libretro\n" + " cp -a built/vice_x128_libretro.so ${INSTALL}/usr/lib/libretro\n" + " cp -a built/vice_x64_libretro.so ${INSTALL}/usr/lib/libretro\n}\n") + self.assertEqual(installed_cores(vice, "aarch64", True), ["vice_x128", "vice_x64"]) + renamed = ("makeinstall_target() {\n" + " cp -a mednafen_psx_libretro.so ${INSTALL}/usr/lib/libretro/beetle_psx_libretro.so\n" + " cp -a fake08_libretro.{so,info} $INSTALL/usr/lib/libretro\n}\n") + self.assertEqual(installed_cores(renamed, "aarch64", True), ["beetle_psx", "fake08"]) + pcsx = ("makeinstall_target() {\n" + " case ${TARGET_ARCH} in\n" + " aarch64|x86_64) cp -a ../pcsx_rearmed_libretro.so ${INSTALL}/usr/lib/libretro ;;\n" + " arm) cp -a ../pcsx_rearmed_libretro.so ${INSTALL}/usr/lib/libretro/pcsx_rearmed32_libretro.so ;;\n" + " esac\n" + ' if [ "${TARGET_ARCH}" = "aarch64" ] && [ "${ENABLE_32BIT}" = "true" ]; then\n' + " cp -a x/usr/lib/libretro/pcsx_rearmed32_libretro.so ${INSTALL}/usr/lib/libretro\n" + " fi\n}\n") + self.assertEqual(installed_cores(pcsx, "aarch64", True), ["pcsx_rearmed", "pcsx_rearmed32"]) + self.assertEqual(installed_cores(pcsx, "aarch64", False), ["pcsx_rearmed"]) + self.assertEqual(installed_cores(pcsx, "x86_64", True), ["pcsx_rearmed"]) + with self.assertRaises(RuntimeError): + installed_cores('makeinstall_target() {\n if [ "${DEVICE}" = "H700" ]; then\n' + " cp a_libretro.so ${INSTALL}/usr/lib/libretro\n fi\n}\n", + "aarch64", True) + with self.assertRaises(RuntimeError): + installed_cores("makeinstall_target() {\n :\n}\n", "aarch64", True) def test_a_standalone_package_keeps_both_spellings(self): """vice-standalone answers to vice-sa only, as scummvm-standalone to scummvm-sa: stripped to vice, every targeted pack left them out while the untargeted one, read from the platform scraper, kept them.""" from scraper.rocknix_scraper import standalone_emulators # noqa: PLC0415 - from scraper.targets.rocknix_targets_scraper import ( # noqa: PLC0415 - core_names, - parse_device_cores, - ) + from scraper.targets.rocknix_targets_scraper import parse_device_cores # noqa: PLC0415 - libretro, standalone = parse_device_cores(self.PACKAGE_MK, "SM8550", "aarch64", False) - names = set(core_names(libretro, standalone)) + _, standalone = parse_device_cores(self.PACKAGE_MK, "SM8550", "aarch64", False) + names = set(standalone_emulators(standalone)) self.assertTrue({"aethersx2-sa", "aethersx2", "dolphin-sa", "dolphin"} <= names) - self.assertTrue(set(standalone_emulators(standalone)) <= names) def test_a_metapackage_names_the_cores_it_installs(self): from scraper.targets.rocknix_targets_scraper import metapackage_cores # noqa: PLC0415