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

Improving platform support for illumos (CI, etc) #6763

Open
hawkw opened this issue Aug 9, 2024 · 2 comments
Open

Improving platform support for illumos (CI, etc) #6763

hawkw opened this issue Aug 9, 2024 · 2 comments
Assignees
Labels
A-ci Area: The continuous integration setup A-tokio Area: The main tokio crate C-feature-request Category: A feature request.

Comments

@hawkw
Copy link
Member

hawkw commented Aug 9, 2024

Is your feature request related to a problem? Please describe.

At @oxidecomputer, we rely on Tokio in many critical components of our product. This software primarily runs on Helios, our illumos-based host operating system. Because Tokio is such a critical dependency for our product, ensuring it works correctly on illumos is very important to us. We know illumos is not as widely used as other operating systems, such as macOS, Linux, or Windows, so we're very willing to take on responsibility for ensuring our critical dependencies work reliably on illumos.

As a motivating example, we recently encountered a major regression in Tokio v1.39.x resulting in missed wakeups on illumos, oxidecomputer/helios#169. This appears to have been caused by illumos-specific changes in mio v1.x which, as far as we know, were never actually tested on illumos --- which isn't particularly surprising, as none of the CI systems currently used by Tokio and mio provide builds for illumos or other Solaris-derived operating systems, and there don't appear to be many other easily available options for illumos CI.

Describe the solution you'd like

We'd really like to provide an illumos CI build for Tokio, and potentially other tokio-rs projects. We've written our own CI system, oxidecomputer/buildomat, which can run illumos builds. We've previously contributed buildomat CI jobs for other external dependencies (see https://github.com/arekinath/pivy/tree/dc503bdfb08aad3c37144fc03f1cd37df0eb204d/.github/buildomat), which run on hardware owned by Oxide.

Ideally, we could provide illumos CI jobs for both the tokio and mio repositories, but we're happy to start with Tokio, as any mio bugs would be caught by Tokio's CI, just with a somewhat longer time to detection.

Additionally, we'd like to take on more responsibility for reviewing and maintaining illumos-specific code in any tokio-rs projects that have illumos-specific code. The tokio-rs/illumos GitHub team already includes two of the illumos maintainers working at Oxide (@pfmooney and @jclulow), and it could be worth considering adding adding CODEOWNERS files to automatically tag them as reviewers to files that contain illumos-specific code. If more maintainers would be helpful, there are other illumos maintainers who could also join that team. We'd also be happy to be tagged in any time an illumos-specific build failure occurs.

Additional context

Tokio already has CI jobs for platforms not supported by GitHub Actions, such as FreeBSD builds using Cirrus CI and Linux ARM builds using CircleCI.

@hawkw hawkw added A-tokio Area: The main tokio crate C-feature-request Category: A feature request. labels Aug 9, 2024
@hawkw hawkw self-assigned this Aug 9, 2024
@Darksonn Darksonn added the A-ci Area: The continuous integration setup label Aug 9, 2024
@Darksonn
Copy link
Contributor

Darksonn commented Aug 9, 2024

I would be happy to see CI running for Illumos. Since this will end up using a new service for running the CI jobs, please include a readme with information about who to contact in case of problems.

@hawkw
Copy link
Member Author

hawkw commented Aug 9, 2024

I would be happy to see CI running for Illumos. Since this will end up using a new service for running the CI jobs, please include a readme with information about who to contact in case of problems.

We can definitely do that!

hawkw added a commit that referenced this issue Aug 12, 2024
## Motivation

As described in #6763, Tokio compiles for the [illumos] operating
system, but we don't presently have automated tests on illumos. We would
like to add illumos CI jobs for Tokio using [Buildomat], a CI system
which supports illumos. Buildomat CI jobs for Tokio will run on
infrastructure contributed by Oxide Computer Company.

In order for Buildomat to watch for commits to the repo, we must first
add a configuration file in `.github/buildomat/config.toml` with the
`enable = true` key. This config file must be present on the repo's main
branch for Buildomat to enable builds for the repo. See [here] for
details.

## Solution

This branch adds a `.github/buildomat` directory containing a config
file and a README summarizing what the configs in that directory are
for, as well as documenting how to get help diagnosing illumos CI
failures.


This branch does *not* add scripts for actually running CI jobs on
Buildomat. Since the config file must be present on the repo's main
branch before Buildomat runs CI jobs for the repo, I'd like to merge the
config file separately from the actual build scripts. This way, I can
actually have the build jobs run on the PR that adds them, making it
easier to ensure everything is working correctly before merging.

Closes #6766, which is obsoleted by this branch.

[illumos]: https://www.illumos.org/
[Buildomat]: https://github.com/oxidecomputer/
[here]:
    https://github.com/oxidecomputer/buildomat/blob/main/README.md#per-repository-configuration
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ci Area: The continuous integration setup A-tokio Area: The main tokio crate C-feature-request Category: A feature request.
Projects
None yet
Development

No branches or pull requests

2 participants