mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 21:43:23 -05:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a80f3ed08 | ||
|
|
55eb953447 |
No files matched your search
@@ -44,18 +44,18 @@ Every release ships `SHA256SUMS.txt` and a detached signature of it, checkable a
|
||||
|
||||
| Platform | Files | Extracted size | Extract to | Download |
|
||||
|----------|------:|---------------:|-----------|----------|
|
||||
| Batocera | 1,839 | 4.0 GB | `/userdata/bios/` | [Download](../../releases/latest) |
|
||||
| BizHawk | 542 | 2.2 GB | `Firmware/` | [Download](../../releases/latest) |
|
||||
| EmuDeck | 624 | 3.2 GB | `~/Emulation/bios/` | [Download](../../releases/latest) |
|
||||
| Lakka | 4,525 | 5.5 GB | `/storage/system/` | [Download](../../releases/latest) |
|
||||
| MiSTer FPGA | 74 | 24 MB | `/media/fat/games/` | [Download](../../releases/latest) |
|
||||
| ROCKNIX | 1,741 | 5.3 GB | `/storage/roms/bios/` | [Download](../../releases/latest) |
|
||||
| Recalbox | 1,330 | 3.6 GB | `/recalbox/share/bios/` | [Download](../../releases/latest) |
|
||||
| RetroArch | 4,525 | 5.5 GB | `system/` | [Download](../../releases/latest) |
|
||||
| RetroBat | 1,466 | 4.4 GB | `bios/` | [Download](../../releases/latest) |
|
||||
| RetroDECK | 3,519 | 6.2 GB | `~/retrodeck/` | [Download](../../releases/latest) |
|
||||
| RetroPie * | 4,525 | 5.5 GB | `~/RetroPie/BIOS/` | [Download](../../releases/latest) |
|
||||
| RomM | 617 | 1.3 GB | `library/bios/` | [Download](../../releases/latest) |
|
||||
| Batocera | 12,810 | 7.5 GB | `/userdata/bios/` | [Download](../../releases/latest) |
|
||||
| BizHawk | 950 | 2.4 GB | `Firmware/` | [Download](../../releases/latest) |
|
||||
| EmuDeck | 620 | 3.2 GB | `~/Emulation/bios/` | [Download](../../releases/latest) |
|
||||
| Lakka | 8,504 | 6.0 GB | `/storage/system/` | [Download](../../releases/latest) |
|
||||
| MiSTer FPGA | 83 | 29 MB | `/media/fat/games/` | [Download](../../releases/latest) |
|
||||
| ROCKNIX | 5,804 | 6.1 GB | `/storage/roms/bios/` | [Download](../../releases/latest) |
|
||||
| Recalbox | 3,222 | 3.9 GB | `/recalbox/share/bios/` | [Download](../../releases/latest) |
|
||||
| RetroArch | 8,504 | 6.0 GB | `system/` | [Download](../../releases/latest) |
|
||||
| RetroBat | 12,399 | 7.9 GB | `bios/` | [Download](../../releases/latest) |
|
||||
| RetroDECK | 7,793 | 8.0 GB | `~/retrodeck/` | [Download](../../releases/latest) |
|
||||
| RetroPie * | 12,533 | 8.1 GB | `~/RetroPie/BIOS/` | [Download](../../releases/latest) |
|
||||
| RomM | 1,087 | 1.5 GB | `library/bios/` | [Download](../../releases/latest) |
|
||||
|
||||
The RetroDECK pack already carries its own `bios/` folder, so it extracts into `~/retrodeck/` rather than into the BIOS folder.
|
||||
|
||||
@@ -180,4 +180,4 @@ The scripts and tooling are released under the [MIT License](LICENSE).
|
||||
The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed.
|
||||
The reasoning, and where it is weakest, is in the [FAQ](https://abdess.github.io/retrobios/wiki/faq/#is-this-legal).
|
||||
|
||||
*Auto-generated on 2026-10-09T21:03:52Z*
|
||||
*Auto-generated on 2026-10-09T23:59:06Z*
|
||||
+8
-1
@@ -97,4 +97,11 @@ if [ -z "$PYTHON" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
"$PYTHON" "$INSTALLER" "$@"
|
||||
# Piped from curl, standard input is this script, not the terminal: the
|
||||
# installer would skip every question it can ask. Hand it the terminal when
|
||||
# there is one.
|
||||
if [ ! -t 0 ] && (: </dev/tty) 2>/dev/null; then
|
||||
"$PYTHON" "$INSTALLER" "$@" </dev/tty
|
||||
else
|
||||
"$PYTHON" "$INSTALLER" "$@"
|
||||
fi
|
||||
+1
-1
@@ -19,7 +19,7 @@
|
||||
"total_files": 5861,
|
||||
"total_size": 6398490526,
|
||||
"pack_files": 8504,
|
||||
"pack_size": 6439023690,
|
||||
"pack_size": 6439023053,
|
||||
"total_omitted": 0,
|
||||
"omitted_files": [],
|
||||
"files": [
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
"total_files": 5861,
|
||||
"total_size": 6398490526,
|
||||
"pack_files": 8504,
|
||||
"pack_size": 6439023690,
|
||||
"pack_size": 6439023053,
|
||||
"total_omitted": 0,
|
||||
"omitted_files": [],
|
||||
"files": [
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
"total_files": 9890,
|
||||
"total_size": 8732256943,
|
||||
"pack_files": 12533,
|
||||
"pack_size": 8772790107,
|
||||
"pack_size": 8772789470,
|
||||
"total_omitted": 8,
|
||||
"omitted_files": [
|
||||
{
|
||||
|
||||
+62
-59
@@ -1,100 +1,103 @@
|
||||
{
|
||||
"tag": "v2026.09.04",
|
||||
"tag": "v2026.10.10",
|
||||
"packs": {
|
||||
"Batocera_43.1_BIOS_Pack.zip": {
|
||||
"files": 1839,
|
||||
"extracted_size": 4320230269,
|
||||
"download_size": 2557851727,
|
||||
"files": 12810,
|
||||
"extracted_size": 8062660183,
|
||||
"download_size": 5570768859,
|
||||
"assets": [
|
||||
"Batocera_43.1_BIOS_Pack.zip.001",
|
||||
"Batocera_43.1_BIOS_Pack.zip.002"
|
||||
"Batocera_43.1_BIOS_Pack.part1of3.zip",
|
||||
"Batocera_43.1_BIOS_Pack.part2of3.zip",
|
||||
"Batocera_43.1_BIOS_Pack.part3of3.zip"
|
||||
]
|
||||
},
|
||||
"BizHawk_2.11.1_BIOS_Pack.zip": {
|
||||
"files": 542,
|
||||
"extracted_size": 2332771486,
|
||||
"download_size": 1223296442,
|
||||
"files": 950,
|
||||
"extracted_size": 2585360680,
|
||||
"download_size": 1469752558,
|
||||
"assets": [
|
||||
"BizHawk_2.11.1_BIOS_Pack.zip"
|
||||
]
|
||||
},
|
||||
"EmuDeck_2.3.8_BIOS_Pack.zip": {
|
||||
"files": 624,
|
||||
"extracted_size": 3398423896,
|
||||
"download_size": 1889509442,
|
||||
"EmuDeck_2.7EA_BIOS_Pack.zip": {
|
||||
"files": 620,
|
||||
"extracted_size": 3473777719,
|
||||
"download_size": 1939696164,
|
||||
"assets": [
|
||||
"EmuDeck_2.3.8_BIOS_Pack.zip"
|
||||
"EmuDeck_2.7EA_BIOS_Pack.zip"
|
||||
]
|
||||
},
|
||||
"MiSTer_FPGA_2026-08-29_BIOS_Pack.zip": {
|
||||
"files": 74,
|
||||
"extracted_size": 25209623,
|
||||
"download_size": 16769418,
|
||||
"MiSTer_FPGA_2026-09-29_BIOS_Pack.zip": {
|
||||
"files": 83,
|
||||
"extracted_size": 29989684,
|
||||
"download_size": 18787872,
|
||||
"assets": [
|
||||
"MiSTer_FPGA_2026-08-29_BIOS_Pack.zip"
|
||||
"MiSTer_FPGA_2026-09-29_BIOS_Pack.zip"
|
||||
]
|
||||
},
|
||||
"ROCKNIX_20260901_BIOS_Pack.zip": {
|
||||
"files": 1741,
|
||||
"extracted_size": 5715015067,
|
||||
"download_size": 3337595108,
|
||||
"ROCKNIX_20261001_BIOS_Pack.zip": {
|
||||
"files": 5804,
|
||||
"extracted_size": 6538611412,
|
||||
"download_size": 4022886600,
|
||||
"assets": [
|
||||
"ROCKNIX_20260901_BIOS_Pack.zip.001",
|
||||
"ROCKNIX_20260901_BIOS_Pack.zip.002"
|
||||
"ROCKNIX_20261001_BIOS_Pack.part1of2.zip",
|
||||
"ROCKNIX_20261001_BIOS_Pack.part2of2.zip"
|
||||
]
|
||||
},
|
||||
"Recalbox_10.0.8_BIOS_Pack.zip": {
|
||||
"files": 1330,
|
||||
"extracted_size": 3883703707,
|
||||
"download_size": 2096847659,
|
||||
"Recalbox_10.1.1_BIOS_Pack.zip": {
|
||||
"files": 3222,
|
||||
"extracted_size": 4173452215,
|
||||
"download_size": 2367991387,
|
||||
"assets": [
|
||||
"Recalbox_10.0.8_BIOS_Pack.zip.001",
|
||||
"Recalbox_10.0.8_BIOS_Pack.zip.002"
|
||||
"Recalbox_10.1.1_BIOS_Pack.part1of2.zip",
|
||||
"Recalbox_10.1.1_BIOS_Pack.part2of2.zip"
|
||||
]
|
||||
},
|
||||
"RetroArch_Lakka_v1.22.2_BIOS_Pack.zip": {
|
||||
"files": 4525,
|
||||
"extracted_size": 5882727352,
|
||||
"download_size": 3349430771,
|
||||
"files": 8504,
|
||||
"extracted_size": 6407344187,
|
||||
"download_size": 3853113197,
|
||||
"assets": [
|
||||
"RetroArch_Lakka_v1.22.2_BIOS_Pack.zip.001",
|
||||
"RetroArch_Lakka_v1.22.2_BIOS_Pack.zip.002"
|
||||
"RetroArch_Lakka_v1.22.2_BIOS_Pack.part1of2.zip",
|
||||
"RetroArch_Lakka_v1.22.2_BIOS_Pack.part2of2.zip"
|
||||
]
|
||||
},
|
||||
"RetroBat_8.2.1_BIOS_Pack.zip": {
|
||||
"files": 1466,
|
||||
"extracted_size": 4724194892,
|
||||
"download_size": 3105818817,
|
||||
"files": 12399,
|
||||
"extracted_size": 8493976396,
|
||||
"download_size": 6134642511,
|
||||
"assets": [
|
||||
"RetroBat_8.2.1_BIOS_Pack.zip.001",
|
||||
"RetroBat_8.2.1_BIOS_Pack.zip.002"
|
||||
"RetroBat_8.2.1_BIOS_Pack.part1of3.zip",
|
||||
"RetroBat_8.2.1_BIOS_Pack.part2of3.zip",
|
||||
"RetroBat_8.2.1_BIOS_Pack.part3of3.zip"
|
||||
]
|
||||
},
|
||||
"RetroDECK_0.10.9b_BIOS_Pack.zip": {
|
||||
"files": 3519,
|
||||
"extracted_size": 6627934502,
|
||||
"download_size": 4132852872,
|
||||
"RetroDECK_0.10.10b_BIOS_Pack.zip": {
|
||||
"files": 7793,
|
||||
"extracted_size": 8590201314,
|
||||
"download_size": 5469112852,
|
||||
"assets": [
|
||||
"RetroDECK_0.10.9b_BIOS_Pack.zip.001",
|
||||
"RetroDECK_0.10.9b_BIOS_Pack.zip.002",
|
||||
"RetroDECK_0.10.9b_BIOS_Pack.zip.003"
|
||||
"RetroDECK_0.10.10b_BIOS_Pack.part1of3.zip",
|
||||
"RetroDECK_0.10.10b_BIOS_Pack.part2of3.zip",
|
||||
"RetroDECK_0.10.10b_BIOS_Pack.part3of3.zip"
|
||||
]
|
||||
},
|
||||
"RetroPie_v1.22.2_BIOS_Pack.zip": {
|
||||
"files": 4525,
|
||||
"extracted_size": 5882738533,
|
||||
"download_size": 3349391169,
|
||||
"RetroPie_4.8.12_BIOS_Pack.zip": {
|
||||
"files": 12533,
|
||||
"extracted_size": 8742145940,
|
||||
"download_size": 5482623403,
|
||||
"assets": [
|
||||
"RetroPie_v1.22.2_BIOS_Pack.zip.001",
|
||||
"RetroPie_v1.22.2_BIOS_Pack.zip.002"
|
||||
"RetroPie_4.8.12_BIOS_Pack.part1of3.zip",
|
||||
"RetroPie_4.8.12_BIOS_Pack.part2of3.zip",
|
||||
"RetroPie_4.8.12_BIOS_Pack.part3of3.zip"
|
||||
]
|
||||
},
|
||||
"RomM_5.2.0_BIOS_Pack.zip": {
|
||||
"files": 617,
|
||||
"extracted_size": 1370456481,
|
||||
"download_size": 765186250,
|
||||
"RomM_5.3.1_BIOS_Pack.zip": {
|
||||
"files": 1087,
|
||||
"extracted_size": 1581830590,
|
||||
"download_size": 973353236,
|
||||
"assets": [
|
||||
"RomM_5.2.0_BIOS_Pack.zip"
|
||||
"RomM_5.3.1_BIOS_Pack.zip"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import importlib.util
|
||||
import io
|
||||
import json
|
||||
import os
|
||||
import shlex
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
@@ -1460,6 +1461,47 @@ class TestAvailablePlatforms(unittest.TestCase):
|
||||
self.assertTrue(marker.is_file(), "piped bootstrap did not download install.py")
|
||||
self.assertIn("retroarch", proc.stdout)
|
||||
|
||||
@unittest.skipUnless(shutil.which("script"), "script(1) provides the terminal")
|
||||
def test_piped_one_liner_hands_the_terminal_to_the_installer(self):
|
||||
"""curl | sh gives the installer the script as stdin, so isatty()
|
||||
was false and every question it asks was skipped on Linux and Mac."""
|
||||
scratch = REPO_ROOT / "tmp" / "tests"
|
||||
scratch.mkdir(parents=True, exist_ok=True)
|
||||
with tempfile.TemporaryDirectory(dir=scratch) as directory:
|
||||
root = Path(directory)
|
||||
probe = root / "probe.py"
|
||||
probe.write_text(
|
||||
"import sys\nprint('installer stdin is a terminal:', sys.stdin.isatty())\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
fake_bin = root / "bin"
|
||||
fake_bin.mkdir()
|
||||
(fake_bin / "curl").write_text(
|
||||
"#!/bin/sh\n"
|
||||
"output=\n"
|
||||
"while [ \"$#\" -gt 0 ]; do\n"
|
||||
" if [ \"$1\" = --output ]; then output=$2; shift 2; else shift; fi\n"
|
||||
"done\n"
|
||||
f"cp -- {shlex.quote(str(probe))} \"$output\"\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
(fake_bin / "curl").chmod(0o755)
|
||||
env = os.environ.copy()
|
||||
env.update(
|
||||
PATH=f"{fake_bin}{os.pathsep}{env['PATH']}",
|
||||
TMPDIR=str(root),
|
||||
RETROBIOS_INSTALL_URL="https://example.invalid/install.py",
|
||||
RETROBIOS_INSTALL_SHA256=hashlib.sha256(probe.read_bytes()).hexdigest(),
|
||||
)
|
||||
piped = f"sh -s < {shlex.quote(str(REPO_ROOT / 'install.sh'))}"
|
||||
proc = subprocess.run(
|
||||
["script", "-qec", piped, "/dev/null"],
|
||||
cwd=root, env=env, capture_output=True, text=True, timeout=30,
|
||||
check=False,
|
||||
)
|
||||
self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr)
|
||||
self.assertIn("installer stdin is a terminal: True", proc.stdout)
|
||||
|
||||
|
||||
class TargetListFailureIsNotAnAnswer(unittest.TestCase):
|
||||
"""A timeout is not 'no targets': it sent users to the full pack."""
|
||||
|
||||
Reference in new issue
Block a user