Skip to content

A missing cargo oxide points the reader at a crates.io package that does not exist #37

Description

@vyncint

Reproduce, on a machine without cuda-oxide

$ launchbound stage reduce-flip --cc 8.6 --out /tmp/st
prune (cc 8.6) ...
  3 admitted, 8 refused; compiling admitted specializations ...
error: compile failed: cargo oxide inspect reduce_flip failed (exit Some(101)):
error: no such command: `oxide`

help: view all installed commands with `cargo --list`
help: find a package to install `oxide` with `cargo search cargo-oxide`

The suggestion goes nowhere

That help is cargo's, relayed verbatim. cargo-oxide is not on crates.io
checked. cuda-oxide is a pinned git checkout (50d07314, per
.github/workflows/prune.yml), and its cargo subcommand comes from there, not
from a registry.

So the one actionable-looking line in the message sends the reader to a package
that does not exist, and launchbound — which knows the pin, has it in two
workflows and names the sibling-checkout layout in its own CI — says nothing.

Nor do the docs: cargo oxide appears only in docs/ARCHITECTURE.md (in a
table describing an internal crate) and in docs/research-baseline.md (inside
recorded shell transcripts). Nothing tells a reader how to get it.

This is the first wall on stage and on tune --backend cuda, which is the
tool's main path.

Two smaller things in the same message

  • exit Some(101)output.status.code() is an Option<i32> printed with
    {:?}. compile.rs:130.

  • stderr.lines().rev().take(8)compile.rs:127 — the last eight lines.
    This is the pattern #19
    removed from launchbound-prune for exactly the reason it is wrong here:
    a failing compiler prints its errors and then a summary, so the tail is
    error: could not compile … due to N previous errors and the N errors are
    above the cut. It happened to be harmless in the transcript above only
    because that failure was four lines long. launchbound-prune::diagnosis()
    is the fix already written and next door.

    (Reasoned from the code, not reproduced — reproducing it needs a cuda-oxide
    checkout, which is the thing this issue is about.)

Fix

Recognise the missing subcommand and answer it:

error: `cargo oxide` is not installed — the gate can compile nothing without it

  cuda-oxide is pinned to 50d07314 and is not published to crates.io. Check it
  out beside this repository, as CI does, and install its cargo subcommand:

    git clone https://github.com/NVlabs/cuda-oxide ../cuda-oxide
    git -C ../cuda-oxide checkout 50d07314
    cargo install --path ../cuda-oxide/crates/cargo-oxide

  `launchbound prune` needs none of this — it is the whole pipeline a laptop
  can run.

That last line is worth saying: a reader blocked here can still do the part
that finds the bugs.

Pin the message to the pin, so a bump moves it — prune.yml and action.yml
already carry the SHA and drift is the failure mode this repository keeps
hitting.

Done when

A missing cargo oxide is diagnosed by name with a route that works, no
message contains Some(…), and the compile failure reports the compiler's
errors rather than its summary.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions