Commit Graph
33 Commits
Author SHA1 Message Date
Abdessamad Derraz 973394717c fix: place core extras by one destination rule
The collector deduplicated a destination already carrying the extras
prefix at prefix/prefix/name while the builder wrote it at prefix/name.
DuckStation's standalone bios/<name> on Recalbox and PCSX2's scan then
held one path under two keys, and --region withdrew only one. The
second pass also no longer claims a path another core's extra holds
for a name only that extra covers.
2026-10-24 02:31:48 +02:00
Abdessamad Derraz 14e3923533 chore: merge the round 4 installer fixes 2026-10-23 22:48:24 +02:00
Abdessamad Derraz 60245d1f1d fix: give the question tests a terminal for output
A question now needs stdout on a terminal as well as stdin. The tests
that answer one give the run that terminal.
2026-10-23 22:45:43 +02:00
Abdessamad Derraz b88f23947a chore: merge main into the round 4 fixes
# Conflicts:
#	wiki/installer.md
2026-10-23 21:37:25 +02:00
Abdessamad Derraz 0ecd830028 fix: keep install tests off the host environment
On a WSL host install.main() reads USERPROFILE, APPDATA and the rest through cmd.exe and sets them in os.environ. Two selection tests left them set, and the detection test, run later in the jsonschema-free suite, found a Scoop folder no registry rule publishes. The selection tests restore os.environ, and the detection test clears the Windows variables it does not set.
2026-10-23 21:03:24 +02:00
Abdessamad Derraz 3203c766fc fix: name a folder or unreadable file in place
A folder or a file the user cannot read at a destination ended --check
and the install on a traceback from the hashing pool. --check now gives
the reason per file, and the install fails that file alone, before any
download for a folder.
2026-10-23 20:37:32 +02:00
Abdessamad Derraz 4b8e2f9de2 fix: check system_titles at the boundary
A list or a number among the titles passed validation and raised later,
in --system matching or the interface.
2026-10-23 20:37:03 +02:00
Abdessamad Derraz 35e7300465 feat: add --declared-only and the events schema
--declared-only keeps the entries the platform's own list declares
(cores: null), each slot settled to the platform's copy with no core
alternative left behind. Install, --check, --dry-run, --events,
--list-systems, --system, --region, --emulator, --target,
--installed-cores, --manifest and --from-pack apply it. --core,
--list-cores, --list-emulators, --list-platforms, --list-targets,
--standalone-copies, --restore and --tui refuse it, and the interface
does not open by itself with it. On Batocera it gives 353 files of
14531, the list batocera-systems checks.

Event decision: no schema bump. A `declared` key on `file` would add a
key to an existing kind, which schema 1 forbids. A new kind, `declared`,
follows `check` with the same counts over the platform's own files and
their dests in file-event order. Readers already skip a kind they do
not know (rbevents.py and the interface reader were checked), so
EVENT_SCHEMA stays 1.

An unknown --system is answered with the systems the list files its
key file under: --platform retroarch --system snk-neogeo now suggests
arcade, which holds neogeo.zip, instead of snk-neogeo-cd. neogeo, mvs
and aes follow the same route. Never taken, only suggested. A system
title the manifest carries (SNK Neo Geo CD) is taken for its id when
no other system shares it and no platform name reads the same.

schemas/install-events.schema.json is written from EVENT_KEYS by
scripts/generate_event_schema.py. validate_schemas.py reports a stale
file, and tests compare it with EVENT_KEYS and validate a real run.
Bootstrap pins recomputed.
2026-10-23 19:07:18 +02:00
Abdessamad Derraz 4a1d875f43 feat: name systems in the install manifests
Each manifest carries system_titles, the name the site prints for every system its files list (Sony PlayStation, not sony-playstation or psx), so the installer can show it. Older installers ignore the field.
2026-10-23 15:55:46 +02:00
Abdessamad Derraz 2670b11c2b fix: count files shared by systems apart
The systems step and --list-systems gave 3do 1704 files, 349 MB, of
which 1689 are MAME hash and plugin files six systems carry. Each line
now shows the system's own files, and the shared ones beside them.
2026-10-23 14:19:18 +02:00
Abdessamad Derraz 83973e1415 fix: point a declined download at the c entry
Saying no to a large download sent a beginner to --help. When the
question about what to install was asked, the line now names the c
entry, and i with its size when installed cores were found.
2026-10-23 14:10:27 +02:00
Abdessamad Derraz ebfa0cbb31 fix: say what minui and file-less cores get
--list-platforms said the MinUI layout was not written yet while
--from-pack and --dest wrote it. On the device the card root is now
found and its version.txt names the file list, and a card without one
gets the --platform and --dest to use. A core with no file of its own
says its files are the platform's, always kept, instead of 0 files.
2026-10-23 14:08:28 +02:00
Abdessamad Derraz e041fac351 feat: suggest systems by short name
--system gba, psx or ps1 was refused with no suggestion on RetroArch.
Short names now suggest the ids they stand for, never taken in their
place, and two aliases of one system name it once. --platform muos and
the other systems --list-platforms names stand for the file list they
get, and the run says which.
2026-10-23 13:55:09 +02:00
Abdessamad Derraz 84646d00a6 fix: read a typed folder and quit with 130
A folder typed in quotes at the BIOS folder question was used with its
quotes, and its missing parents were created without the question
--dest asks. The quotes go, ~ and variables expand on every system, and
a default folder that does not exist is named as such, not as found.
q at a menu now leaves with 130 like Ctrl+C, and Ctrl+C before anything
started no longer offers to carry on.
2026-10-23 13:50:16 +02:00
Abdessamad Derraz fbce2dc59c fix: hold a registered asset in the region fixture
storage: large_file alone no longer counts as held (e65ece74). The fixture now holds jp.bin the way the large-files release does: indexed by the database, listed in .gitignore, absent from the checkout and the cache of this offline run.
2026-10-21 11:55:52 +02:00
Abdessamad Derraz d6a0639330 chore: merge audit fixes (packrules)
# Conflicts:
#	scripts/packextras.py
2026-10-21 11:52:28 +02:00
Abdessamad Derraz cd589b2742 chore: merge audit fixes (mame) 2026-10-21 11:48:30 +02:00
Abdessamad Derraz 56e8cbe046 feat: file mame device sets by their machines
The -listxml names, for every machine, its parent (romof), the devices of its default configuration (device_ref) and the cards its slots offer (slotoption). A machine takes the system of the first set on its romof chain a written entry lists, and passes it to each device it can instantiate. A device set reached from one system gets system:, from several the new per-entry systems:, from none neither, and keeps serving every system of the profile. The gap report, the core extras and slots read the entry's own systems, so generate_pack --system and the installer pick by them.
2026-10-21 11:33:39 +02:00
Abdessamad Derraz ef69687fe1 fix: replay held omissions in install regions
The builder keeps a held regional fallback when the requested file is
missing (since 2026-10-17), and the comment beside the manifest's
omissions still said the opposite. A file the builder holds but the
manifest cannot download sat in omitted_files counted unheld, so the
installer kept a fallback the pack drops. Such an omission now carries
held: true and narrow() counts it held, as the builder does.
2026-10-21 11:18:53 +02:00
Abdessamad Derraz 3fe88332e7 feat: accept platform system names in --system
generate_pack and verify read --system beside --platform through common.resolve_system_arg, built on platform_system_names, the mapping the manifest's system_names comes from. verify --platform --system now reports on the narrowed pack. Unknown names are refused with suggestions before the database is read.
2026-10-21 10:52:40 +02:00
Abdessamad Derraz 5e4d9199c2 feat: accept platform system names in --system
The manifest now carries system_names, each system's native_system names from the platform's own file, and --system, its suggestions and --list-systems read them: --platform batocera --system psx installs sony-playstation.
2026-10-21 09:59:25 +02:00
Abdessamad Derraz 35b4cacb5d chore: merge audit fixes (installer)
# Conflicts:
#	install.ps1
#	install.sh
2026-10-21 06:02:02 +02:00
Abdessamad Derraz 7bcd41e0c4 fix: let taiwan and asia-ntsc answer each other
kronos tags the ST-V BIOS epr-19854.ic8 taiwan, mednafen_stv tags it
asia-ntsc, the SMPC area Mednafen names for Taiwan (ss.cpp:1119,
2363-2364). As siblings under asia they never matched, so a request in
one spelling dropped the file tagged in the other, and --region
taiwan,us dropped the Saturn sega_101.bin. AREA_TERRITORIES relates
each area to the territory it serves, china for asia-pal included, in
region.py and its installer copy.
2026-10-21 05:20:08 +02:00
Abdessamad Derraz c638c12ca8 fix: replay the builder's held and one-file groups
install.region_drops now skips one-file groups (:file:) and lets no
omitted match displace an installable file, as region.resolve_region_drops
does on the builder side. The property test draws both cases and
compares against the builder.
2026-10-21 05:15:56 +02:00
Abdessamad Derraz 6a852737a8 fix: one file under two spellings keeps both cores
BlastEm opens 32X_M_BIOS.bin and PicoDrive 32X_M_BIOS.BIN. On a case-insensitive platform the manifest kept the first and dropped the second core's claim, so an install narrowed to PicoDrive (RetroArch on Switch) lost the 32X BIOS its pack carries. The claim now joins the entry kept.
2026-10-20 11:27:08 +02:00
Abdessamad Derraz 33091dabaf fix: list a platform's files without installing it
--list-systems, --list-cores and --list-targets read the manifest and write nothing, yet with --platform bizhawk they went through the portable-install refusal and stopped asking for --dest. Someone checking BizHawk's firmware before downloading BizHawk got an error. A listing now runs whether the platform is installed or not.
2026-10-20 03:22:05 +02:00
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00
Abdessamad Derraz fe35de9607 fix: name RETROBIOS_REF when a list is too old 2026-10-18 08:25:26 +02:00
Abdessamad Derraz 0bac022c2b fix: replay absent core claims when narrowing 2026-10-17 22:21:50 +02:00
Abdessamad Derraz fbe432ccd0 feat: install only what the installed cores read 2026-10-16 05:02:50 +02:00
Abdessamad Derraz 1cedc9930b fix: let search order guard regional files 2026-10-10 10:56:09 +02:00
Abdessamad Derraz 6fca4149f5 feat: offer the files no platform system owns 2026-10-10 04:42:11 +02:00
Abdessamad Derraz ece2c06aaf feat: choose systems, cores and regions to install 2026-10-10 04:31:57 +02:00