illumos/Solaris build automation

Hi, I’m a longtime Syncthing user and saw the announcement that the official build automation for illumos/Solaris amd64 (thank you to whomever had been maintaining that) is going away with the 2.0 release. If I have to automate builds for myself, I might as well help set up any infrastructure the project needs to keep these builds going. Let me know who to get in touch with!

That’d be me, probably. I guess step one would be to see how/if it builds on illumos to begin with.

2 Likes

That took significantly less work than I expected:

[trisk@catbug]% uname -a
SunOS catbug 5.11 omnios-r151054-180b86b9dd i86pc i386 i86pc
[trisk@catbug]% pfexec pkg set-publisher -g https://pkg.omnios.org/r151054/extra extra.omnios
[trisk@catbug]% pfexec pkg install developer/go-124
[trisk@catbug]% git clone git@github.com:syncthing/syncthing.git
[trisk@catbug]% cd syncthing
[trisk@catbug]% PATH="$PATH:/opt/ooce/bin" ./build.sh
[trisk@catbug]% ./bin/syncthing version
syncthing v2.0.0-rc.24 "Hafnium Hornet" (go1.24.4 illumos-amd64) trisk@catbug 2025-08-07 09:47:50 UTC
2 Likes

I was going to create a Solaris 10 branded zone for the Solaris builds, but it looks like Go 1.3+ was never ported to Solaris 10. I haven’t checked what environment the previous Solaris builds came from.

Sweet, that’s step one done. Step two then, how to integrate that into our GitHub Actions workflow so it can run as part of the release build… :thinking:

One alternative could perhaps be to use vmactions with something like (untested):

---
omnios:
  runs-on: ubuntu-latest
  name: Build for OmniOS
  steps:
    - uses: actions/checkout@v4

    - name: Build syncthing in OmniOS VM
      uses: vmactions/omnios-vm@
      with:
        usesh: true
        prepare: |
          pkg set-publisher -g https://pkg.omnios.org/r151054/extra extra.omnios
          pkg install developer/go-124
        run: |
          git clone git@github.com:syncthing/syncthing.git
          cd syncthing

Adding steps to publish et cetera, of course.

1 Like

I use vmactions/omnios-vm to run my unit tests for my rasa/compat package. It works great.

I also use vmactions to run my tests on dragonflybsd, freebsd, netbsd, and openbsd. Let me know if there’s interest in a PR that would allow us to run our tests in these VMs and I’d be happy to submit one.

1 Like

@calmh thoughts on the vmactions solution?

If you want to add a “build packages” step like the others we have in the workflow, and it builds packages, and those work, then I think we can incorporate that.

Quick question: a lot of the jobs in .github/workflows/build-syncthing.yaml explicitly build the 3 targets syncthing stdiscosrv strelaysrv, is that standard for packaged builds?

Those are effectively the three things we build for users, yes.

OK, I’ve submitted a PR. Hopefully I’ve done this correctly, never worked with GitHub’s CI directly before.

2 Likes

@Albert - if you are looking for a beta-tester to check your syncthing v2-builds for illumos/solaris I am happy to assist. I’m running syncthing on five illumos-machines and could spare one as test system.

1 Like

Builds are on Syncthing | Downloads now

3 Likes

I’m using my own instances for illumos tests. If you are able to test on Oracle Solaris, I can try adding that as a build target as well