MockbaTheBorg / RunCPM

RunCPM is a multi-platform, portable, Z80 CP/M 2.2 emulator.
MIT License
412 stars 75 forks source link

verify RunCPM can be built for every push #180

Closed ravn closed 11 months ago

MockbaTheBorg commented 11 months ago

Hi Ravn,

Sorry I do not know GitHub capabilities in depth. Can this operation be done for every port, like Arduino, Teensy, Windows, MacOS, etc? Or is it specific for Linux? If specific for Linux I prefer not to have it. My plan if to have only things that can be done for all platforms. I might even remove Lua support in the future, or make it very optional. As it can't be implemented the same way for microprocessors.

Thanks, Marcelo.

ravn commented 11 months ago

Hi Marcelo.

I just did it for Linux for simplicitys sake. Github actions support natively Linux, Windows and MacOS so at least they can be covered easily. Additional platforms must be done as docker instances but is doable (I have been playing with using RunCPM to create a M80 build like this).

I was thinking that this in time could be used to provide binary releases for those that do not have a full compiler toolchain installed. (There has been at least one recently).

MockbaTheBorg commented 11 months ago

Actually ... I like the idea of having it build for Linux, Windows and Mac. Do you know how to make it for all? I think we should bring it in if we can do for all OSes which require building with a non-arduino based compiler. This could indeed be an option to have people get built versions without having to compile it themselves.

johnsonjh commented 11 months ago

This is a great idea.

While I have zero experience with GitHub Actions, I do a lot of work with GitLab's CI/CD, which includes cross-compiling releases.

For example, we build DPS8M releases for 13 operating systems and 23 different architectures, not including sub-architecture optimized builds, from our CI pipeline. We are also running a huge battery of tests (which takes several hours) on every single commit, and offering those builds as well, assuming everything passes.

For another project, libsir, we're using GitLab for CI/CD, but still primarily hosting development on GitHub.

You do have to make a distinction between just building releases and actually testing them. Testing is a bit more difficult since an environment that can build releases (via cross-compilation, etc.) is easier to achieve and maintain than a full environment capable of executing all the builds, but it can still be done (QEMU, Wine, etc.) if you need to.

Hopefully @ravn can get you going with GitHub Actions for builds, but the real "fun" comes up when you start running actual tests (on every commit). :)

ravn commented 11 months ago

I added builds for Windows and macOS.

They just run make, but it is a start 🙂

ravn commented 11 months ago

You do have to make a distinction between just building releases and actually testing them. Testing is a bit more difficult since an environment that can build releases (via cross-compilation, etc.) is easier to achieve and maintain than a full environment capable of executing all the builds, but it can still be done (QEMU, Wine, etc.) if you need to.

A full test suite would be nice, but would require extra work. I would suggest a low-hanging fruit test suite could be:

I do not know how much can be done on the free plan for Github actions but the above should be doable for pushes to main.

MockbaTheBorg commented 11 months ago

Here we go ... lets start a new challenge.