<div dir="auto"><div>Typically, with github actions building unsupported platforms is done by using qemu...</div><div dir="auto"><br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Sun, Aug 13, 2023, 12:11 AM R. Matthew Emerson <<a href="mailto:rme@acm.org">rme@acm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
> On Aug 10, 2023, at 9:10 PM, R. Matthew Emerson <<a href="mailto:rme@acm.org" target="_blank" rel="noreferrer">rme@acm.org</a>> wrote:<br>
> <br>
> I think it would be useful have some kind of automated system that can compile the CCL lisp kernel (a C and assembly language program) on all of the platforms and report whether that worked.<br>
> <br>
> So, if there are any changes in $repo/lisp-kernel, I’d like to trigger an automated build of all the lisp kernel platforms that I can.<br>
> <br>
> Does anyone have experience doing this with GitHub Actions? If so, would you be willing to offer some tips?<br>
> <br>
> Years ago, I had Buildbot set up and running fairly well, but I don’t want to spend time on that right now, especially if I can leverage GitHub services.<br>
> <br>
> My long-term dream would be to have an automated way to make release binaries. As it stands, I just got through building and packaging the 1.12.2 release for all six platforms by hand. But I’d be happy to start with baby steps.<br>
<br>
I spent some time today on this.<br>
<br>
First of all, my sample repository that includes a GitHub workflow to build a C program for several operating systems is <a href="https://github.com/xrme/actions-test" rel="noreferrer noreferrer" target="_blank">https://github.com/xrme/actions-test</a><br>
<br>
In particular, the workflow yaml file is <a href="https://github.com/xrme/actions-test/blob/main/.github/workflows/lisp-kernel.yaml" rel="noreferrer noreferrer" target="_blank">https://github.com/xrme/actions-test/blob/main/.github/workflows/lisp-kernel.yaml</a><br>
<br>
GitHub supports Linux, Mac, and Windows action runners. I think that the only supported architecture on GitHub-hosted runners in x86_64.<br>
<br>
It’s possible to host one’s own runners, but the runner software doesn’t support all platforms of interest (in particular, FreeBSD and illumos). On the other hand, a self-hosted runner could run on 32-bit ARM or 64-bit ARM.<br>
<br>
<a href="https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#supported-architectures-and-operating-systems-for-self-hosted-runners" rel="noreferrer noreferrer" target="_blank">https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#supported-architectures-and-operating-systems-for-self-hosted-runners</a><br>
<br>
It seems to me that GitHub actions are a quick win for Linux/x8664 and macOS/x8664.<br>
<br>
Windows/x8664 and Windows/x8632 look pretty good too; installing the MSYS2 environment seems like it’s easy & reasonable.<br>
<br>
Linux/x8632 can work, although it’s necessary to "apt install gcc-multilib”. That seems a bit inefficient to do every time, especially on a free service, but maybe it’s not too bad.<br>
<br>
I’d like to have Buildbot running again so that I could cover all the ports, but the GitHub actions could, I hope, be useful as a partial solution.<br>
<br>
</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br></blockquote></div></div></div>