oxidecomputer / oxidecomputer/helios

`gmake setup` fails due to "unstable features" in pilot

Open
#93 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
481
Forks
21
Avg merge
1d 17h
Merged PRs (30d)
2

Description

The helios repo does not use a rust-toolchain file to specify a rust version to use. As a result, if folks use features that are in newer rust versions then folks who do not actively use rustup / cargo will be broken. This has happened again in pilot:

Jun 20 15:14:00.102 INFO E| Compiling racktest-driver v0.0.0 (/home/rm/src/apob/projects/pilot/racktest/driver)
Jun 20 15:14:00.942 INFO E| error[E0658]: use of unstable library feature 'map_first_last'
Jun 20 15:14:00.942 INFO E| --> racktest/driver/src/runcmd.rs:68:50
Jun 20 15:14:00.942 INFO E| |
Jun 20 15:14:00.942 INFO E| 68 |         while let Some((_, ent)) = i.rc_inflight.pop_first() {
Jun 20 15:14:00.942 INFO E| |                                                  ^^^^^^^^^
Jun 20 15:14:00.942 INFO E| |
Jun 20 15:14:00.942 INFO E| = note: see issue #62924 <https://github.com/rust-lang/rust/issues/62924> for more information
Jun 20 15:14:01.011 INFO E| For more information about this error, try `rustc --explain E0658`.
Jun 20 15:14:01.058 INFO E| error: could not compile `racktest-driver` due to previous error
Jun 20 15:14:01.058 INFO E| warning: build failed, waiting for other jobs to finish...
Error: exec ["cargo", "build", "--locked", "--release"]: failed ExitStatus(unix_wait_status(25856))
gmake: *** [Makefile:42: setup] Error 1

The problem is that I do not regularly run rustup and therefore I'm on 1.65 without a rust-toolchain or other way of enforcing it. I realize that we have chosen not to use the rust-toolchain as part of an effort around reproducibility in other environments (I think?) or to avoid surprise downloads. But I think we need a better way of knowing that this has happened and to send up a heads up that's not surprise you're broken.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with Makefile:42 and the gmake setup path that runs cargo build --locked --release; then inspect racktest/driver/src/runcmd.rs:68 and the reported Rust 1.65 failure. Review the repository's reproducibility constraints before deciding how version incompatibilities should be detected or reported. Done means setup provides an actionable outcome rather than failing unexpectedly on an unsupported compiler.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system, developer-experience
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.