Skip to content

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

Open
@smklein

Description

@smklein

I believe this is the root cause of #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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions