oxidecomputer / oxidecomputer/omicron

Crucible dependencies on oximeter-producer doubling build times for several packages

Open
#1,537 3 comments 0 reactions 1 assignee View on GitHub

@leftwo is already working on this.

Since Aug 5, 2022.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

I believe this is the root cause of https://github.com/oxidecomputer/omicron/issues/1481 , but the issue also impacts build times. Filed as a separate issue to track reduction of duplicate dependencies in addition to the build flake.

The following command:

RUSTDOCFLAGS="-Dwarnings" cargo doc --workspace

Returns the following output:

warning: output filename collision.
The lib target `nexus-client` in package `nexus-client v0.1.0 (https://github.com/oxidecomputer/omicron?branch=main#c458fddc)` has the same output filename as the lib target `nexus-client` in package `nexus-client v0.1.0 (/home/smklein/repos/oxide/omicron/nexus-client)`.
Colliding filename is: /home/smklein/repos/oxide/omicron/target/doc/nexus_client/index.html                          
The targets should have unique names.                     
This is a known bug where multiple crates with the same name use                                                     
the same path; see <https://github.com/rust-lang/cargo/issues/6313>.                                                   
warning: output filename collision.                                                                                  
The lib target `omicron-common` in package `omicron-common v0.1.0 (https://github.com/oxidecomputer/omicron?branch=main#c458fddc)` has the same output filename as the lib target `omicron-common` in package `omicron-common v0.1.0 (/home/smklein/repos/oxide/omicron/common)`.
Colliding filename is: /home/smklein/repos/oxide/omicron/target/doc/omicron_common/index.html                          
The targets should have unique names.                                                                                
This is a known bug where multiple crates with the same name use                                                     
the same path; see <https://github.com/rust-lang/cargo/issues/6313>.                                                   
warning: output filename collision.                                                                                  
The lib target `oximeter` in package `oximeter v0.1.0 (https://github.com/oxidecomputer/omicron?branch=main#c458fddc)` has the same output filename as the lib target `oximeter` in package `oximeter v0.1.0 (/home/smklein/repos/oxide/omicron/oximeter/oximeter)`.
Colliding filename is: /home/smklein/repos/oxide/omicron/target/doc/oximeter/index.html                              
The targets should have unique names.                                                                                
This is a known bug where multiple crates with the same name use                                                       
the same path; see <https://github.com/rust-lang/cargo/issues/6313>.                                                 
warning: output filename collision.                                                                                  
The bin target `oximeter` in package `oximeter-collector v0.1.0 (/home/smklein/repos/oxide/omicron/oximeter/collector)` has the same output filename as the lib target `oximeter` in package `oximeter v0.1.0 (https://github.com/oxidecomputer/omicron?branch=main#c458fddc)`.
Colliding filename is: /home/smklein/repos/oxide/omicron/target/doc/oximeter/index.html                              
The targets should have unique names.
This is a known bug where multiple crates with the same name use                                                     
the same path; see <https://github.com/rust-lang/cargo/issues/6313>.                                                 
warning: output filename collision.
The lib target `oximeter-producer` in package `oximeter-producer v0.1.0 (https://github.com/oxidecomputer/omicron?branch=main#c458fddc)` has the same output filename as the lib target `oximeter-producer` in package `oximeter-producer v0.1.0 (/home/smklein/repos/oxide/omicron/oximeter/producer)`.
Colliding filename is: /home/smklein/repos/oxide/omicron/target/doc/oximeter_producer/index.html                     
The targets should have unique names.                                                                                  
This is a known bug where multiple crates with the same name use                                                       
the same path; see <https://github.com/rust-lang/cargo/issues/6313>.   

Inspecting the Cargo.lock file, we can see this is a valid complaint, tracing back to oximeter-producer.

In Cargo.lock, there are two [[package]]s for oximeter-producer:

  • One is pulled directly from the current tree, as 0.1.0. This is used by most of Omicron.
  • Another is pinned to the main branch. This appears to be used by crucible, which itself is used by propolis-client and the simulated sled agent.

The other mentioned targets also have duplicate [[package]]s, but I think that's because they're dependencies of oximeter-producer.

Contributor guide

Open the contributing guide

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.