Multi-distro Build Test#332
Conversation
This is just to make the file read beautifully even when read as text, without rendering the Markdown to HTML or similar.
|
Some thoughts: I love this direction and would like to get this in the project. But I do have a few concerns. I don't want to make Docker a requirement for the build. My biggest is that there are many environment where Docker cannot be run. The second is that I want the compiler to have fine-grained access over what they are building. For example, I haven't really tested it yet, but I've been working towards the ability to compile with or without any of the peripherals. In theory someone would be able to build a version that had no peripherals, including the keyboard and speaker. To that end, I think something like this is better served as a build-time option. May something like |
|
I feel you're saying that devs should have a choice: they can do the whole "build all the platforms and frontends with Docker" thing, or just build locally without even having Docker, albeit limited to building and testing just on their particular platform (but still being able to choose the frontend). If that's what you mean, yes, I totally agree. I would make Another tweak might be to have |
XXX Actually, the --prereq-only has to be split out to a separate "install-deps" file so we don't have to always re-install all deps in the image when we change btools/build. I guess that means extraction of common routines to btools/common.bash to be 'source'd?
e8289a8 to
dbdfd14
Compare
This isn't ready to go in yet, but it does offer a rough idea of where I'm going. Basically:
btools/subdir for build tools../Test --currentbuilds on the platform you're using right now (intobuild/{distro}-{release}-{frontend}), giving you a binary you can just run../Testdoes various builds (debian-13-sdl3 debian-12-sdl2 debian-12-sdl1.2right now, but more will be added) using Docker containers, but with bind mounts so the output is all left underbuild/as above.Where this is getting us is that you can test across lots of different platforms and frontends fairly quickly with one command. The first run can take quite some time, due to building containers that have the dependencies installed, but a no-change re-run for all three builds-above is about 8 seconds on my desktop MiniPC (though one build is still broken). That's not to say that there isn't a lot more I could do to have better caching on the image and container builds.
Note that this can all run fine as a GitHub workflow, too, if the host running it is configured properly. But you don't need to push and wait for the workflow; you can just run this locally in exactly the same way the workflow would run it.