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

Stabilize -Z avoid-dev-deps as --minimal-cargo-lock #5133

Open
infinity0 opened this issue Mar 6, 2018 · 16 comments
Open

Stabilize -Z avoid-dev-deps as --minimal-cargo-lock #5133

infinity0 opened this issue Mar 6, 2018 · 16 comments
Labels
C-tracking-issue Category: A tracking issue for something unstable. S-needs-design Status: Needs someone to work further on the design for the feature or fix. NOT YET accepted. Z-avoid-dev-deps Nightly: avoid-dev-deps
Projects

Comments

@infinity0
Copy link
Contributor

infinity0 commented Mar 6, 2018

Original issue: #4988
Implementation: #5012
Documentation: https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#avoid-dev-deps
Issues: Z-avoid-dev-deps Nightly: avoid-dev-deps

-Z avoid-dev-deps flag avoids installing dev-dependencies in certain targets like install.

@alexcrichton thinks that "in the long run [this wants] to be something like --minimal-cargo-lock which prunes all non-relevant dependencies like platform-specific dependencies that don't apply, dev-deps if you're not building tests, etc."

@matklad
Copy link
Member

matklad commented Jun 26, 2018

@infinity0

Clarification question: am I correct that cargo install currently avoids dev dependencies even if the flag is not specified? That is, this issue is specifically for cargo build command?

@infinity0
Copy link
Contributor Author

@matklad when I last touched that code, yes. the dev_dependencies_no_check test is for this.

@ignatenkobrain
Copy link
Contributor

@infinity0 do you have some patch for this?

We wanted to not package some optional dependencies and hit this issue.

@ignatenkobrain
Copy link
Contributor

\cc @keszybz

@ignatenkobrain
Copy link
Contributor

and also deps for disabled features, I hope. Right?

@infinity0
Copy link
Contributor Author

@ignatenkobrain Cargo already carries this functionality as cargo build -Z avoid-dev-deps or cargo install (with no extra flags) but only for dev-dependencies, not optional dependencies or unused features or unused target-specific dependencies. No I don't have a patch for the other things I mentioned.

@ignatenkobrain
Copy link
Contributor

@alexcrichton any chance to get someone to work on this? I'm pretty sure that all distributions which decide to package crates will get hit by this.

@phi-gamma
Copy link
Contributor

What needs to be done in order to get his option stabilized?

Cargo pulling in Windows and Redox deps unconditionally is currently
forcing us to patch the Cargo.toml files of numerous crates. It would
remove a lot of friction if this behavior could instead be disabled globally.

@ehuss
Copy link
Contributor

ehuss commented Nov 20, 2019

Sorry, at this time we don't have this particular feature on a path towards stabilization. We recognize that there are circumstances where it solves a problem, but we feel like the design hasn't been completely fleshed out, and nobody on the team has the time right now to shepherd that design.

@dkg
Copy link

dkg commented Nov 27, 2019

fwiw, this looks like it needs to be resolved to fix problems with debian's autopkgtest suite and multiple crates.

@est31
Copy link
Member

est31 commented Feb 24, 2020

I think this is subsumed by #7916

@cuviper
Copy link
Member

cuviper commented Mar 6, 2020

I think this is subsumed by #7916

It doesn't seem so. I tried by running cargo vendor >.cargo/config, then removing some of the dev-deps. I could still build with -Z avoid-dev-deps, but not with -Z features=dev_dep.

cargo 1.43.0-nightly (bda50510d 2020-03-02)

@est31
Copy link
Member

est31 commented Mar 7, 2020

Hmm right good point. I think the difference between the two features is that -Z features=dev_dep still compiles the dev dependencies, just doesn't unify features any more while -Z avoid-dev-deps does not compile them at all

@alekspickle
Copy link

alekspickle commented Jul 20, 2022

Any chance this can take shape any time soon?
It's would greatly help with consolidating async\non-async stuff in domain-oriented crates IMO.

Right now I still have to build all async stuff just for tokio::test 😞

@SpriteOvO
Copy link

SpriteOvO commented Nov 8, 2022

For people who are using stable version numbers to cargo check MSRV (so can't use nightly), there is a dirty hacky workaround.

@SteveLauC
Copy link

For people who are using stable version numbers to cargo check MSRV (so can't use nightly), there is a dirty hacky workaround.

Thank you for this workaround!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-tracking-issue Category: A tracking issue for something unstable. S-needs-design Status: Needs someone to work further on the design for the feature or fix. NOT YET accepted. Z-avoid-dev-deps Nightly: avoid-dev-deps
Projects
Status: Unstable, no backers
Roadmap
  
Unstable, no backers
Development

No branches or pull requests