Re: basic GitHub action for building CCL lisp kernel?
"R. Matthew Emerson" <[email protected]> Sat, 12 Aug 2023 22:11:07 -0700
| Newsgroups | gmane.lisp.openmcl.devel |
|---|---|
| Message-ID | <[email protected]> |
> On Aug 10, 2023, at 9:10 PM, R. Matthew Emerson <[email protected]> wrote: > > 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. > > 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. > > Does anyone have experience doing this with GitHub Actions? If so, would you be willing to offer some tips? > > 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. > > 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. I spent some time today on this. First of all, my sample repository that includes a GitHub workflow to build a C program for several operating systems is https://github.com/xrme/actions-test In particular, the workflow yaml file is https://github.com/xrme/actions-test/blob/main/.github/workflows/lisp-kernel.yaml GitHub supports Linux, Mac, and Windows action runners. I think that the only supported architecture on GitHub-hosted runners in x86_64. 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. 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 It seems to me that GitHub actions are a quick win for Linux/x8664 and macOS/x8664. Windows/x8664 and Windows/x8632 look pretty good too; installing the MSYS2 environment seems like it’s easy & reasonable. 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. 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.