Repository navigation
Research: content that needs a different build per platform #75
Replies: 1 comment
|
I took a look at the real archives of gatOS and purrTTY. What gatOS ships todayThe release
@https://github.com/alex-sherwin as far as i undersand gatOS already decides at run time which QEMU it uses: purrTTY, from the same author, does the same thing already: its one archive carries I first thought about how we handle loaders different per OS but the loader case is differentRFC 0067 lets a The optionsTwo listings ( Option 1 (a per-platform install root in one archive) does not help gatOS. Option 2 (a download per platform in one release) is the only one that saves a download. @https://github.com/alex-sherwin as long as there is only gatOS that needs it would not put the effort to do that yet but i think that it would make sense eventually. If a second case come, handling an My proposal only for the temporary solution: option 3, but with one universal archive instead of two listings. What gatOS needs to be listedNone of this is about platforms, but it is what stops gatOS today:
|
Uh oh!
There was an error while loading. Please reload this page.
Research: content that needs a different build per platform
Raised on Discord on 2026-09-22 by Kiwi Shark, about gatOS: the mod needs a different build depending on the host OS, Windows or Linux. purrTTY has no such problem, so this is about content whose files differ per platform, not about the loader.
What the index has today
compatibility.ossays which platforms a release works on. It filters, it does not select.mod-loader's[provides], so StarMap can say it runsdotnet StarMap.dllon Linux. It says nothing about files that differ.sha256and onesize, which the watcher stamps and clients verify.os; this section has nothing equivalent, and a loader whose layout differs on Linux currently cannot say so."What an author can do today
Two listings on one repository. Ids
gatOSandgatOS-Linux, each with its owncompatibility.os. It works now: when a GitHub release carries several zips, the watcher takes the one named after the listing id, trying<id>.zip,<id>-<tag>.zipand<id>_<tag>.zipwith the leadingvstripped from the tag (tools/hosts.py,GitHubHost._asset). Anything it cannot match it reports instead of guessing.Costs: two ids for one mod, two listing files, two forums links, and every release has to carry both assets or one listing fails to stamp.
One archive with both builds. Nothing in the index changes. Costs: every player downloads both, and it only works when the extra files are harmless or the mod picks at runtime.
Options
1. Per-platform install root inside one archive. The archive carries
windows/andlinux/, and the install descriptor says which one is the install root on which platform. One release, one hash, one download, one listing. This is RFC 0035's question 5, and it is the smallest change: the watcher stamps what it already stamps, and only a manager's install step learns something new. Cost to the player: they download the other platform's files too.2. Per-platform downloads inside one release. The release file carries a download per platform, each with its own url, hash and size. Players download only what they need. This is the largest change: it touches what a release is, so the watcher, the release checks, the snapshot and every client change with it. It also raises questions this discussion should not answer yet: is it still one release when two archives are stamped, what happens when a platform's asset is missing from one release, and how does a download count add up.
3. Leave it as it is and document the two-listing pattern as the supported answer.
What would help
Option 1 looks like the cheapest thing that solves the actual case, and it closes an open question RFC 0035 already carries. Option 2 is worth it only if downloading the other platform's files is really a problem, which is a question about sizes rather than about the format.
All reactions