Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

illumos: add CI using Buildomat #4023

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

sunshowers
Copy link
Contributor

Add continuous integration for the x86_64-unknown-illumos target using the buildomat CI service, and fix up issues such that CI passes.

What is buildomat?

Buildomat is a CI service, similar in spirit to services like GitHub Actions. Buildomat is open source, built and maintained by us at Oxide, and is used by our own CI.

Here's an example run with this PR:

As part of this, at Oxide we're committing to maintaining the buildomat support. This includes:

  • Providing compute resources.
  • Maintaining and fixing issues in a timely manner.

In order to have buildomat CI working, the rust-lang project would need to install the buildomat app (allowlisted to libc if desired).

Why another CI system?

The main alternative to buildomat would be something like vmactions.

While vmactions provides an OmniOS build, OmniOS is actually a downstream distribution of illumos that includes several APIs not present in illumos. For example, OmniOS has an inotify implementation but upstream illumos doesn't. It would be easy to accidentally add inotify APIs to libc even though that wouldn't build on other illumos distributions.

More importantly, at Oxide we don't feel confident providing support for a third-party service. We'd like to not just throw CI support over the wall but instead are committed to the long-term health of Rust on illumos. Since we use Buildomat ourselves, we're strongly incentivized to maintain it in a way that wouldn't be true for other solutions.

@rustbot
Copy link
Collaborator

rustbot commented Nov 11, 2024

r? @tgross35

rustbot has assigned @tgross35.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot
Copy link
Collaborator

rustbot commented Nov 11, 2024

Some changes occurred in solarish module

cc @jclulow, @pfmooney

Add continuous integration for the x86_64-unknown-illumos target using
the [buildomat] CI service, and fix up issues such that CI passes.

## What is buildomat?

Buildomat is a CI service, similar in spirit to services like GitHub Actions.
Buildomat is open source, built and maintained by us at Oxide, and is used by
our own CI.

Here's an example run with this PR:

* [GitHub](https://github.com/sunshowers/libc/runs/32829121549)
* [Buildomat](https://buildomat.eng.oxide.computer/wg/0/details/01JCEH2XM6JWQMFZRWP20XM7D8/NBYYTAsj3lylUuK0VrofLaby5WaNremha5hZrvuWRjw7fYqY/01JCEH37JR7KQXJZMVFX1E6KN1)

As part of this, at Oxide we're committing to maintaining the buildomat
support. This includes:

* Providing compute resources.
* Maintaining and fixing issues in a timely manner.

In order to have buildomat CI working, the rust-lang project would need to
[install the buildomat app] (allowlisted to libc if desired).

## Why another CI system?

The main alternative to buildomat would be something like [vmactions].

While vmactions provides an OmniOS build, OmniOS is actually a downstream
distribution of illumos that includes several APIs not present in illumos. For
example, OmniOS has an [inotify implementation] but upstream illumos doesn't.
It would be easy to accidentally add inotify APIs to libc even though that
wouldn't build on other illumos distributions.

More importantly, at Oxide we don't feel confident providing support for a
third-party service. We'd like to not just throw CI support over the wall but
instead are committed to the long-term health of Rust on illumos. Since we use
Buildomat ourselves, we're strongly incentivized to maintain it in a way that
wouldn't be true for other solutions.

[Buildomat]: https://github.com/oxidecomputer/buildomat
[install the buildomat app]: https://github.com/apps/buildomat
[vmactions]: https://github.com/vmactions
[inotify implementation]: https://man.omnios.org/7/inotify
@tgross35
Copy link
Contributor

Thanks for the PR, I'll ask infra about installing the app.

@jclulow
Copy link
Contributor

jclulow commented Nov 12, 2024

Thanks for the PR, I'll ask infra about installing the app.

Thanks! I'm the lead on buildomat at Oxide, and am happy to join a meeting or a chat thing or answer any questions folks might have!

@tgross35
Copy link
Contributor

I don't expect many concerns but the thread is here https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Buildomat.20app.20for.20.60libc.60.

I guess I have a question though, is there a list of which platforms are supported? I'm wondering if we could use buildomat for more T2 targets that aren't supported by GitHub.

@jclulow
Copy link
Contributor

jclulow commented Nov 12, 2024

I don't expect many concerns but the thread is here https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Buildomat.20app.20for.20.60libc.60.

Awesome. I am not extremely Zulip-literate but I believe I have subscribed to it!

I guess I have a question though, is there a list of which platforms are supported? I'm wondering if we could use buildomat for more T2 targets that aren't supported by GitHub.

As a niche OS person I am always happy to help out where I can! The software is all Rust, at least, so if it's a platform that supports Rust already it's probably going to be pretty easy to get something going. What sort of platforms are you considering?

@tgross35 tgross35 added stable-nominated This PR should be considered for cherry-pick to libc's stable release branch S-waiting-on-decision and removed S-waiting-on-review labels Nov 13, 2024
@bors
Copy link
Contributor

bors commented Nov 16, 2024

☔ The latest upstream changes (presumably #4042) made this pull request unmergeable. Please resolve the merge conflicts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-decision stable-nominated This PR should be considered for cherry-pick to libc's stable release branch
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants