libretro / libretro/RetroArch

[ Proposal ] Downloader changes

Open
#11,647 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

core downloader
Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

pinging a couple of stakeholders just for their thoughts: @m4xw @jdgleaver @twinaphex

Description

The downloader is currently very limited. One of the key limitations is a lack of any sort of federation (e.g., downloading cores from other repos), along with not being able to download things to specific locations. (see: https://github.com/libretro/RetroArch/issues/10182 and https://github.com/libretro/RetroArch/issues/11208 among others).

Expected behavior

I propose allowing multiple buildbot URLs to be specified, possibly separated with a pipe in the config, and they would be parsed in order (that is, if someone appended stenzek's hypothetical duckstation repo, it would list their core[s] over ours in the case of conflicts).

The next proposal (doesn't depend on the previous) is to use a standardized layout of directories across supported platforms (could be a problem for some console platforms that are pretty invested in nonstandard paths already ; a related issue for linux is here: https://github.com/libretro/RetroArch/issues/11621 ) and always download things to the top level, so we can include the desired directory structure with the download and everything just goes where it needs to live. For example, a dolphin core download would include a 'cores' directory with the core inside it, an 'info' subdirectory inside that containing the info, and a system/dolphin-emu subdir that contains any legally distributable files. In the case of Flycast, the empty system/dc directory could be provided so users don't need to create it (after looking up what its called). We could also consider including a README in any of these empty directories that lists BIOS files, etc. (yes, I know this is already in the info files, but it's not a very friendly format to parse).

This second proposal could cause problems for people who change the location of directories, though, which includes me (I use a network location for my 'system' dir), so it's not something to change lightly. However, I think it would provide a significant improvement to usability.

Actual behavior

The downloader can only pull from a single server at a time, and users have to move ancillary files around manually.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no source files, tests, or entry points. Start by locating the downloader and its buildbot URL configuration, then review linked issues 10182, 11208, and 11621. Done would require an agreed design and implementation plan for multiple repositories, standardized download layouts, and configurable destination paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.