On Jan 24, 2021, at 17:52, Ruben Di Battista wrote:
> I think that one of the selling points of Macports, at least for me, is
> providing ports for legacy systems. So on the ports I maintain, I try to fix
> build issues on old systems. The problem is that it’s very difficult to do it
> since I need to merge blindly something and wait for the buildbots.
>
> Is there a way to use the buildbots as CI for legacy systems? That would
> really help... I could try to hack something out if you are interested,
> provided you can give me a bit of guidance on understanding how they work…
> They look pretty misterious to me. :)
The short answer is no, we cannot "enable" CI for legacy systems. We can "spend
a lot of time reimplementing the CI system on our own infrastructure" but
nobody has done that yet.
Our existing buildbot infrastructure stays running all the time, more or less.
The VMs aren't rebooted except for maintenance reasons. This relies on the fact
that the commits that are built there have already been vetted by MacPorts
developers. There is some degree of assurance that the commits are "good" and
won't trash the system.
There is no such assurance when building code submitted in a pull request,
since anyone with a GitHub account can submit a PR. It could contain "bad" or
even malicious code. This is why our existing CI infrastructure (formerly using
Travis CI and now using Azure Pipelines and GitHub Actions) starts up a clean
VM for each pull request, installs MacPorts and the port's dependencies, tries
to build the port, reports the results, then throws the VM away. These third
party CI systems do not offer older versions of macOS, so to offer that, we
would have to recreate their infrastructure on our own hardware. There has been
talk of doing this, but nothing concrete has emerged.
We also don't have much spare server capacity. With all of the different OS
versions for which we build on the four Xserves that run the buildbot, the SSDs
and RAM are just about full. Running additional VMs on the existing hardware
would also slow down the other VMs since they're all competing for the same
CPUs. We could buy more RAM and bigger SSDs or even additional servers, but
MacPorts doesn't have a revenue stream so the existing buildbot hardware
purchases have been paid for by me, and I don't want to commit to buying
endless additional hardware. However, money is the least of the problem right
now. If we had the software created and all that we needed was money to buy
hardware, I'm sure it could be found.
So with what we have now, it is fine to commit changes to ports that you
*think* will fix a problem, even if you haven't verified the fix because you
don't have access to the particular system where the problem occurs. This is
relevant for Apple Silicon systems as well, since we don't have Apple Silicon
build machines on our CI system yet. And this is what we did years ago before
we had moved to GitHub, before we had pull requests, before we had CI systems.
If you're interested in supporting older systems, you can install older OS
versions on your Mac, either in separate volumes or partitions if your hardware
supports booting to older OS versions, or in virtual machines with VMware
Fusion, Parallels Desktop, or Oracle VirtualBox.